sub a{ my $x = shift; while(1){ print 'a'; map { print 'b'; last if $_ == $x; $_; } @_; print 'c'; }; } my @data = 0 .. 9; print for a( 5, @data ); __END__ c:\test>junk a b b b b b b 0 ##?? 1 ##?? 2 ##?? 3 ##?? 4 ##?? 5 ##?? 6 ##?? 7 ##?? 8 ##?? 9 ##?? 0 1 2 3 4