Hi Klaus!
use Fcntl ':mode';
$mode = (stat($filename))[2];>>6 schiebt die Bits um 6 stellen nach links, um so die gleichen
Werte für user,group und other zu erhalten
$user_rights = ($mode & S_IRWXU) >> 6;
$user_read = ($mode & S_IRUSR) >> 6;
$user_write = ($mode & S_IWUSR) >> 6;
$user_execute = ($mode & S_IXUSR) >> 6;
für group wird nur um 3 Bits verschoben
$group_rights = ($mode & S_IRWXG) >> 3;
$group_read = ($mode & S_IRGRP) >> 3;
$group_write = ($mode & S_IWGRP) >> 3;
$group_execute = ($mode & S_IXGRP) >> 3;
hier wird nichts mehr geschoben, weil das sowieso schon links ist
$other_rights = ($mode & S_IRWXO);
$other_read = ($mode & S_IROTH);
$other_write = ($mode & S_IWOTH);
$other_execute = ($mode & S_IXOTH);
Warum shiftest Du hier gruppenweise nach rechts? Sehe nicht so ganz den Punkt. Wenn Du der Reihe nach um 8, 7, 6, 5, 4, 3, 2, 1, 0 shiften wuerdest, wuerde ich es einsehen, weil dann das betreffende Bit jeweils an der Stelle der 1 steht und man die u.U ausgeben will. Aber so, ist doch fuer einen boolschen Test egal, an welcher Stelle die 1 steht oder auch nicht.
So long