Hallo!
sub foo {
my $var1 = shift || 'default';
my $var2 = shift || 0;
my $var3 = shift || undef;
# usw. usf.
}
Allerdings ist auch mit dieser Methode nicht wirklich erkennbar, ob nun zwei oder drei Parameter ungeachtet ihrer Werte übergeben wurden. Das geht halt nur über die Abfrage der Länge von @\_.
Grüße, Skrilax