in reply to trouble with evaluate
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
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: trouble with evaluate
by genghis (Novice) on Apr 09, 2011 at 00:11 UTC | |
by Eliya (Vicar) on Apr 09, 2011 at 03:04 UTC | |
by JavaFan (Canon) on Apr 09, 2011 at 00:54 UTC |