Siechfred: return-Wert von Subfunktionen

Beitrag lesen

Tag opi.

sub func {
   my %daten;
   if(open(FILE,"</datei")) {
      ... Verarbeitung ...
      return(%daten);
   }
   else { return; }
}

In diesem Falle gibt return 'undef' zurück, da es sich nicht um einen skalaren Kontext, sondern einen Listenkontext handelt. Insofern ist deine Variante so nicht zu beanstanden. Allerdings könntest du es etwas eleganter lösen, indem du ausschließlich bei Fehlern einen entsprechenden Schlüssel definierst:

sub foo {  
  my %hash_to_return;  
  if(open(FILE, "</datei")) {  
    # tu was mit den Daten  
  }  
  else {  
    $hash_to_return{'error'} = "Irgendeine Fehlermeldung";  
  }  
  return %hash_to_return;  
}

Und der Aufruf:

my %conf = foo();  
if(exists $conf{'error'}) {  
  print "Fehler: $conf{'error'}";  
  exit;  
}

Aber das ist wie so oft Geschmackssache :-)

Siechfred

--
«Ich liebe euch doch alle!»