#!perl use utf8; use strict; use warnings; use Test::More; use Encode; use File::Temp; # Non-CORE module(s) unless (eval { require Test::More::UTF8; 1; } ) { plan skip_all => '[ Test::More::UTF8 ] is required for testing'; } plan tests => 3; use_ok 'Text::Template' or exit 1; my $tmp_fh = File::Temp->new; print $tmp_fh encode('UTF-8', "\x{4f60}\x{597d} {{\$name}}"); $tmp_fh->flush; # UTF-8 encoded template file my $str = Text::Template->new( TYPE => 'FILE', SOURCE => $tmp_fh->filename, ENCODING => 'UTF-8' )->fill_in(HASH => { name => 'World' }); is $str, "\x{4f60}\x{597d} World"; $tmp_fh = File::Temp->new; print $tmp_fh encode('iso-8859-1', "Ol\x{e1} {{\$name}}"); $tmp_fh->flush; # ISO-8859-1 encoded template file $str = Text::Template->new( TYPE => 'FILE', SOURCE => $tmp_fh->filename, ENCODING => 'iso-8859-1' )->fill_in(HASH => { name => 'World' }); is $str, "Ol\x{e1} World";