in reply to
invoking umask command in perl
The primary reason this fails is probably that there is no executable named umask on your system. I can't be certain there is non, as someone may have done something unusual on your system, but generally there is none.
When I run such a command on my system, I get the following error: Can't exec "umask": No such file or directory at ./test.pl line 5.
There is no umask executable because it would be difficult to write and contrary to the convention that child processes do not modify their parent process and would otherwise be useless except to display the current setting. It is a shell builtin function so that it can change the setting of the shell.