On Mon, 11 Mar 2002 17:56:41 +0800, allan wrote: >i need to (i think) pass a hash as a reference to a sub >routine for ultimately letting that sub return a string. >that sub is placed in another file which i require beforehand. >i know the hash is ok >i know i can pass an require plain scalars >but is it possible to pass a hash or any reference in the >middle of an eval?
Yes you can. I think you don't need to, but you can. You can reference any variable in scope, whatever it contains. As: my $string = "You see?"; my $ref = \$string; eval 'print $$ref'; >the closest i have come to succes is something not fully >working as below: > >my %lookup_menu = ( > 1 => HOME, > 2 => PARTNERS, >); > > >require 'relevant_file'; >$out = eval($sub_routine . "(\\%lookup_menu)"); >print $out; Well, you don't need the eval. You could use a symbolic reference to the sub: $sub_routine->(\%lookup_menu); but it would be better still if the variable contains a reference to the sub to call, instead of the name of the sub. $sub_rountine = \&foo ; # instead of "foo". The latter will get past "strict", too. -- Bart.