da ich bisher Perl nur von Weitem gesehen habe und Google mir dazu nur Dinge ausspuckt, die mich noch mehr verwirren frage ich einfach mal: Wenn eine Variable den Wert undef. enthält (weil dies eine Funktion zurückgibt) und ich mache dann eine Abfrage if $var<0, wie ist dann das Ergebnis?
Weiss das Script dann, dass undef. < 0 ist odwer gibt es mir einen Fehler, weil es mit der Variablen gar nicht mehr arbeiten kann??? - was ich logisch fände.
Das kommt darauf an mit welchem Schalter du das Skript startest. Es ist auf jeden Fall empfehlenswert Perl mit Warnungen und strict zu starten, also die folgenden Zeilen am Anfang:
#!/usr/perl/bin -w
use strict;
Dann funktioniert der Vergleich mit undef nicht mehr. undef ist auf jeden Fall nicht kleiner null, sondern höchstens ungleich null. Wenn die Funktion undef im Fehlerfall zurückgibt und keine null im Erfolgsfall würde ein:
unless($var) { ... fehler }
reichen.
Gibt die Funktion undef im Fehlerfall und ansonsten einen beliebigen Wert (inkl. null) zurück, musst du:
unless(defined $var) { ... Fehler }
schreiben.
Struppi.