package CParsingThingy; sub new { my $class=shift; my $self={}; # you could either do this... $self->{program}={}; # or this: # $self->{functions}=[]; # $self->{typedefs}=[]; # $self->{defined_in}={}; # etc. bless $self, $class; } ... sub parse_program { my $self=shift; my $source=shift; my $program=$self->{program}; # and use $program as before. .. } # etc.