in reply to Re^2: How to "source" a shell file in Perl?
in thread How to "source" a shell file in Perl?
Congratulations, works for me :)
open my $source,'-|',"bash /tmp/wrapper.sh" or die "$!"; my $dump= do { local $/; <$source>}; my $VAR1; eval $dump; print $VAR1->{MONK}; #> jfroebe
lanx@nc10-ubuntu:/tmp$ cat wrapper.sh . /tmp/src.sh perl -MData::Dumper -e' print Dumper \%ENV' lanx@nc10-ubuntu:/tmp$ cat src.sh export MONK=jfroebe lanx@nc10-ubuntu:/tmp$
Thats an extremely stable approach, I can't think of a way to make it break! =)
you could even try to generate the code from wrapper.sh dynamically on the fly, hence avoiding any security/dependencies issues.
Cheers Rolf
( addicted to the Perl Programming Language)
UPDATE
> you could even try to generate the code from wrapper.sh dynamically on the fly
works! =)
my $bashcode=<<'_bash_'; . /tmp/src.sh; perl -MData::Dumper -e "print Dumper \%ENV"; _bash_ open my $source, '-|', qq{bash -c '$bashcode'} or die "$!"; my $dump= do { local $/; <$source>}; my $VAR1; eval $dump; print $VAR1->{MONK}; #> jfroebe
UPDATE
far less code, same result
my $bashcode=<<'__bash__'; . /tmp/src.sh; perl -MData::Dumper -e 'print Dumper \%ENV'; __bash__ my $VAR1; eval qx{bash -c "$bashcode"}; print $VAR1->{MONK}; #> jfroebe
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^4: How to "source" a shell file in Perl?
by jfroebe (Parson) on Jun 12, 2013 at 20:46 UTC | |
by LanX (Saint) on Jun 12, 2013 at 20:50 UTC |
In Section
Seekers of Perl Wisdom