This works as expected: my $reduce = reduce { $a + $b } map $_, (1 .. 10); This doesn't: my $reduce = reduce { [@$a + @$b] } map [$_], (1 .. 10); Adding some debugging prints: my $reduce = reduce { warn "$a -> $b\n"; [@$a + @$b] } map [$_], (1..10); This shows that $a isn't being passed through. It seems that reduce doesn't like the result of the expression being a listref ... Using the perl version (rather than XS) from the module works fine for all versions, btw... TonyThread Next