The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
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;