| Geo-TigerLine-Abbreviations documentation | Contained in the Geo-TigerLine-Abbreviations distribution. |
Geo::TigerLine::Abbreviations - Tiger/LINE feature abbreviations
use Geo::TigerLine::Abbreviations;
print $Geo::TigerLine::Abbreviations::Dict{'Av'}[0]{'feature_type'}, "\n";
Geo::TigerLine::Abbreviations provides a single hash %Dict whose keys are values from the US Census bureau's set of standard abbreviations. All the values are the possible results of the lookup.
Each value may have any of the following keys: feature_type, standard_abbreviation, short_abbreviation, and translation.
| Geo-TigerLine-Abbreviations documentation | Contained in the Geo-TigerLine-Abbreviations distribution. |
package Geo::TigerLine::Abbreviations; BEGIN { $Geo::TigerLine::Abbreviations::VERSION = '0.04'; } use strict; use warnings; use Cache::FileCache; use LWP::Simple; use vars qw(%Dict); init(); sub init { for my $abbr ( @{_get_dictionary()} ) { push @{$Dict{$abbr->{$_}}}, $abbr for keys %$abbr; } for ( keys %Dict ) { @{$Dict{$_}} = unique( @{$Dict{$_}} ); } } sub unique { my %seen; $seen{$_} = $_ for @_; return values %seen; } sub _get_dictionary { my $cache = Cache::FileCache->new ( { namespace => 'TigerLINE', default_expires_in => $Cache::Cache::EXPIRES_NEVER } ); my $dict = $cache->get( 'Dictionary' ); if ( not $dict ) { $dict = _fetch_dictionary(); $cache->set( 'Dictionary', $dict ); } return $dict; } sub _fetch_dictionary { no warnings 'uninitialized'; return [ ( map { local $_ = $_; s/\t/ /g; s/^\s+//; s/\s+$//; my %h; @h{qw(feature_type standard_abbreviation short_abbreviation translation)} = split /\s{2,}/; delete @h{ grep $h{$_} !~ /\w/, keys %h }; \ %h } split /^(?=\S)/m, ( get( 'http://www2.census.gov/geo/tiger/tiger2k/a2kapd.txt' ) =~ /(^Acad.+)/ms )[0] ) ]; } 1; __END__