Бер*_*ров 6 debugging unicode perl utf-8 data-dumper
我在结构中有一些UTF-8编码的字符串,我倾向于使用Data :: Dumper进行调试.
一个小测试案例是:
use utf8;
use Data::Dumper;
say Dumper({??=>"??"}
Run Code Online (Sandbox Code Playgroud)
它输出
{
"\x{434}\x{430}" => "\x{43d}\x{435}"
};
Run Code Online (Sandbox Code Playgroud)
但我想看
{
"??" => "??"
};
Run Code Online (Sandbox Code Playgroud)
当然,我的结构非常复杂.如何在调试时使转储结构中的字符串可读?也许我必须以chr某种方式处理输出warn/say?
仅用于调试:
#!/usr/bin/perl
use strict;
use warnings;
use v5.10;
use utf8;
use Data::Dumper;
binmode STDOUT, ':utf8';
CASE_1: {
# Redefine Data::Dumper::qquote() to do nothing
no warnings 'redefine';
local *Data::Dumper::qquote = sub { qq["${\(shift)}"] };
# Use the Pure Perl implementation of Dumper
local $Data::Dumper::Useperl = 1;
say Dumper({??=>"??"});
}
CASE_2: {
# Use YAML instead
use YAML;
say Dump({??=>"??"});
}
CASE_3: {
# Evalulate whole dumped string
no strict 'vars';
local $Data::Dumper::Terse = 1;
my $var = Dumper({??=>"??"});
say eval "qq#$var#" or die $@;
}
__END__
$VAR1 = {
"??" => "??"
};
---
??: ??
{
"??" => "??"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
701 次 |
| 最近记录: |