On 8/7/07, Chas Owens <[EMAIL PROTECTED]> wrote: > > On 8/7/07, Mihir Kamdar <[EMAIL PROTECTED]> wrote: > > Hi, > > > > I am trying to count the number of lines in my output file processed by > a > > perl code. > > > > I am not getting the syntax correct. I am doing something like below:- > > > > my $count1 = `wc -l < $OUT_FILE` ; > > print $LOG_FILE "Count of cdrs after removing duplicates = $count1" ; > > > > I am getting the following error: > > [EMAIL PROTECTED] files]$ sh: -c: line 0: syntax error near unexpected > token > > `(' > > sh: -c: line 0: `wc -l < GLOB(0x88f76d8)' > > sh: -c: line 0: syntax error near unexpected token `(' > > sh: -c: line 0: `wc -l < GLOB(0x88f76d8)' > > > > > > Plz advice, > > > > Thanks, > > Mihir > > > > That would be because $OUT_FILE is a file handle, not the file's name. > You should also not be using the qx// operator (aka backticks) to do > this, Perl can handle it just fine: > > sub count_words { > my $file = shift; > open my $fh, "<", $file > or die "could not open $file:$!"; > my $lines = 0; > $lines++ while <$fh>; > return $lines; > } > Following is my code:-
#!/usr/bin/perl my $child_path = '/home/user71/RangerDatasource/Customization/TelekomMalaysia/Scripts/Tests/cprogs/files/child' ; my $parent_path = '/home/user71/RangerDatasource/Customization/TelekomMalaysia/Scripts/Tests/cprogs/files' ; my $write_path = '/home/user71/RangerDatasource/Customization/TelekomMalaysia/Scripts/Tests/cprogs/files/output' ; my %times ; my $continue = 1; my $count1 ; $SIG{INT} = $SIG{TERM} = sub { $continue = 0 }; while ($continue) { opendir my $dh, $child_path or die $!; while (my $file = readdir $dh) { my $fname = "$child_path/$file"; next unless -f $fname; unless (exists $times{$file}){ my $line; my %hash; opendir my $dh1,$parent_path or die $!; open (my $IN_FILE,"<","$parent_path/$file") or die $!." Parent file not found for $parent_path/$file"; my $count ; open (my $LOG_FILE,">>","$write_path/logfile2") ; for ($count=0; <$IN_FILE>; $count++) { } print $LOG_FILE "Count of cdrs before removing duplicates = $count" ; while ($line=readline($IN_FILE)) { my @cdr=split (/,/, $line) ; $hash{"@cdr[2,3,6,7]"}=$line; #Add some more cdr key fields if u want. } close $IN_FILE ; closedir $dh1 ; print $LOG_FILE "Count of cdrs before removing duplicates = $count" ; open (my $OUT_FILE,"+>","$write_path/$file.out") or die $!; while (my($key, $value) = each %hash) { print $OUT_FILE $value; } my $lines = 0 ; $lines++ while<$OUT_FILE> ; print $LOG_FILE "Count of cdrs after removing duplicates = $lines" ; close $OUT_FILE; close $LOG_FILE ; } unlink("$parent_path/$file") ; unlink("$child_path/$file") ; } closedir $dh; sleep(2) ; } At last I am trying to get the count of lines of my OUT_FILE. It is giving me the result as 0, which is not true. Where am i doing a mistake? Thanks, Mihir