#!/usr/bin/env perl use warnings; use strict; use Tk; our %FinalNoRecord = ( COMPANY_CODE => 'AB', COMPANY_NAME => 'ABC, Inc.', ); our %FinalNoRecord_change = ( COMPANY_CODE => 'XY', COMPANY_NAME => 'XYZ, Inc.', ); our $company_change = 'Foo, LLC.'; our $mw = MainWindow->new(); $mw->title("hashTkEntryTestcase"); my $topInfoFrm = $mw->LabFrame( -relief => 'groove', -borderwidth => 3, -label => "Final Assembly Information:", -labelside => 'acrosstop' )->pack(-side => 'top', -fill => 'both'); my $companyInfoFrm = $topInfoFrm->LabFrame( -label => "Company Code:", -labelside => 'left' )->pack(-side => 'top', -fill => 'x', -anchor => 'w'); my $companyCodeEntry = $companyInfoFrm->Entry( -width => 3, -textvariable => \$FinalNoRecord{COMPANY_CODE}, )->pack(-side => 'left'); my $companyNameEntry = $companyInfoFrm->LabEntry( -label => "Company Name:", -labelPack => [qw/-side left -anchor w/], -width => 30, -textvariable => \$FinalNoRecord{COMPANY_NAME}, -state => 'readonly', -relief => 'flat' )->pack(-side => 'left', -expand => 1, -anchor => 'w'); my $ChangeHashButton = $mw->Button( -text => "ChangeHash", # This doesn't work. -command => sub{%FinalNoRecord = %FinalNoRecord_change; } )->pack(-side=>'left'); my $ChangeCodeButton = $mw->Button( -text => "ChangeCode", # This does work. -command => sub{ $FinalNoRecord{COMPANY_CODE} = 'LM'; } )->pack(-side=>'left'); my $ChangeNameButton = $mw->Button( -text => "ChangeName", # This also works -command => sub{ $FinalNoRecord{COMPANY_NAME} = $company_change; } )->pack(-side=>'left'); my $ChangeHashLoopButton = $mw->Button( -text => "ChangeHashLoop", # This works too. -command => sub{ for my $key (keys %FinalNoRecord) { $FinalNoRecord{$key} = $FinalNoRecord_change{$key}; } } )->pack(-side=>'left'); my $ExitButton = $mw->Button( -text => "Exit", -command => [$mw=>'destroy'] )->pack(-side=>'right'); MainLoop();