Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: Can I pass a reference between two scripts?

by mr.nick (Chaplain)
on Jun 28, 2001 at 01:43 UTC ( [id://92076] : note . print w/replies, xml ) Need Help??


in reply to Can I pass a reference between two scripts?

No, you can't. But you can do something just as good, use Storable; more specifically, freeze & thaw. Hm. Except that freeze doesn't create an ASCII only representation of the reference. But you could add URI::Escape to make it clean:
use strict; use URI::Escape; use Storable qw(freeze); my $hashref={ Foo=>1, Bar =>'string' }; my $frozen=uri_escape(freeze($hashref)); my $output=`otherscript.pl $frozen`; print $output;
and in your otherscript.pl, do something like:
use strict; use URI::Escape; use Storable qw(thaw); use Data::Dumper; my $hashref=thaw(uri_unescape(shift @ARGV)); print Dumper $hashref;
Update: Oops, you said "array reference", not "hash reference". Sorry; but the idea should be the same. But a warning, this method is limited entirely by the size of the reference that you are passing. If it's too big, the command-line version of it will probably exceed your OS's limit.

In fact, this method probably isn't a good idea in any circumstances :)

mr.nick ...