in reply to Returning and passing data to and from subroutines
It would have been helpful to point out that lines 212 and 213 are:
my @data = shift; my $loop_count = 0; while (@data) { $data[$loop_count] =~ m{s/^\s*//}xms;#line 212 $data[$loop_count] =~ m{s/\s*$//}xms;#line 213 $loop_count++; }
So first of all, shift gets _one scalar_ off the arguments. You can't pass arrays around like that in Perl, you pass lists. If you call a sub with an array as the argument, it comes in as a list. If you pass in *two* arrays, they get flattened into a single list of scalar arguments. Secondly, in Perl you can iterate over the elements of an array like so:
so you don't need a loop counter at all. If you *do* need a loop counter (i.e. to synchronize two array walks), you would be better off doing something likeforeach $element (@array) { do_stuff_to($element); }
for $index (0..$#array) { # $#array is the last index of @array do_stuff_to($array[$index]); do_stuff_to($other_array[$index]); };
Also your matches appear to be looking for some strange things. The s/// inside the m//, if it even works at all, is operating on $_, not on $data[$loop_count], I believe, which is unlikely to be what you want. m// should contain a regex, not code. s/// is code.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Returning and passing data to and from subroutines
by vendion (Scribe) on Jul 17, 2010 at 03:30 UTC | |
by ssandv (Hermit) on Jul 19, 2010 at 15:22 UTC | |
by vendion (Scribe) on Jul 21, 2010 at 04:05 UTC | |
by ssandv (Hermit) on Jul 21, 2010 at 15:34 UTC |