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).
In reply to Re: Get Position of Element in an array
by ELISHEVA
in thread Get Position of Element in an array
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |