package Template::Stash::ForceUTF8; use strict; our $VERSION = '0.03'; use Template::Config; use base ( $Template::Config::STASH ); use Encode; sub get { my $self = shift; my $result = $self->SUPER::get(@_); return $result if ref $result; Encode::_utf8_on($result) unless Encode::is_utf8($result); return $result; } 1; __END__ =head1 NAME Template::Stash::ForceUTF8 - Force UTF-8 (Unicode) flag on stash variables =head1 SYNOPSIS use Template::Stash::ForceUTF8; use Template; my $tt = Template->new( LOAD_TEMPLATES => [ Template::Provider::Encoding->new ], STASH => Template::Stash::ForceUTF8->new, ); my $vars; $vars->{foo} = "\x{5bae}\x{5ddd}"; # Unicode flagged $vars->{bar} = "\xe5\xae\xae\xe5\xb7\x9d"; # UTF-8 bytes $tt->process($template, $vars); # this DWIMs =head1 DESCRIPTION Template::Stash::ForceUTF8 is a Template::Stash that forces Unicode flag on stash variables. Best used with L. =head1 SEE ALSO L =cut