[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