#!/usr/bin/env perl use warnings; use strict; my %fnr = ( COMPANY_CODE => 'AB', COMPANY_NAME => 'ABC, Inc.', ); my %fnr_loop = ( COMPANY_CODE => 'XY', COMPANY_NAME => 'XYZ, Inc.', ); my %fnr_but = ( COMPANY_CODE => 'PQ', COMPANY_NAME => 'PQR, Inc.', ); my $nameRef = \$fnr{COMPANY_CODE}; show('Original'); changeHashLoop(); show('Loop'); changeHashButton(); show('Button'); sub changeHashButton { %fnr = %fnr_but; } sub changeHashLoop { for my $key (keys %fnr) { $fnr{$key} = $fnr_loop{$key}; } } sub show { my ($label) = @_; my $ccRef = \$fnr{COMPANY_CODE}; printf "%8s: %s (%s) FNR: %s (%s)\n", $label, $$nameRef, $nameRef, $$ccRef, $ccRef; } #### Original: AB (SCALAR(0x94a554)) FNR: AB (SCALAR(0x94a554)) Loop: XY (SCALAR(0x94a554)) FNR: XY (SCALAR(0x94a554)) Button: XY (SCALAR(0x94a554)) FNR: PQ (SCALAR(0x94a584))