package My::Examples; my @states = (undef, # we want to start from one :) qw/Alabama Alaska Arizona Arkansas California Colorado Connecticut Delaware Florida Georgia Hawaii Idaho Illinois Indiana Iowa Kansas Kentucky Louisiana Maine Maryland Massachusetts Michigan Minnesota Mississippi Missouri Montana Nebraska Nevada/, 'New Hampshire', 'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota', qw/Ohio Oklahoma Oregon Pennsylvania/, 'Rhode Island', 'South Carolina', 'South Dakota', qw/Tennessee Texas Utah Vermont Virginia Washington/, 'West Virginia', 'Wisconsin', 'Wyoming' ); sub getStateName { my $self = shift; $states[shift]; } sub getStateNames { my $self = shift; join "\n", map {$states[$_]} @_; } sub getStateList { my $self = shift; [map {$states[$_]} @{shift()}]; } sub getStateStruct { my $self = shift; my %states = %{shift()}; # be careful to distinguish block from hash. Just {} won't work +{map {$_ => $states[$states{$_}]} keys %states}; } 1;