#!/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