http://www.perlmonks.org?node_id=1060491

three18ti has asked for the wisdom of the Perl Monks concerning the following question:

Hello Monks

I'm looking to search for files and directories with "777" permissions, so I'm reading the stat manpage. I think I know HOW to use the module, but I really don't understand.

for instance, the first example is:

$mode = (stat($filename))[2]; printf "Permissions are %04o\n", $mode &07777;

I can modify this to be usable:

my $mode = (stat($file))[2]; my $perms = sprintf "%04o", $mode &07777; print "EVIL PERSON with $file" if $perms eq '0777';

I'm sure there are other problems, besides using a magic number, but can someone explain what "&07777" does? (I also don't understand sprintf, but I understand that it takes a sort of "template" and produces results)

The next example is using Fcntl to import symbolic constants. But the examples are using some Perl magic I have not encountered before:

use Fcntl ':mode'; $mode = (stat($filename))[2]; $user_rwx = ($mode & S_IRWXU) >> 6;

My GUESS is that the "&" and ">>" are some sort of binary operators, but I get whatever the users mode is. Can someone please explain what is going on here as well? What is ">>" ? (I tried to google, but couldn't figure out how to search for the symbols or what to call them by name.

Thanks Monks!