Two comments: 02000 is 1024 in base 8; the leading 0 indicates octal much as leading 0x indicates hex.
$a & $b returns the number with bits in common, so we expect 1024 & 1024 to equal 1024 (or 02000 & 02755, the latter being a realistic file mode; note these are in octal). This will be true in boolean context. Hope this helps; Anne 2011. 10. 29. 오후 10:07에 "Daniel Patrick Sullivan" <dansulli...@gmail.com>님이 작성: > HI, All, > > I am banging my head against the wall on an issue that I think would > be pretty simple; I'm trying to determine whether or not the current > running script has the SetGUID file mode set on it and it is proving > much more challenging than I had originally anticipated. I am using > OSX version 10.6 and perl version v5.10.0. > > Basically my function looks like this: > > use Fcntl; > sub isCurrentFileSetGID() { > my $currentFile = $0; > my $mode = (stat($currentFile))[2]; > print "Mode: " . $mode . "\n"; > my $MyMask = Fcntl::S_ISGID; > print "MyMask: " . Fcntl::S_ISGID . "\n"; > my $isItSet = $mode & Fcntl::S_ISGID; > print "iSItSet = " . $isItSet . "\n"; > return $isItSet; > } > > For some reason, the S_ISGID constant is being interpreted as 1024, > however I am uncertain why. It appears as "0002000" in > /usr/include/sys/fcntl.h: > > #define S_ISGID 0002000 /* [XSI] set group id on execution > */ > > When I execute the script, I am getting 1024 as the output for both > the mask and the operation between the mask and the file mode. Am I > missing something here? I would expect this to return 1. Can > somebody help me shed some light on this? The output of my execution > against a perl script with the setgid bit set is found below. > > wireless-s1-so-150-57-199:Perl dsullivan2$ ls -l > total 8 > -rwx--x--x 1 dsullivan2 staff 731 Oct 29 05:55 pw7.pl > wireless-s1-so-150-57-199:Perl dsullivan2$ chmod 2711 pw7.pl > wireless-s1-so-150-57-199:Perl dsullivan2$ ls -l > total 8 > -rwx--s--x 1 dsullivan2 staff 731 Oct 29 05:55 pw7.pl > wireless-s1-so-150-57-199:Perl dsullivan2$ ./pw7.pl > Mode: 34249 > MyMask: 1024 > iSItSet = 1024 > wireless-s1-so-150-57-199:Perl dsullivan2$ > > Thank-you, > > Dan Sullivan > 312-607-3702 > > -- > To unsubscribe, e-mail: beginners-unsubscr...@perl.org > For additional commands, e-mail: beginners-h...@perl.org > http://learn.perl.org/ > > >