I thought this might come in handy for someone. This is a useful way to source a shell script to make environment variables available to your Perl script.
In our batch systems at work we primarily write our code in Perl. However, we have a number of small utilities written in shell that we use in debugging, plus we have a script that gets sourced on login that gives us access to our Database and other resources in the environment. In previous days we wrote a wrapper shell script which sourced the shell script prior to calling the Perl scripts, but this was tedious and you had to remember to use it if you ran one of the scripts from the command line, from cron, etc.
Using this short bit of code, taking advantage of the '-s' option to Perl, we can eliminate the use of the wrapper script completely.
I've seen other solutions for this, but some rely on running the script as in a system() or open() call and then parsing the output of the 'env' command to read in and set any environment variables that were exported. If you've used other workarounds for this, I'd be interested in seeing those, too! Hope this helps someone out.eval { exec ". ./env.sh; /usr/bin/perl -s $0 -env -- @ARGV"; } unless $env;
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Sourcing shell scripts
by Corion (Patriarch) on Oct 19, 2007 at 06:24 UTC | |
by tuxz0r (Pilgrim) on Oct 19, 2007 at 17:40 UTC | |
Re: Sourcing shell scripts
by sg (Pilgrim) on Oct 20, 2007 at 05:11 UTC | |
by tuxz0r (Pilgrim) on Oct 20, 2007 at 05:55 UTC | |
Re: Sourcing shell scripts
by noworry (Initiate) on Feb 27, 2008 at 07:30 UTC | |
Re: Sourcing shell scripts
by eldapo (Initiate) on Dec 07, 2009 at 19:54 UTC | |
by Anonymous Monk on Jun 02, 2011 at 11:01 UTC | |
by marto (Cardinal) on Jun 02, 2011 at 11:19 UTC |
Back to
Cool Uses for Perl