#!/usr/bin/perl use strict; use warnings; #my $number = get_number('one'); #print "$number\n"; for (qw(one two three)){ my $number = get_number($_); print "$number\n"; } { my $hash_ref; sub get_number{ my ($num) = @_; unless (defined $hash_ref){ while (){ chomp; my ($str, $num) = split /\|/; $hash_ref->{$str} = $num; } } return $hash_ref->{$num}; } } __DATA__ one|1 two|2 three|3 #### Modification of a read-only value attempted at closure_test.pl line 19. #### 1 1 2 3