If they want a Korn shell function to execute from a shell script, then it may be more efficient to just do it as a Korn shell function. It'll be one less process to spawn. Then again, depending on the function maybe it would be worthwhile to write the Perl script.
You could pass arguments by environment variables, of course, but command line args are usually better especially if you want to optionally run this script from the command line. Or you could take command line args if they're there, but default to the %ENV hash if there are no command line args.
Besides, 'ps -f' on my system anyway, would show that it IS a perl script running no matter what argument passing you used. (Or are you just worried about the parameters showing?)