Unterschied : mit oder ohne "defined" ?
xNeTworKx
- perl
Hallo,
Ich würd gern mal genau wissen, was jetzt beim Verzeichnis auslesen der Unterschied ist zwischen while(defined($file = readdir(DIR))) und while($file = readdir(DIR)). Beides funktioniert.
Ich habe gehört, daß man defined verwenden soll, weil man nie weis wo sich das Script gerade befindet (oder so ähnlich) aber was soll das bedeuten ?
Halihallo xNeTworKs
Ich würd gern mal genau wissen, was jetzt beim Verzeichnis auslesen der Unterschied ist zwischen while(defined($file = readdir(DIR))) und while($file = readdir(DIR)). Beides funktioniert.
Ich habe gehört, daß man defined verwenden soll, weil man nie weis wo sich das Script gerade befindet (oder so ähnlich) aber was soll das bedeuten ?
Letzteres kann ich nicht verstehen (hab noch nie was davon gehört, dass dies irgendetwas damit zu tun hat, in welchem Verzeichnis das Progi läuft), aber deinen ersten Kommentar kann ich erleutern:
Eine Variable kann in Perl immer zwei Stati annehmen, nämlich einen definierten Wert, oder eben undefiniert (undef). Mit defined kann man diese Stati testen.
Mit der Direktive while($file = readdir(DIR)) überprüft man nicht direkt den Status, sondern vielmehr, ob $file einen der Werte 0, '' oder undef hat (also nicht nur den Wert undef).
Aber um auf deine Interessen zurückzukommen:
while (defined($file...)) und while ($file = ...) haben in der Praxis etwa den selben Effekt (bis auf den Umstand, dass ein Verzeichnis auch '0' heissen kann).
Lösung: Wenn möglich defined verwenden, das ist sicherer.
Viele Grüsse
Philipp