Abfrage des Rückgabewertes einer Funktion
Helbricht
- perl
Hi,
ich möchte den Returnwert einer Funktion abfragen.
Die Funktion liest eine Datei und liefert den Dateiinhalt (return $inhalt),
wenn die Datei vorhanden ist und der Inhalt nicht leer ist.
Im anderen Fall wird je nach Zustand -2, -1, 0 zurückgeliefert.
Der Dateiinhalt, falls vorhanden besteht immer aus einem Text.
Wenn mich nur der Fall des vorhandenen Inhalts interessiert, wie kann ich dann am besten abfragen?
Ist ein Text > 0, d.h. ist die Abfrage "if (myfunc) {#Text vorhanden}" korrekt?
Mfg Helbricht
Die Funktion liest eine Datei und liefert den Dateiinhalt (return $inhalt),
wenn die Datei vorhanden ist und der Inhalt nicht leer ist.
Das wäre OK, aber das ...
Im anderen Fall wird je nach Zustand -2, -1, 0 zurückgeliefert.
ist natürlich Murks. Zumindest absolut ungewöhnlich, dass eine Funktion entweder eine Zahl oder einen String zurückgibt.
die einfachste Variante wäre wenn deine Funktion ein array mit einem Status zurückgibt:
sub deineFunktion {
#...
return wantarray ? ($inhalt, $status) : $inhalt;
}
my($inhalt, $status) = deineFunktion();
Ist ein Text > 0, d.h. ist die Abfrage "if (myfunc) {#Text vorhanden}" korrekt?
Es würde zwar funktionieren, ruft aber eine Warnungen hervor (wenn du mit use warnings arbeitest, was du solltest).
Struppi.
ist natürlich Murks. Zumindest absolut ungewöhnlich, dass eine Funktion entweder eine Zahl oder einen String zurückgibt.
die einfachste Variante wäre wenn deine Funktion ein array mit einem Status zurückgibt:
Auf die Funktion habe ich leider keinen Einfluss. Diese ist mir vorgegeben.
ist natürlich Murks. Zumindest absolut ungewöhnlich, dass eine Funktion entweder eine Zahl oder einen String zurückgibt.
die einfachste Variante wäre wenn deine Funktion ein array mit einem Status zurückgibt:
Auf die Funktion habe ich leider keinen Einfluss. Diese ist mir vorgegeben.
Ohje.
Dann wird es schwierig, wenn du sauber programieren möchtest. Aber wenn du sowieso schon solche Funktionen benutzt, kannst du natürlich auch die von dir vorgeschlagene Variante verwenden. Du musst dann aber Warnungen ausschalten.
Struppi.
Hallo,
Dann wird es schwierig, wenn du sauber programieren möchtest. Aber wenn du sowieso schon solche Funktionen benutzt, kannst du natürlich auch die von dir vorgeschlagene Variante verwenden. Du musst dann aber Warnungen ausschalten.
Gibt es eine Abfrage der Art "if ($rc not numeric)" und würde diese dann keine Warnung liefern?
Mfg
Helbricht
Hallo,
Dann wird es schwierig, wenn du sauber programieren möchtest. Aber wenn du sowieso schon solche Funktionen benutzt, kannst du natürlich auch die von dir vorgeschlagene Variante verwenden. Du musst dann aber Warnungen ausschalten.
Gibt es eine Abfrage der Art "if ($rc not numeric)" und würde diese dann keine Warnung liefern?
Nein, aber eine Lösung steht in der Perlfaq
Struppi.
Hi,
Wenn mich nur der Fall des vorhandenen Inhalts interessiert, wie kann ich dann am besten abfragen?
Es gibt Dateioperatoren, die Du auf eine Datei oder einen Dateihandle anwenden kannst, z.B.
-s FH # size
-f FH # ist es eine Datei?
-d FH # ist es eine Directory?
-e FH # existiert da was (auch dev's)
FH means FileHandle
Hotte