#!/usr/bin/perl use strict; use warnings; my %h1 = ( one => 1, two => 2, ); my %h2 = ( three => 3, four => 4, ); my_sub(\%h1, \%h2); sub my_sub { my ($ref1, $ref2) = @_; my %h1 = %{$ref1}; my %h2 = %{$ref2}; # Or "my %h1 = %{(shift)};" will work too, but I don't really like it. print "$_ $h1{$_}\n" for keys %h1; print "$_ $h2{$_}\n" for keys %h2; }