my $integer = 5; my @p; part( 2*$integer, $integer, 0); sub part { my ($n, $k, $t) = @_; $p[$t] = $k; print( join " ", @p[1..$t], "\n") if $n == $k; for (my $j = $k<$n-$k ? $k : $n-$k; $j >= 1; $j--) { part( $n-$k, $j, $t+1); } }