Syntax Frage

Hallo zusammen,

ich verstehe folgenden Ausschnitt aus einem Perl Script nicht:
Code:
($z,$z,$mode) = lstat("$vncUserDir");
if (!-d _ || !-o _ || ($vncUserDirUnderTmp && ($mode & 0777) != 0700)) {
    die "$prog: Wrong type or access mode of $vncUserDir.\n";
}

Es ist aus dem vncserver- Script von Tightvnc. Die Frage ist

1. Was bedeutet "!-d _ || !-o _" ? Was ist "_" für eine Variable etc. ?
2. Warum verwendet man lstat wenn das Ergebnis nicht verwendet wird ?
 
Zuletzt bearbeitet:
Hi.
ich verstehe folgenden Ausschnitt aus einem Perl Script nicht:
Code:
($z,$z,$mode) = lstat("$vncUserDir");
if (!-d _ || !-o _ || ($vncUserDirUnderTmp && ($mode & 0777) != 0700)) {
    die "$prog: Wrong type or access mode of $vncUserDir.\n";
}

Es ist aus dem vncserver- Script von Tightvnc. Die Frage ist

1. Was bedeutet "!-d _ || !-o _" ? Was ist "_" für eine Variable etc. ?
Das sind Dateitest-Operatoren von Perl. Das "_" bedeutet in dem Zusammenhang, das Perl die Informationen vom Dateihandle des letzten Systemaufrufs verwenden soll. Siehe z.B. http://www.cs.cf.ac.uk/Dave/PERL/node69.html
2. Warum verwendet man lstat wenn das Ergebnis nicht verwendet wird ?
Das Ergebnis wird einerseits implizit (durch Verwendung von "_" verwendet), andererseits explizit durch die $mode Variable.

Gruß
 
Zuletzt bearbeitet:
Zurück