my %players = ( frodo => [ 'ring', 'chainmail armour' ], sam => [ 'lembas', 'chainmail armour' ], smeagol => [ 'fish', 'rabbit' ], ); # Pass the hash as a list: sub print_players { my (%players) = @_; for my $player (keys %players) { printf "$player: %s\n", join ",",@{$players{$player}}; }; }; # Pass the hash as a reference: sub print_players_ref { my ($players) = @_; for my $player (keys %$players) { printf "$player: %s\n", join ",",@{$players->{$player}}; }; }; print_players(%players); print_players_ref(\%players);