[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Omaha.pm] Another 30s script
On Nov 17, 2005, at 2:33 PM, Jay Hannah wrote:
Task: Find any lines in a pipe-delimited file where the 3rd column
contains a non-alphanumeric character.
open (IN, "j.unl");
while (<IN>) {
chomp;
@l = split /\|/;
print if ($l[2] =~ /[^a-z0-9]/i);
}
What you're doing is very common, and so Perl has a number of tricks
to handle most of that automatically.
Try this:
perl -n -a -F'\|' -e'print if $F[2] =~ /[^a-z0-9]/' j.unl
This has the benefit of being able to operate on multiple files, not
just the one. The -n says "loop through the input files." The -a
says "automatically split $_, the input line, into @F". The -F says
what to do the split() on. The pipe in the -F parm has to be
backslashed because the -F parm is always a regex.
See http://www.petdance.com/perl/command-line-options.pdf for more.
--
Andy Lester => andy@petdance.com => www.petdance.com => AIM:petdance