in reply to How to access multiple hash variables defined in a module

Is this a good approach? Presumably you are putting the hashes in the module for a reason, and for that same reason would it not be better to access the hashes from the outside using a subroutine? This would be a first stage towards encapsulation.

I know it sounds like more work, but it will pay off in the long run.For example:
package XYZ; { my %Hash1; my %Hash2; my %Hash3; sub populateHashRoutine { # open the file "raw_file.txt" open (my $fh, '<', 'raw_file.txt') or die "raw_file: $!"; # Populate %Hash1 %Hash2 %Hash3 while (<$fh>) { # mumble, mumble, mumble } close ($fh); } sub GetH1 { my $key = shift; return $Hash1{$key} } sub GetH2 { my $key = shift; return $Hash2{$key} } sub GetH3 { my $key = shift; return $Hash3{$key} } } 1; #main.pl #======== use XYZ; XYZ::populateHashRoutine("raw_file.txt"); #How to print Hash1,Hash2,Hash3 values here ? print XYZ::GetH1('key1'),"\n"; print XYZ::GetH2('key2'),"\n"; print XYZ::GetH3('key3'),"\n";