Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hi Monks, can u tell me how do i can split the below data in each line and store it in a array.so that later it can be used to excute the SQL query.
SELECT poid_id0 FROM SYSTEM_CHANGES_T WHERE account_obj_id0 = 7636217 +1; SELECT poid_id0 FROM TINDRA_QUEUE_T WHERE account_obj_id0 = 76362171; SELECT poid_id0 FROM TSCID_BILL_SUPPRESS_T WHERE account_obj_id0 = 76 +3621 71; SELECT poid_id0 FROM TSCID_T WHERE account_obj_id0 = 76362171; SELECT poid_id0 FROM WAL_ERROR_T WHERE account_obj_id0 = 76362171; SELECT poid_id0 FROM WAL_PENDING_T WHERE account_obj_id0 = 76362171; SELECT poid_id0 FROM WAL_SIMULATOR_INSTANCE_T WHERE account_obj_id0 = + 763 62171

Replies are listed 'Best First'.
Re: Split command
by Corion (Patriarch) on Jan 19, 2009 at 09:52 UTC

    It's easy to do so using the split function. As you don't tell us where exactly you have problems and as you don't even show us the code you already have written, it's hard to give you more concrete advice.

      Actually i am new to perl programming. so i dont ve idea to use spilt.so i wanna know how can i spilt it.

        What code have you written? What part of the split documentation do you have a problem with? If you're new to programming and not just Perl, it's maybe better to read a book on learning Perl. http://books.perl.org has some information on books for Perl.

Re: Split command
by cdarke (Prior) on Jan 19, 2009 at 10:16 UTC
    As others have said, why do you want to use split? Come to that, why do you want to put the commands into an array? Anyway, here is some basic code structure which might get you going, but you will have to change the connect statement for your database:
    #!/usr/bin/perl use strict; use warnings; use DBI; # You do not say where the data is coming from # See below my @sql_statements = <DATA>; # Read data into an array # Do a prepare statement - this is for mysql: yours will be different my $dbh = DBI->connect('DBI:mysql:database_name', 'user','passwd') || die "No database connection: $DBI::errstr"; # You don't need the array, you can just use <DATA> here instead for my $sql (@sql_statements) { my $sth = $dbh->prepare($sql); $sth->execute() || die "$sql: $DBI::errstr"; while (my $ref = $sth->fetchrow_array()){ # Do some stuff with the retrieved row } $sth->finish(); } $dbh->disconnect(); __DATA__ SELECT poid_id0 FROM SYSTEM_CHANGES_T WHERE account_obj_id0 = 7636217 +1; SELECT poid_id0 FROM TINDRA_QUEUE_T WHERE account_obj_id0 = 76362171; SELECT poid_id0 FROM TSCID_BILL_SUPPRESS_T WHERE account_obj_id0 = 76 +3621 71; SELECT poid_id0 FROM TSCID_T WHERE account_obj_id0 = 76362171; SELECT poid_id0 FROM WAL_ERROR_T WHERE account_obj_id0 = 76362171; SELECT poid_id0 FROM WAL_PENDING_T WHERE account_obj_id0 = 76362171; SELECT poid_id0 FROM WAL_SIMULATOR_INSTANCE_T WHERE account_obj_id0 = +76362171
Re: Split command
by JavaFan (Canon) on Jan 19, 2009 at 09:53 UTC
    Why would you want to split each line? Each line seems like a perfectly valid SQL statement to me.
      yea its exactly correct sqL QUERY.but i have to run this query one after the other so i need to split it.
        I guess your split the below data in each line and store it in a array. doesn't actually mean you want to split the data in each line then?
        Only a guess, but maybe you are using the word "split" in the sense of the UNIX utility program split(1)? If so, that is confusing people because there is a Perl built-in function called split which does a different thing!
Re: Split command
by 1Nf3 (Pilgrim) on Jan 19, 2009 at 10:04 UTC

    Honestly, I have no idea of what you are trying to do...

    Perhaps you could write what SQL query you want to execute? And where does Perl fit into all of this?

    Luke