Global symbol "%expenses" requires explicit package name at test.pl line 13. Global symbol "%expenses" requires explicit package name at test.pl line 15. Execution of test.pl aborted due to compilation errors. #### use strict; use warnings; my %v; $v{hourly_worker_expenses} = { # elaborate on this ! 'all' => 16 }; $v{hourly_worker_cost} = &{sub { my $cost = 0; my $item; my %expenses = %{$v{hourly_worker_expenses}}; # fixed typo $expensess foreach $item (keys %expenses) { $cost += $expenses{$item}; } return $cost; } }(); print $v{hourly_worker_cost};