wie lese ich eigentlich am besten an eine SubRoutine übergebene Parameter in einem eigenen Modul in Perl aus?
Das steht in perldoc perlsub
, Parameter stehen in der Subroutine in @_.
Ich weiß zwar bisher, dass es einerseits über
my value = shift(@_);
oder
my ($value1, $value2, ...) = @_;
geht, ich habe dann aber keine exakte Zuweisung eines Wertes einer bestimmten Variable, wenn ich sie mal nicht in der exakten Reihenfolge übergebe.
Übergebe die Parameter immer in der richtigen Reihenfolge, dann hast du keine Probleme.
Wenn ich nun aber möchte, dass eine bestimmte Variable immer genau den für sie bestimmten Wert zugewiesen bekommt, habe ich demanch also ein Problem.
So wie bei
sub minus { $_[0] - $_[1] }
printf "%d, %d" => minus(10, 5), minus(5, 10)
Tja, das ist Absicht.
Die einzige Lösung, die ich im Moment, ich bin in dem Ganzen nach einem halben Jahr noch nicht so bewandert, nun kenne, ist der Subroutine jeweils einen Paramter auf folgende Art zu übergeben:
&modul::subRoutine(NameDesParameters1=$WertDesParameters1, NameDesParameters2=$WertDesParameters2,...);
Auslesen würde ich dann die Daten innerhalb der SubRoutine mit
foreach $parameter (@_) {
($name, $value) = split('=', $parameter);
$ENV{$name} = $value;
}
Benutze einen Hash:
sub mysub { my %hash = %{shift} }
mysub( { name => 'wert', name2 => 'wert2', ...} )
Ich habe dein Problem aber nicht wirklich verstanden.