in reply to Modifying %ENV From The Shebang Line

#!/usr/bin/perl unless ($ENV{FOO} =~ /fitzblorf/) { $ENV{FOO} = 'fitzblorf'; exec $0, @ARGV; }

--shmem

_($_=" "x(1<<5)."?\n".q·/)Oo.  G°\        /
                              /\_¯/(q    /
----------------------------  \__(m.====·.(_("always off the crowd"))."·
");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}

Replies are listed 'Best First'.
Re^2: Modifying %ENV From The Shebang Line
by ikegami (Patriarch) on Dec 17, 2007 at 23:43 UTC
    That would need to be wrapped in a BEGIN block since it needs to be executed before a use statement.
      Of course, but that would be advanced usage... if you do such bold stuff as loading modules, it would be required, yes ;-)

      --shmem

      _($_=" "x(1<<5)."?\n".q·/)Oo.  G°\        /
                                    /\_¯/(q    /
      ----------------------------  \__(m.====·.(_("always off the crowd"))."·
      ");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}
        This is great, I used this to execute the perl installed with Oracle. Oracle is installed under $ORACLE_HOME, which can be set dynamically depending on the Oracle SID.
        #!/usr/bin/perl use strict; use warnings; # Voodoo magic to run under Oracle Perl, for DBI. # See http://www.perlmonks.org/?node_id=657563. BEGIN { die "ORACLE_HOME not set\n" unless $ENV{ORACLE_HOME}; unless ($ENV{OrAcLePeRl}) { $ENV{OrAcLePeRl} = "$ENV{ORACLE_HOME}/perl"; $ENV{PERL5LIB} = "$ENV{PERL5LIB}:$ENV{OrAcLePeRl}/lib:$ENV{OrA +cLePeRl}/lib/site_perl"; $ENV{LD_LIBRARY_PATH} = "$ENV{LD_LIBRARY_PATH}:$ENV{ORACLE_HOM +E}/lib32:$ENV{ORACLE_HOME}/lib"; exec "$ENV{OrAcLePeRl}/bin/perl", $0, @ARGV; } } use DBI; ...