2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[perl] Test::Moreの支配下でutf8文字列に関する警告を無効にする

Last updated at Posted at 2019-01-31

私にしては珍しく役に立つ記事を書く予感…

Test::Moreは言わずと知れたperlのテスト環境の必須モジュールな訳ですが、use Test::More;を使うと日本語を扱うテストではWide character in print~的な警告がワンサカ出ました。ええ、過去形です

そこで用いられていたのが次のような4行のおまじない。

my $builder = Test::More->builder;
binmode $builder->output,         ":utf8";
binmode $builder->failure_output, ":utf8";
binmode $builder->todo_output,    ":utf8";

仕組みはようわからん1が、警告消えるならまぁいっか的な措置でした。ええ、過去形です
なぜならTest::More::UTF8というズバリなモジュールが(いつの間にか)この世にあるからです!

これからは

use Test::More;
use Test::More::UTF8;

の2行で同じことができます。仕組みはわかりません。

もし貴方がCPAN Authorならば、cpanfile

on test => sub {
    requires 'Test::More', '1.302';
    requires 'Test::More::UTF8', '0.05';
    ...
}

という記述を突っ込みましょう。インストールの前に依存モジュールとしてTest::More::UTF8を自動検出してインストールしてくれます。

というわけで、Enjoy!


個人的にはData::Dumperでもおんなじことできるようにしてくれねぇかなぁ、と思います。
上記の環境下では::note()としてモジュール内でデバッグしてますけど。

  1. こちらに機序は書いてます。理解できるかは別として。

2
1
5

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?