$D = new DATASTORE 'dir', 'filename'; while($_ = $D->getline) { [...] } #### package DATASTORE; use parent 'IO::File'; sub new { my ($class, @args) = @_; my $filename; [...] $self = $class->SUPER::new($filename, 'r'); return $self if defined $self; }