1package My::Examples; 2 3my @states = (undef, # we want to start from one :) 4 qw/Alabama Alaska Arizona Arkansas California Colorado Connecticut 5 Delaware Florida Georgia Hawaii Idaho Illinois Indiana Iowa Kansas 6 Kentucky Louisiana Maine Maryland Massachusetts Michigan Minnesota 7 Mississippi Missouri Montana Nebraska Nevada/, 'New Hampshire', 8 'New Jersey', 'New Mexico', 'New York', 'North Carolina', 9 'North Dakota', qw/Ohio Oklahoma Oregon Pennsylvania/, 'Rhode Island', 10 'South Carolina', 'South Dakota', qw/Tennessee Texas Utah Vermont 11 Virginia Washington/, 'West Virginia', 'Wisconsin', 'Wyoming' 12); 13 14sub getStateName { 15 my $self = shift; 16 $states[shift]; 17} 18 19sub getStateNames { 20 my $self = shift; 21 join "\n", map {$states[$_]} @_; 22} 23 24 25sub getStateList { 26 my $self = shift; 27 [map {$states[$_]} @{shift()}]; 28} 29 30sub getStateStruct { 31 my $self = shift; 32 my %states = %{shift()}; 33 # be careful to distinguish block from hash. Just {} won't work 34 +{map {$_ => $states[$states{$_}]} keys %states}; 35} 36 371; 38