package Language; use Inline::Files; use strict; use overload; my %words; sub import { no strict 'refs'; my $caller = caller; my( $class, $lang ) = @_; $lang = uc $lang; my $fh = \*{$lang}; while( <$fh> ) { my( $english, $trans ) = m[(\w+)\s*=\s*(\w+)]; $words{ $english } = $trans; eval qq[ # line 1 "Language::import" *${caller}::$english = bless sub() { '$trans' }, '$class'; ]; } overload::constant ( q => \&interp ); } sub unimport { overload::remove_constant ( q => \&interp ); } sub interp{ my( $orig, $perl, $use) = @_; $orig =~ s[\b([A-Z]+)\b]{ exists $words{ $1 } ? $words{ $1 } : $1 }ge; $orig; } 1; __ENGLISH__ RED = red BLUE = blue GREEN = green __FRENCH__ RED = rouge BLUE = bleu GREEN = vert __DUTCH__ RED = rood BLUE = blauw GREEN = groen