trochee: (amused)
trochee ([personal profile] trochee) wrote2003-10-23 05:04 pm

perl outrage

non-geeks, avert thine eyes.

I just had to rant somewhere about a very bad paragraph of perl:

opendir (DIR, $dir) || die "cannot open $dir\n";
while ($_ = readdir(DIR))
{
    if(/^foo/){;}       #OK
    else{next;}

   if(/^bar/){next;}   # skip bar data
   print STDERR "$_ ";
   `csh -c "cat $dir/$_/* | $pipethrough >> $dir/temporary"`;
}
`csh -c "cat  $dir/temporary | anonymize > $output"`;
print STDERR "\nDone\n";
closedir(DIR);
`rm $dir/temporary`;
exit;
# more code here...

Augh. I'll rewrite this when I have time.

Bonus question: How many processes are started by the following?

`csh -c "cat  $dir/temporary | anonymize > $output"`;

Here's my rewrite:
opendir (DIR, $dir) or die "cannot open $dir: $!\n";
while ($_ = readdir <DIR>)
{
   next unless /^foo/; # must begin with foo
   next if /^bar/;     # skip beginning with bar

   warn "$_\n";
   `cat $dir/$_/* | $pipethrough >> $dir/temporary`;
}
`anonymize < $dir/temporary > $output`;
warn "\nDone\n";

closedir(DIR) or die "couldn't close directory $dir: $!\n";
unlink($dir/temporary) or warn "couldn't unlink $dir/temporary: $!\n";

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting