my @y = map { state $z = 0; $z += $_ } @x; #### >perl -wMstrict -MData::Dump -lE "sub summer { return map { state $z = 0; $z += $_; } @_; } ;; my @w = qw(0 1 3 2); my @x = summer(@w); my @y; @y = map { state $z = 0; $z += $_; } @w for 1 .. 3; my @z = map { state $z = 0; $z += $_; } @w; ;; dd \@w; dd \@x; dd \@y; dd \@z; ;; @x = summer(@w); @y = map { state $z = 0; $z += $_; } @w for 1 .. 3; @z = map { state $z = 0; $z += $_; } @w; ;; print '----------'; dd \@w; dd \@x; dd \@y; dd \@z; ;; print '----------'; dd \@w; " [0, 1, 3, 2] [0, 1, 4, 6] [12, 13, 16, 18] [0, 1, 4, 6] ---------- [0, 1, 3, 2] [6, 7, 10, 12] [12, 13, 16, 18] [0, 1, 4, 6] ---------- [0, 1, 3, 2]