use strict; use warnings; use Data::Dumper; my %pot=(); $"=';'; for(@ARGV){if(m#$"#){$".=int rand 10;redo}}# Damit der Inhalt von $" in keinem Element vorkommt sub add { $pot{"@_"}=\@_; for my $n(0..$#_){ my @n=@_; splice @n,$n,1; add(@n) unless exists $pot{"@n"}} } add(@ARGV); $"=', ';# Für die Ausgabe wollen wir das schöner joinen print "P(@ARGV) = {"; my $i=0; for(values %pot){ print ", " unless 0==$i++; print "{@$_}"} print "}\n";