use strict; use warnings; my $iter = 3; &foo( $iter ); sub foo { my ( $iter, @val ) = @_; return unless $iter; $iter--; for my $i ( 1 .. 10 ) { print join("+", @val, $i), "\n" if scalar @_ > 1; &foo( $iter, @val, $i ); } }