http://www.perlmonks.org?node_id=1071012


in reply to Re^7: index of the minimum element of the array
in thread index of the minimum element of the array

map and grep are very different beasts, cause the block is NOT handled like an anonymous sub but more like a do-block.

DB<117> sub tst { map {$_[$_]+1} 0..3 } DB<118> tst 1..10 => (2, 3, 4, 5)

But your code with reduce didn't work for me, it always returned 0 cause thats the smallest index you passed. 1 cause ... ¹

Could you show us an example and tell us which versions you use?

Cheers Rolf

( addicted to the Perl Programming Language)

¹) @_=(BLOCKREF, indices)

DB<148> @a= map { int rand 100 } 1..5 => (32, 4, 90, 79, 70) DB<149> sub minindex { reduce { print "@_\t$a:$_[$a],$b:$_[$b]\n"; $ +_[$a] < $_[$b] ? $a : $b } 0 .. $#_ } DB<150> minindex @a CODE(0xa353ea8) 0 1 2 3 4 0:CODE(0xa353ea8),1:0 CODE(0xa353ea8) 0 1 2 3 4 1:0,2:1 CODE(0xa353ea8) 0 1 2 3 4 1:0,3:2 CODE(0xa353ea8) 0 1 2 3 4 1:0,4:3 => 1