use strict; use warnings; package Parser; sub new { my ($class, %params) = @_; return bless \%params, $class; } sub parse { my ($self, $inFile) = @_; while (<$inFile>) { chomp; my ($var, $value) = split; $self->{$var} = $value; } } sub getVar { my ($self, $varName) = @_; return $self->haveVar ($varName) ? $self->{$varName} : undef; } sub haveVar { my ($self, $varName) = @_; return exists $self->{$varName}; } package main; my $parser = Parser->new (); $parser->parse (*DATA); print "var1 = ", $parser->getVar ('var1') if $parser->haveVar ('var1'); __DATA__ var1 wibble var2 plonk var4 dibbly