Thread Chmod auslesen & prüfen (5 answers)
Opened by Pep at 2010-02-08 16:34

murphy
 2010-02-08 18:25
#132299 #132299
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Guest Pep
[...]
Code (perl): (dl )
1
2
$mode = sprintf '%04o', $mode & 07777;
if($mode >= 0755) { [...] }


So richtig funktioniert es nicht.
[...]

Das ist ja auch kein Wunder: Du konvertierst eine Zahl in einen String in Oktaldarstellung, den Du dann in einem numerischen Vergleich als Dezimalzahl interpretierst!

Wenn Perl in einer numerischen Operation einen String als Operand antrifft, versucht es immer, den als Dezimalzahl zu interpretieren, ganz egal mit welcher Ziffer er beginnt. Nur numerische Konstanten im Quelltext werden unterschiedlich interpretiert, je nachdem ob sie mit 0, 0x oder etwas anderem beginnen.

In Deinem Falle ist bereits die Konversion der Zahl in einen String überflüssig, Du kannst Perl aber auch anweisen einen String als Oktalzahl zu interpretieren, indem Du oct($mode) schreibst.
When C++ is your hammer, every problem looks like your thumb.

View full thread Chmod auslesen & prüfen