Alain: ist "return" bei subs pflicht?

Beitrag lesen

Hallo Siechfred hallo Struppi,
Erstmal dank für eure Geduld ;-)

Kommt auf den Sinn der Operation an. Wenn du 0 und 1 im booleschen Kontext siehst, könnte es so sein. Das soll heißen, wenn das Ergebnis der sub max() wahr oder falsch sein soll, wäre es das Selbe, wenn das Ergebnis jedoch ein Wert sein soll, dann nicht.

ich habe einfach ein problem damit,dass man mit return auf eine variable-namen ziehlt anstatt 1 od. 0 also richtig oder falsch.
Aber langsam komm ich schon drauf.

sub max {
my $max = shift(@_);
foreach $foo (@_) {
$max = $foo if $max < $foo;
return 0;

An dieser Stelle verlässt du die Sub bereits beim ersten Durchlauf der foreach-Schleife, die Sub dürfte also nie 1 zurückgeben. Du meinst es aber sicher eher so:

if($max<$foo) {
  $max = $foo;
  return 0;
}

In diesem Fall kommt es wie gesagt auf das von dir erwartete Ergebnis an.

ja,das mit return 1 oder 0 hab ich 100% kapiert.
Man könnte eine abfrage return 1 od. 0 z.B. so stellen
unless (max())   #wenn return 0;
{
blabla
}
return $var heisst also dass der erste wert,wo $var definiert wurde in der sub
mit return $var; zurückgegeben wird,jenachdem ob if($var = richtig) richtig oder falsch war...
Grüsse vom
Alain