On Wed, 28 Aug 2002, bobby wrote: > Hi all > > I have a log file which is generated by backup script and i am writing a > perl script to sort the log so as to prepare it to put into mysql > database and iam having a problem in doing that. > > my log file is like this (I have written line numbers for clarity only ) > > 1 INCREMENTAL OF staff ON 2002-08-28 FROM 08/27/02 STARTS AT At > block 315825. > 2 INCREMENTAL OF www.cs ON 2002-08-28 FROM 08/27/02 STARTS AT At > block 102860. > 3 INCREMENTAL OF staff_homepages ON 2002-08-28 FROM 08/27/02 > STARTS AT At block 103142. > 4 INCREMENTAL OF ftp.cs ON 2002-08-28 FROM 08/27/02 STARTS AT At > block 103204 > 5 INCREMENTAL OF local ON 2002-08-28 FROM 08/27/02 STARTS AT At > block 103216. > 6 INCREMENTAL OF Hyper-G ON 2002-08-28 FROM 08/27/02 STARTS AT At > block 103236. > 7 INCREMENTAL OF submissions ON 2002-08-28 FROM 08/27/02 STARTS > AT At block 104278. > 8 INCREMENTAL OF src ON 2002-08-28 FROM 08/27/02 STARTS AT At > block 110373. > 9 INCREMENTAL OF IMAP ON 2002-08-28 FROM 08/27/02 STARTS AT At > block 110455. > > i want a script that can give me output like this > > "2002-08-28","$PROBLEM","staff", "315825" > > $PROBLEM is actually tape number which should be derived from > blocknumbers in the logfile > e.g say the initial TAPE No =1 and the script should check if the block > number is greater than the block number in the next line it should > replace $PROBLEM with TAPE 1 Other wise should do something like > $PROBLEM=$TAPE +1 > > Like in my example > line 1 should give the output as > > "2002-08-28","TAPE 1","staff", "315825" # because 315825 > 102860 > > line 2 should be > > "2002-08-28", "TAPE 2","www.cs", "102860" # tape=$tape +1 is required > because 102860 ! > 103142 > > and the same with other lines .... > > i can do it with awk and bash but as iam learning perl iam trying to > write everything in perl. For all the guru's out there i know its very > simple please help > > > Hmmm i hope i have explained the concept correctly > > Cheers > > Bobby
What have you tried so far? If you can post your code we can help you better. Here is one way to do it. #!/usr/local/bin/perl -w use strict; my $tape_cnt = 1; open (BOBLOG, "bob.log") or die "Cannot open bob.log : $!\n"; $_ = <BOBLOG>; my ($cstr, $cdate, $cblock_no) = (split)[2,4,11]; # perldoc -f split while (<BOBLOG>) { my ($nstr, $ndate, $nblock_no) = (split)[2,4,11]; $tape_cnt++ if ($cblock_no <= $nblock_no); print "$cdate, TAPE $tape_cnt, $cstr, $cblock_no\n"; ($cdate, $cstr, $cblock_no) = ($ndate, $nstr, $nblock_no); } close (BOBLOG); -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]