You shouldn't have that inner while. I'd just make it
if ( $line =~ $ip ) { push (@fwlog, $line); print "$line"; }
or equivalent.
You might also try changing that final print to read
print "$_\n" foreach ( @fwlog );
but you should be getting *some* output.
An alternate approach: if the file isn't really large, you could suck it into memory and put the matching lines into an array, á la:
open LOG, "$logfile" or die "Can't open $logfile: $!\n"; my @fwlog = grep { $ip } <LOG>; close LOG;
that grep line will grab just the lines from the file that match. To remove the newlines from those, you can just chomp the whole array.
Finally, note that the "." has special meaning. That regex will match "192a168b3c5", so to make sure you're just getting the IP you're looking for, escape those dots.
HTH!
perl -e 'print "How sweet does a rose smell? "; chomp ($n = <STDIN>); +$rose = "smells sweet to degree $n"; *other_name = *rose; print "$oth +er_name\n"'
In reply to Re: Saving Results of a while loop
by arturo
in thread Saving Results of a while loop
by dru145
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |