in reply to Re: Re: Translation modules and the importation of global language variables
in thread Translation modules and the importation of global language variables
Modules usually have a '.pm' extention, although there is this whole debate about identifying files by their extention being a bad thing. Modules and packages look the same if you squint enough, so there are probably no practical differences between your code and a 'proper module' as it is.
Something like this is what I'm talking about:
package My::Language::Dutch; use strict; my %language = ( blue => 'blauw', red => 'rood', ); sub get_word { my $class = shift; my $word = shift || return; return $language{$word}; } 1; # IMPORTANT -- modules have to return a true value at the end
You put that somewhere in your @INC under a My/Languages directory, so that perl knows where to find it, and then use it like this:
use My::Language::Dutch; my $blue_dutch = My::Language::Dutch->get_word( 'blue' );
If you need to dynamically use a language at runtime, you'll have to fall back to require and some class name tricks:
my $language = 'Dutch'; require "My/Language/$language.pm"; my $class = "My::Language::$language"; my $blue = $class->get_word( 'blue' );
----
I wanted to explore how Perl's closures can be manipulated, and ended up creating an object system by accident.
-- Schemer
Note: All code is untested, unless otherwise stated
|
|---|