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

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$..$/

Replies are listed 'Best First'.
Re^4: eval a reference to a my hash
by cdarke (Prior) on Apr 07, 2006 at 10:10 UTC
    It works because of the print statement. Take that out and it will fail. Thanks anyway.