{ 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;