内容
Mojoliciousのdumperメソッドを日本語表示可能にする。
本文
MojoliciousではコントローラやテンプレートでMojo::Util
パッケージに含まれるdumperメソッドが利用できます。
このメソッドはData::Dumperのラッパーで、複雑なデータ構造を確認したい場面で重宝します。
例えば、コントローラ側では $c->dumper($data)
もしくは $self->dumper($data
のように呼び出します。
Mojolicious 7.30時点でMojo::Utilのdumperメソッドは以下のような定義になっています。
sub dumper {
Data::Dumper->new([@_])->Indent(1)->Sortkeys(1)->Terse(1)->Useqq(1)->Dump;
}
dumper メソッドは便利ですが日本語が含まれるデータでは \x{1234}\x{5678}
のような表記で
ちょっと困ります。
以下のように Data::Dumper を書き換えて日本語を表示可能にします。
# !/usr/bin/env perl
use Mojolicious::Lite;
use Encode;
# Documentation browser under "/perldoc"
plugin 'PODRenderer';
{
package Data::Dumper ;
no warnings 'redefine' ;
*Data::Dumper::qquote = sub { return shift } ;
$Data::Dumper::Useperl = 1 ;
}
say app->dumper({ s => encode("utf8", "あああ")});
get '/' => sub {
my $c = shift;
say $c->dumper({ s => "日本語"});
$c->render(template => 'index');
};
app->start;
__DATA__
@@ index.html.ep
% layout 'default';
% title 'Welcome';
<h1>Welcome to the Mojolicious real-time web framework!</h1>
To learn more, you can browse through the documentation
<%= link_to 'here' => '/perldoc' %>.
@@ layouts/default.html.ep
<!DOCTYPE html>
<html>
<head><title><%= title %></title></head>
<body><%= content %></body>
</html>
参考