tokuhirom's Blog

Check Text-Xslate-2.0010 if you are using Data::Section::Simple with Xslate

Text::Xslate 2.0010 contains serious issue fix around 5.18 incompatibility.

Perl 5.18+ does not allows "Wide characters" as PerlIO::scalar's input string. It says Strings with code points over 0xFF may not be mapped into in-memory file handles.

Older Text::Xslate using PerlIO::scalar for processing vpath. vpath is mostly using with Data::Section::Simple. And so, if you are using Data::Section::Simple + older Text::Xslate like following, you got an error:

#!perl -w
use strict;

use utf8; # <--------------- utf8!
use Text::Xslate;
use Data::Section::Simple;

my $tx = Text::Xslate->new(
    path => [
        Data::Section::Simple
            ->new()->get_data_section(),
    ],
);

print $tx->render('foo.tx');

__DATA__

@@ foo.tx
<html>
<body>
あいうえお
</body>
</html>

Of course, it's not Data::Section::Simple specific things. But vpath feature was introduced for D::S::S.

If you are using vpath feature, I suggest to upgrade Text::Xslate to latest.

Ref.