my @open_specs = ( { 'handle' => undef, 'file' => 'input.txt', 'mode' => '<', } # Fill in more files/modes here ); foreach my $open_spec (@open_specs) { my($file, $mode) = @$open_spec{'file', 'mode'}; # hash slice; my $fh; open $fh, $mode, $file or die "Error opening file $file in mode $mode $!"; $open_spec->{'handle'} = $fh; }