Hallo Alain.
sub max {
my $max = shift(@_);
foreach $foo (@_) {
$max = $foo if $max < $foo;
}
return $max;
}
Ganz einfach, zuerst wird die Variable $max deklariert und ihr der erste der Sub übergebene Parameter zugewiesen. Dann werden alle übergebenen Parameter durchlaufen und mit $max verglichen. Trifft die Bedingung innerhalb der foreach-Schleife zu, wird $max statt des alten der neue Wert zugewiesen. Der Vergleich läuft dann mit dem neuen Wert von $max weiter.
Was bedeutet return $max?
"Gib den Wert von $max nach vollständigem Durchlauf der Sub max() zurück."
Und in diesem sub fall ist $max zweimal definiert,auf welchen $max bezieht sich return $max?
Nein, nicht zweimal definiert, zuerst definiert, dann wird ihr unter einer bestimmten Bedingung ein neuer Wert zugewiesen. Zurückgegeben wird $max mit dem Wert, den es am Ende der Sub haben wird. Das kann, je nach übergebenen Parametern, auch der ursprünglich mit "shift @_" definierte Wert sein.
Freundschaft!
Siechfred
Nichts ist schwerer einzureißen als die Mauer in den Köpfen.