Thread ARGV-Check (8 answers)
Opened by Web at 2009-10-07 15:40

Dubu
 2009-10-07 22:44
#126642 #126642
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Guest Web
Ich finde das
Code (perl): (dl )
|| '.'
und das
Code (perl): (dl )
or die "Search parameter cannot be empty.\n";
machen wegen der vorherigen Abfrage der Anzahl der Argumente keinen Sinn.
Habe ich etwas übersehen?

Das, was betterworld schon sagte: Statt eines leeren Argumentes zählt für "||" (und auch "or"!) auch eine 0 als false. Und es könnte jemand natürlich absichtlich einen Leerstring übergeben:
Code: (dl )
$ programm verzeichnis "" ersetzung


Das Skript macht bis dahin also folgendes:
  • Wenn man keine drei Argumente übergibt, bricht es ab.
  • Wenn das erste Argument eine 0 oder ein Leerstring ist, wird $startdir zu "."
  • Wenn das zweite Argument eine 0 oder ein Leerstring ist, bekommt man die Fehlermeldung Search parameter cannot be empty.

Ich bezweifle allerdings, dass das komplett so vom Autor beabsichtigt war. Schließlich kann man so nicht einmal eine Null durch etwas anderes ersetzen.

View full thread ARGV-Check