in reply to (Ovid - accidental obfuscation?)Re: Perverse Unreadable Code
in thread Perverse Unreadable Code
Re: your code--I think that were I presented with the same
problem I'd probably do it like this:
I don't like temporary variables much, either, but this, to me, seems:my %author; while (<FH>) { next unless /^\d{6}=[^|]+\|/; my($l, $r) = split /=/, $_, 2; $author{$l} = [ split /\|/, $r, 2 ]; }
- more readable
- more efficient, both in terms of memory and "algorithm". Your code loops over the data three times (I think); the above would loop over it only once. Furthermore, your code loads the entire contents of FH into memory at the same time, while the above processes the file line by line.
In terms of efficiency, though, I think the while loop probably beats a grep-map-map operation (read in reverse), unless there are other issues I'm not thinking about.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Re: (Ovid - accidental obfuscation?)Re: Perverse Unreadable Code
by Ovid (Cardinal) on Apr 26, 2001 at 02:15 UTC | |
Re: Re: (Ovid - accidental obfuscation?)Re: Perverse Unreadable Code
by MeowChow (Vicar) on Apr 26, 2001 at 02:47 UTC |
In Section
Perl Monks Discussion