Just another Perl shrine | |
PerlMonks |
Re^2: Sort never returns data in right orderby afoken (Chancellor) |
on Sep 06, 2017 at 08:16 UTC ( [id://1198752]=note: print w/replies, xml ) | Need Help?? |
Just a few comments on that piece of code:
Misleading comment, misleading variable name. No space is removed from anywhere. It's just attempting to count the number of field separators, and it will probably fail. \s+ looks like you want to match any number of spaces, but that won't happen:
And by the way: The split pattern does not fit the input.
$fields was calculated for a different set of field separators. Additionally, split on ' ' is special cased to emulate awk, see split. This is overly complex. Just split the current line into an array, check if the array has the expexted number of fields (@array==10), and go on from there.
Scope of the variables should be limited to the block following elsif, i.e. my ($Star, $Intf, ...) = split .... Assigning unused fields to write-only variables is not needed, use undef instead: my ($x,undef,$y,undef,$z)=split .... Changing the code to split into an array instead of guessing field separators would require changes here, you would use just a constant index into an array. Readonly and constant could help avoiding magic numbers for the indexes, but on the other hand, you need those field numbers only here.
join is overkill here. Just use string interpolation. That also gets rid of the $Track variable:
You check for errors, but you don't report them. Why? Yes, I see that the heading line will trigger those errors. But why don't you get rid of the header line before working with the input?
That perfectly explains the problem. For every f*ing line. Imagine reading in 10k lines from the wrong file. Seeing the same lame joke 10_000 times is not funny at all. If you find an unrecoverable error, just die, with a reasonable error message! I'm sure I would find more things that I don't like if I would take some time to actually review the code. But to summarize: Alexander
-- Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)
In Section
Seekers of Perl Wisdom
|
|