in reply to Re: dereferencing stuff
in thread Getting keys/values from a referenced hash

Looks like the code you are evaling isn't strict compatible. You should check the value of $@ right after your eval. For instance, try this script with and without strict:
#!/usr/bin/perl -wT use strict; my $c; my $code = '$global = 10; $c = 6'; eval $code; die $@ if $@; print "\$c = $c\n"; __END__ =head1 OUTPUT with strict Global symbol "$global" requires explicit package name at (eval 1) lin +e 1. =head2 OUTPUT w/o strict $c = 6
Also, your slurp-and-eval would be cleaner as a require or a do instead.

-Blake

Replies are listed 'Best First'.
Re: Re: Re: dereferencing stuff
by professa (Beadle) on Nov 28, 2001 at 19:07 UTC
    Seems to be the code from that file to be the error:

    Global symbol "$res_g2" requires explicit package name at (eval 2) line 1.

    Var $res_g2 holds the nested array I need to evaluate. Since I have no influence on the code written to the file I think I have to live without strict for that part.
    Thanks a lot!

    Micha

      Looks like you've got two options at this point. The first is just to turn strict off around that block:
      { no strict; eval $code; }
      Or you can attempt to pick off the errors one at a time, outside the eval;
      my $res_g2; eval $code; die $@ if $@;
      I'd recommend seeing how far you can get with the second method, though its quite possible that you'll encounter an error that cant be fixed in this manner.

      -Blake

        I'm using the no strict thing now.
        It's the easiest and most convenient variant for me to use and works with several example files I evaluated yet.
        'nuff for me... ;-)
        Thanx!!!

        Cheers, Micha