use IO::File; my $file; $file->{name} = '/tmp/foo'; $file->{fd} = IO::File->new( $file->{name} ) or die "$!\n"; # TODO: more explicit error message # this lets me do stuff like $file->{fd}->print( "The name of this file is $file->{name}\n" ); $file->{fd}->close();