Not sure I understand what you're trying to do. Do you want to retrieve the value of my $var1 or the value of $self->{$var1} (i.e. where the attribute name is in the value of the class variable $var1) ?
The first could be achieved like this
sub get_var{ my ($self, $var_name) = @_; return eval "\$$var_name"; }
the second like so
sub get_var{ my ($self, $var_name) = @_; return $self->{eval "\$$var_name"}; }
(As both are methods, you'd need to call them as $val = $obj->get_var('var1').)
Update: here's a full example, so you know how I interpreted your intentions... :)
#!/usr/bin/perl -wl use strict; package parser; my $var1 = "foo"; sub new { my $self = bless {}, $_[0]; $self->parse(); return $self; } sub parse{ my $self = shift; $self->{$var1} = 'bar'; } sub get_class_var{ my ($self, $var_name) = @_; return eval "\$$var_name"; } sub get_inst_var{ my ($self, $var_name) = @_; return $self->{eval "\$$var_name"}; } package main; my $p = parser->new(); print $p->get_class_var('var1'); # -> foo print $p->get_inst_var( 'var1'); # -> bar
In reply to Re: trouble with evaluate
by Eliya
in thread trouble with evaluate
by genghis
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |