Hi Daniel, There's no such thing as boolean literals [true/false] in Perl. ) Remember these weird '1's at the end of .pm files? ) Or constructs like while(1)? )
And frankly speaking, I don't think there's a big need for these literals. Every value (scalar or list, doesn't matter) can be well and happily evaluated in boolean context, with little (if any) surprises in this evaluation. So, if you really need to return 1 from this function, just put !! before "booleaned" value, like this. ) my $isItSet = !! ( $mode & Fcntl::S_ISGID ) ... but then again, notice the word 'really'. ) And be aware that 'print !!0' line will print you an empty string, not zero. -- iD 2011/10/29 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/ > > >