Hi Todd - > I'm not seeing a umask being applied when File::Temp creates the file: > > $ umask > 0002 > $ perl -MFcntl -e 'sysopen(my $fh, "./sysopened", O_WRONLY | O_APPEND | > O_CREAT, 0600)' > $ ls -l > -rw------- 1 me me 0 Sep 9 10:35 sysopened
It is being applied, it just doesn't do anything. sysopen creates the file as 0600. umask 0002 means "remove o=w permissions", which the file does not have in the first place, so the permissions stay as 0600. Try changing your umask to 0222 and do the same test: $ rm sysopened $ umask 0222 $ umask 0222 $ perl -MFcntl -e 'sysopen(my $fh, "./sysopened", O_WRONLY | O_APPEND | O_CREAT, 0600)' $ ls -l sysopened -r-------- 1 larry staff 0 Sep 9 12:15 sysopened sysopen creates the file as 0600. umask 0222 means "remove u=w, g=w, o=w permissions", so the permissions change to 0400. > If I take out the 0600 from the sysopen call, then the file gets g+r,g+w As expected. According to http://perldoc.perl.org/functions/sysopen.html: If you omit the PERMS argument to sysopen, Perl uses the octal value 0666. sysopen creates the file as 0666. umask 0002 means "remove o=w permissions", so the permissions change to 0664. HTH, Larry _______________________________________________ templates mailing list templates@template-toolkit.org http://mail.template-toolkit.org/mailman/listinfo/templates