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/