my @x = (1,2,3); my @y = keys %ENV; foo(scalar @x, @x, @y); sub foo{ my $x = shift; my @x = map {shift} ($_[0]..$_[$x-1]); local $, = "\n"; print @_; }