Artem Khodush wrote:

> 
> To be more specific, I'd like to not use eval in the def_x,
> and keep "use strict 'vars'" in the code below:
> 
> package z;
> use strict 'vars';
> 
> sub use_x
> {
>  eval( 'print "$x\n";' );
> }
> 

you need to tell Perl that $x is in package z

#!/usr/bin/perl -w

package z;

use strict 'vars';

sub use_x{ print ${"z::$_[0]"},"\n";    }
sub def_x{       ${"z::$_[0]"} = $_[1]; }

def_x("dog","good"); use_x("dog");
def_x("cat","bad!"); use_x("cat");

__END__

prints:

good
bad!

david
-- 
s$s*$+/<tgmecJ"ntgR"tgjvqpC"vuwL$;$;=qq$
\x24\x5f\x3d\x72\x65\x76\x65\x72\x73\x65
\x24\x5f\x3b\x73\x2f\x2e\x2f\x63\x68\x72
\x28\x6f\x72\x64\x28\x24\x26\x29\x2d\x32
\x29\x2f\x67\x65\x3b\x70\x72\x69\x6e\x74
\x22\x24\x5f\x5c\x6e\x22\x3b\x3b$;eval$;

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to