package MyConfig; ... our %Config = ( ... ); sub getConfig { my( $key ) = @_; our $Host ||= hostname(); our %HostConfig; return $HostConfig{$key} //= _getConfigForHost( $Host, $key ); } #### sub getConfig { my( $key, $host ) = @_; $host ||= hostname(); our %HostConfig; return $HostConfig{$key,$host} //= _getConfigForHost( $host, $key ); } #### $MyConfig::Host = $test_host; #### for my $host ( ... ) { $MyConfig::Host = $host; %MyConfig::HostConfig = (); ... }