sub getArrayIndex { my $value = shift; for my $index(0..$#_) { return $index if $value eq $_[$index]; } return -1; } #### for ($i=0,$i<$x,$i++) #### # to just iterate over an array; each element assigned to $_ # changing $_ changes the original array element for (@array) { # assigning to $_ here will change original array # comparing to $_ of course will not } # to iterate over a range for (0..10) { # $_ will be set to 0 to 10 in sequence } # to iterate over a range with a named op for $i(0..10) { # $i will be set to 0 to 10 in sequence } #### for (0..$#array) { } for (0..@array) { } #### @array = qw(1); print "My array @array\n"; for (0..10) { for (0..@array) {$array[$_]++} } print "My array @array\n"; #### My array 1 My array 12 11 10 9 8 7 6 5 4 3 2 1 #### # really short idiomatic version sub getArrayIndex { map{return --$_ if $_[0] eq $_[$_]}(1..@_-1) and -1 } # test code @array = qw(0 2 4 6 8 10 12); print getArrayIndex(6,@array),"\n"; print getArrayIndex(5,@array),"\n";