Moin!
Ja, aber das Schieben muss nicht sein.
Es macht den Code verständlicher. Bereits anhand dieser String-Schreibweise -rwxr-xr-x wird ein Programmierer eine Verschiebung als Lösung anstreben, v.l.n.r.: Owner, Group, Other.
Und was ist mit SETUID und SETGID? Die tauchen in dieser rwx-Schreibweise nämlich unpraktischerweise als Alternative zum X auf, landen in der Oktaldarstellung aber ganz wo anders.
Es heißt Lesebit, Schreibbit, Ausführenbit, von links nach rechts, Owner, Group, Other und das sind tatsächlich Bits und nicht nur das, die stehen alle neune auch noch direkt nebeneinander.
Also das schreit ja förmlich nach dem Shift-Operator. So programmiert ist dann auch ein Kommentar nicht unbedingt notwendig.
my $stat = [stat $fullname]; # Dateiname
$self->{STASH}{owner_read} = 'checked' if 1 & $stat->[2] >> 8;
$self->{STASH}{owner_write} = 'checked' if 1 & $stat->[2] >> 7;
$self->{STASH}{owner_execute} = 'checked' if 1 & $stat->[2] >> 6;
$self->{STASH}{group_read} = 'checked' if 1 & $stat->[2] >> 5;
$self->{STASH}{group_write} = 'checked' if 1 & $stat->[2] >> 4;
$self->{STASH}{group_execute} = 'checked' if 1 & $stat->[2] >> 3;
$self->{STASH}{other_read} = 'checked' if 1 & $stat->[2] >> 2;
$self->{STASH}{other_write} = 'checked' if 1 & $stat->[2] >> 1;
$self->{STASH}{other_execute} = 'checked' if 1 & $stat->[2] >> 0;
Setzt die Platzhalter fürs Formular.