in reply to Perl File Parsing - My Code Works, but it's Ugly!

Here is some example code that depicts one way you can eliminate the if() statements. Put your regexes into an array, and loop over them all at once per line. The $i variable is simply there to show that all regexes are being searched, and performs no functional use.

#!/usr/bin/perl use warnings; use strict; my @regexes = qw(one two three); my $line = "this is thREE"; my $i = 1; for my $regex (@regexes){ if ($line =~ /$regex/i){ print "$i\n"; } $i++; }

Also, although just preference, I like to write my opens like the following. I feel it's cleaner. Note the use of $! in the die() statement; it explains *why* the file couldn't be opened. Also note the use of 'my'... you should be using this to define each variable. You'll have to do this when you implement use strict; as I stated in an earlier post.

open my $log_report, '>>', $log_file or die "Can't open the file $log_file: $!";

-stevieb

Replies are listed 'Best First'.
Re^2: Perl File Parsing - My Code Works, but it's Ugly!
by Nico (Novice) on May 31, 2015 at 17:41 UTC

    Thank you for the suggestion on how to write my opens. Your way looks MUCH more clean.