my @days = _('Mon'),_('Tues'),_('Wed'),_('Thurs'),_('Fri'),_('Sat'),_('Sun'); sub day_of_week { my $self = shift; return $days[ $self->{day_num} ]; } #### package i18n::String; use strict; use warnings; no warnings 'once'; use overload q{""} => sub { $i18n::Current_Lang->maketext( ${ $_[0] } ) }; sub new { my $class = shift; my $string = shift; return bless( \$string, $class ); } 1; #### sub good { my %params = ref $_[0] eq 'HASH? ? %{shift @_} : @_; } sub bad_but_typical { my %params = ref $_[0] ? %{shift @_} : @_; } #### { no strict 'refs'; my $zero_isa = '0::ISA'; # Use a symbolic reference to make package '0' *$zero_isa = ['i18n::String']; # inherit from i18n::String } package i18n::String; use strict; use warnings; no warnings 'once'; use overload q{""} => sub { $i18n::Current_Lang->maketext( ${ $_[0] } ) }; sub new { my $class = shift; my $string = shift; return bless( \$string,'0' ); # bless the scalar ref into class '0' instead of $class } 1;