in reply to FileMask Conversion

Well to be honest I don't really know if this is a "better" solution than yours, but it reads more like the way I think. The y/ /0/ statement is only there because the interpreter was giving me a warning about a bitwise_and with a " " (there may be a better way to do this with options to sprintf).

So, in the spitrit of TIMTOWTDI.

sub ReturnFileMask($) { my $Numeric=sprintf "%3o",(shift)&07777; my $Mask='-xw@r'; my $Tmp="-"; foreach(split //,$Numeric) { y/ /0/; $Tmp .= substr($Mask, $_ & 4, 1) . substr($Mask, $_ & 2, 1) . substr($Mask, $_ & 1, 1); } return $Tmp; }
or alternitively, my second attempt, which doesn't ponce about with the bit wise ands. I think I much prefer this:

sub ReturnFileMask($) { my $Numeric=sprintf "%3o",(shift)&07777; my $Tmp="-"; foreach(split //,$Numeric) { y/ /0/; $Tmp .= substr('----rrrr', $_, 1) . substr('--ww--ww', $_, 1) . substr('-x-x-x-x', $_, 1); } return $Tmp; }
Or, how about the really simple
sub ReturnFileMask($) { my $Tmp="-"; foreach(split //,sprintf "%3o",(shift)&07777) { y/ /0/; $Tmp .= ("---", "--x", "-w-", "-wx", "r--", "r-x", "rw-", "rwx")[$ +_]; } return $Tmp; }

Nuance

Baldrick, you wouldn't see a subtle plan if it painted itself purple and danced naked on top of a harpsichord, singing "Subtle plans are here again!"