in reply to My code sucks, please help me understand why.
It would help a lot to know how your input data looks like (a few lines of each file would be enough), and if PIDS or FIDS is the larger one.
I guess your logic problem (or one of them, at least) is this line:
if ($fid =~ /$pidCan/) {
Which interprets $pidCan as a regex, not just as a constant string to search for.
You can make that a literal search by writing if ($fid =~ /\Q$pidCan\E/) instead.
And yes, chances are that your program can be made much faster, but for that it would really help to know the structure of your input data.
There are also some stylistic weaknesses in your code - for example it's bad practice to declare all variables up front - that way they can be seen in the whole program. It's easier to avoid errors though if you keep the scope of each variable small. For example $result can and should be declared inside the loop:
foreach $pid (@pids) { my $result; $pid =~ /\|(.*)$/; $result = $1; push (@pidCans, $result); }
Or even better avoided completely:
foreach $pid (@pids) { $pid =~ /\|(.*)$/; push @pidCans, "$1"; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: My code sucks, please help me understand why.
by mirage4d (Novice) on Oct 14, 2009 at 17:39 UTC | |
by moritz (Cardinal) on Oct 14, 2009 at 17:56 UTC | |
by mirage4d (Novice) on Oct 15, 2009 at 15:32 UTC | |
by moritz (Cardinal) on Oct 15, 2009 at 17:09 UTC | |
by ikegami (Patriarch) on Oct 14, 2009 at 17:46 UTC | |
by ikegami (Patriarch) on Oct 14, 2009 at 17:54 UTC |