[Date Prev][Date Next][Thread Prev][Thread Next] [Search] [Date Index] [Thread Index]

Re: [FWP] Drunk Driving redux (what was he thinking?)




On Mon, 28 Jun 1999, Vicki Brown wrote:

> As should be obvious from some of my other posts, I tend to value Making
> the Goal Clearer to the Reader over speed (at least when the speed issue is
> nearly moot).

Yeah, me too. Whoever wrote the code may not be interested in such things.
Or they may have plugged in a regular expression thing from somebody
else's code, then stuck in an index because they're not thinking in a
Perlish way. I'd go with the latter, judging by the Hungarian naming.

> For those who can't recall the original code:
> 
>   opendir( dirPhdDir, $phdDirPath ) || die "couldn't open directory";
>   while( defined( $szPhdFile = readdir( dirPhdDir ) ) ) {
>     if ( index( $szPhdFile, ".phd." ) >= 0 ) {
>       ( $szRoot = $szPhdFile ) =~ s/\.phd\..*$//;
>       $szRoot =~ s/^.*\///;
>       if ( ! exists $aPhdFiles{ $szRoot } ) {
>         $aPhdFiles{ $szRoot } = "";
>       }
>     }
>   }

Two regular expressions and an index, when he only needs one regexp? Ick.
Here's my try:

  opendir(phddir, $dirpath) || die "couldn't open directory";
  while (my $fname = readdir(phddir)) {
    $fname =~ s|^.*/([^/])\.phd\..*$|$1|g or next;
    $phdfiles{$fname} ||= '';
  }
  closedir(phddir);

Is that better? I write a lot of Embperl-based web pages with forms, so I
absolutely love the ||= operator.


==== Want to unsubscribe from Fun With Perl?
==== Well, if you insist... Send mail with body "unsubscribe" to
==== fwp-request@technofile.org