LoginSignup
2
1

More than 5 years have passed since last update.

Mojolicious の dumper メソッドで日本語を表示する

Posted at

内容

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>

参考

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1