Gunwant Singh wrote:
Hi,

Hello,

Let me thank you for your help. I think you guys are doing a great work, its
really appreciative.
Thanks to David and John. Now that I changed my *"perl"* code to the
following, its actually working!!!!

*use strict;
use warnings;
use File::stat;

opendir (DH, "subcode") or die "$!";
chdir("C:/Documents and Settings/Myself/Desktop/code/subcode");

foreach my $file(readdir DH)
{
my $value=stat($file);
my $perm=$value->mode & 07777;
printf "\n$file\t%04o\n", $perm;
}

closedir (DH);*


Leading to a question, why did we 'AND' *mode* to *07777*. What does each
bit stand for and why there  are 5 bits as compared to UNIX's
User-Group-Others bits. So actually 3 questions :)

man 2 stat
[snip]
       The following flags are defined for the st_mode field:

              S_IFMT     0170000   bitmask for the file type bitfields
              S_IFSOCK   0140000   socket
              S_IFLNK    0120000   symbolic link
              S_IFREG    0100000   regular file
              S_IFBLK    0060000   block device
              S_IFDIR    0040000   directory
              S_IFCHR    0020000   character device
              S_IFIFO    0010000   FIFO
              S_ISUID    0004000   set UID bit
              S_ISGID    0002000   set-group-ID bit (see below)
              S_ISVTX    0001000   sticky bit (see below)
              S_IRWXU    00700     mask for file owner permissions
              S_IRUSR    00400     owner has read permission
              S_IWUSR    00200     owner has write permission
              S_IXUSR    00100     owner has execute permission
              S_IRWXG    00070     mask for group permissions
              S_IRGRP    00040     group has read permission
              S_IWGRP    00020     group has write permission
              S_IXGRP    00010     group has execute permission
S_IRWXO 00007 mask for permissions for others (not in group)
              S_IROTH    00004     others have read permission
              S_IWOTH    00002     others have write permission
              S_IXOTH    00001     others have execute permission


So "mode & 07777" displays the permission bits as well as SUID, SGID and the "sticky" bit.



John
--
Perl isn't a toolbox, but a small machine shop where you
can special-order certain sorts of tools at low cost and
in short order.                            -- Larry Wall

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to