I'm sorry to tell you, but on Linux, that is not allowed. On * nix systems the
exec family of calls is used to start processes. From the execve(2) man page:
execve() executes the program pointed to by filename. filename must be either a binary executable, or a script starting with a line of the form "
#! interpreter [arg]". In the latter case, the interpreter must be a valid pathname for an executable which is not itself a script, which will be invoked as
interpreter [arg] filename
Note where it says, "the interpreter...is not itself a script". So you will have to use
#!/usr/bin/perl /path/to/my/script
--traveler