in reply to Thoughts from a newbie

Predeclaring arrays isn't generally necessary -- there's a bit of a performance benefit as dynamic memory allocation isn't necessary, but Perl handles that sanely anyway.

Caveats aside, save a few characters: my @x = ( 0 ) x 25;

This construct could also be more concise:

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 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.)

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!

Replies are listed 'Best First'.
RE: RE: Thoughts from a newbie
by moen (Hermit) on Oct 05, 2000 at 13:19 UTC
    Shouldn't that be
    my @x = (0) x 25;
    Else they all end up in the first element of the array :)