Thread Verzeichnisse erstellen mit make_path( ) (5 answers)
Opened by YAPD at 2021-05-24 12:53

haj
 2021-05-24 18:25
#193281 #193281
User since
2015-01-07
435 articles
BenutzerIn

user image
2021-05-24T13:15:34 YAPD
Hi Haj,

ich habe gesehen, dass du online bist und gehofft, dass du auf meinen
Beitrag antwortest :)

Online heißt aber nicht, dass ich da tatsächlich reinschaue. Ich habe immer zu viele Fenster offen :)

2021-05-24T13:15:34 YAPD
Ich habe den Code gerade nochmal geändert :

So würde ich das nicht machen, das hatte ich beim ersten Mal übersehen.

Laut Beschreibung von Perldoc:File::Path wäre $LG_FH_Directory_Error immer wahr. Die Doppelprüfung auf $LG_FH_Directory_Error und @$LG_FH_Directory_Error ist ein "Sicherheitsnetz", falls File::Path unerwartet früh zurückkommt: Da würde sonst eine undefinierte Variable als Referenz verwendet.

Sollte dieser "eigentlich unmögliche" Fall aber tatsächlich mal eintreten, dann liefert der Test !$LG_FH_Directory_Error ein "wahr", der oder-Zweig wird gar nicht ausgewertet, und Du bekommst einen Status von 0, den Du als "kein Fehler" interpretierst (Bei der Gelegenheit: 0 als "ok" und 1 als "Fehler" halte ich für einigermaßen nichtssagend).

Wenn Dich Fehlerdetails nicht interessieren, kannst Du doch auch direkt den Return-Wert benutzen:

Code (perl): (dl )
$LG_FH_Directory_Status = (-d $path) || make_path( $path ) ? 0 : 1;


Noch ein Fehler ist drin:

Code (perl): (dl )
make_path( '$path' , { error => \$LG_FH_Directory_Error } );    

Da wird '$path' nicht interpoliert, d.h. Du legst ein Verzeichnis an, dass tatsächlich $path heißt (zumindest unter Linux).

2021-05-24T13:15:34 YAPD
Ich habe verschiedene Szenarien getestet, z.B. mit ungültigen Zeichen
wie '*' oder wenn die variable leer ist. Es hat immer funktioniert,
er hat also den richtigen Status zurückgegeben.

Es wird ja vermutlich bei Dir keine Rolle spielen, aber unter Linux kann man sehr wohl ein Verzeichnis mit dem Namen * anlegen!

View full thread Verzeichnisse erstellen mit make_path( )