Caveats aside, save a few characters: my @x = ( 0 ) x 25;
This construct could also be more concise:
The defined is in there just in case. (I believe the magic <FH> read does this for you, but I don't have time to look up to make sure assigning to a variable explicitly does.)while(defined(my $line = <FILE>)) { next if ($line =~ /#.*?,/); my @units=split(/,/, $line); for ($i = 0; $i <= 23; $i++) { if ($line =~ /$xcounits[$i]/) { $y[$i]++; $ytot++; $x[$i] += $units[5]; $xtot += $units[5]; } } }
The regex could be less cautious. If you want to skip comments, it's a lot easier just to do next if $line =~ /^#/;.
The loop there makes me wonder if you're better off with a hash. Anytime you find yourself looping through an array, looking for a particular element, you should ask if a hash would be more appropriate.
Looks like your next hurdle is learning some Perl idioms to make your life easier. Don't worry, they make more sense once you use them a few times.
Update: moen is right, so I fixed that little issue. Thanks!
In reply to RE: Thoughts from a newbie
by chromatic
in thread Thoughts from a newbie
by entr00pi
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |