in reply to Get Position of Element in an array
Using grep or map to solve this means that you would have to go through the entire length of the array even if the character was at the beginning. Here's a solution that stops as soon as the character is found.
sub foo { my ($aChars, $ch) = @_; my $i=0; for (@$aChars) { return $i if $ch eq $_; $i++; }; } my @aChars =('a','b','c','d'); print "c=", findChar(\@aChars, 'c'), "\n"; # outputs c=2
Or if you have an aversion to subs,
my $k='c'; my $i=0; for (@aChars) { last if $k eq $_; $i++; }; print "$k=$i\n"; #also outputs c=2
Update:Put in mssing final ';' and patched to print position=array index rather than position = ordinal value. (i.e. c=2 instead of c=3).
|
|---|