I've been exploring the use of:
sample:
#!/bin/sh
echo "This is shell"
SPECIAL_VAR=1
export SPECIAL_VAR
eval "exec perl -x -S $(dirname $0)/$(basename $0) ${1+\"\$@\"}"
#! -*- perl -*- -w
use strict;
print "This is Perl\n";
print "ARGV:".join(':',@ARGV)."\n";
print "SPECIAL_VAR: $ENV{SPECIAL_VAR}\n";
as a means of initializing an environment prior to execution of given perl code. The above configuration will preserve quote strings so calls like:
sample -multi "hello there" -single one
Will keep the "hello there" as a single value in ARGV. The dirname/basename combo supports execution from ./ or any other path as dirname will return '.' if the script is called without a path
The intent is to use "source .initenv" in the shell code to load environment initialization code shared across several perl scripts.