Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re^2: eval a reference to a my hash

by cdarke (Prior)
on Apr 05, 2006 at 12:37 UTC ( [id://541368]=note: print w/replies, xml ) Need Help??


in reply to Re: eval a reference to a my hash
in thread eval a reference to a my hash

Nice solution, I wanted to get rid of the eval anyway. Thanks!
I would still love to know why the original doesn't work.

Replies are listed 'Best First'.
Re^3: eval a reference to a my hash
by chromatic (Archbishop) on Apr 05, 2006 at 17:48 UTC

    By the time the eval STRING code runs, lexicals don't really have names anymore, so Perl can't look them up by name.

      And that explains why making them our variables fixes the problem. Many thanks (I'm using an extra hash now and got rid of the eval, but it is worth knowing).
      Cheers
Re^3: eval a reference to a my hash
by liverpole (Monsignor) on Apr 05, 2006 at 18:00 UTC
    When you say the original doesn't work, what makes you think it isn't?

    It seems your simplified fragment is not demonstrating the problem, because:

    #!/usr/bin/perl -w + # Strict use strict; use warnings; + # Libraries use Carp; use Data::Dumper; + + my %drink; # other attribute hashes + set('larry', 'drink', 'Old Speckled Hen'); print $drink{'larry'}, "\n"; # print "Dump(\%drink) => [%s]\n", Dumper(\%drink); + + sub set { my ($key, $attr, $value) = @_; + my $hashref; eval "\$hashref = \\\%$attr"; + if ( !defined $hashref ) { carp 'Invalid attribute name'; } else { $hashref->{$key} = $value; } }
    is working for me:
    % prog541345.pl Old Speckled Hen
    If that isn't what you're getting, please compare the above code fragment (based on what you provided in your post) to your actual code, and see if that helps locate the problem.

    s''(q.S:$/9=(T1';s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/
      It works because of the print statement. Take that out and it will fail. Thanks anyway.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://541368]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others rifling through the Monastery: (8)
As of 2024-04-18 07:58 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found