Data-Dumper
view release on metacpan or search on metacpan
return @{$s->{names}};
}
}
sub DESTROY {}
sub Dump {
return &Dumpxs
unless $Data::Dumper::Useperl || (ref($_[0]) && $_[0]->{useperl})
# Use pure perl version on earlier releases on EBCDIC platforms
|| (! $IS_ASCII && $] lt 5.021_010);
return &Dumpperl;
}
#
# dump the refs in the current dumper object.
# expects same args as new() if called via package name.
#
our @post;
sub Dumpperl {
my($s) = shift;
#$VAR7 = "1234567890";
EOW
TEST_BOTH(q(Data::Dumper->Dumpxs([0, 1, 90, -10, "010", "112345678", "1234567890" ])),
"numbers and number-like scalars",
$want);
}
#############
{
# [github #18614 - handling of Unicode characters in regexes]
# [github #18764 - ... without breaking subsequent Latin-1]
if ($] lt '5.010') {
SKIP_BOTH("Incomplete support for UTF-8 in old perls");
last;
}
my $want = <<"EOW";
#\$VAR1 = [
# "\\x{41f}",
# qr/\x{8b80}/,
# qr/\x{41f}/,
# qr/\x{e4}/,
# '\xE4'
#];
EOW
if ($] lt '5.010001') {
$want =~ s!qr/!qr/(?-xism:!g;
$want =~ s!/,!)/,!g;
}
elsif ($] gt '5.014') {
$want =~ s{/(,?)$}{/u$1}mg;
}
my $want_xs = $want;
$want_xs =~ s/'\xE4'/"\\x{e4}"/;
$want_xs =~ s<([^\0-\177])> <sprintf '\\x{%x}', ord $1>ge;
TEST_BOTH(qq(Data::Dumper->Dumpxs([ [qq/\x{41f}/, qr/\x{8b80}/, qr/\x{41f}/, qr/\x{e4}/, "\xE4"] ])),
"string with Unicode + regexp with Unicode",
$want, $want_xs);
}
#############
# qr/ \\/ /,
# qr/ \\?\\/ /,
# qr/ $bs\\/ /,
# qr/ $bs:\\/ /,
# qr/ \\?$bs:\\/ /,
# qr/ $bs$bs\\/ /,
# qr/ $bs$bs:\\/ /,
# qr/ $bs$bs$bs\\/ /
#];
EOW
if ($] lt '5.010001') {
$want =~ s!qr/!qr/(?-xism:!g;
$want =~ s! /! )/!g;
}
TEST_BOTH(qq(Data::Dumper->Dumpxs([ [qr! / !, qr! \\?/ !, qr! $bs/ !, qr! $bs:/ !, qr! \\?$bs:/ !, qr! $bs$bs/ !, qr! $bs$bs:/ !, qr! $bs$bs$bs/ !, ] ])),
"more perl #58608",
$want);
}
#############
{
# [github #18614, github #18764, perl #58608 corner cases]
if ($] lt '5.010') {
SKIP_BOTH("Incomplete support for UTF-8 in old perls");
last;
}
my $bs = "\\\\";
my $want = <<"EOW";
#\$VAR1 = [
# "\\x{2e18}",
# qr/ \x{203d}\\/ /,
# qr/ \\\x{203d}\\/ /,
# qr/ \\\x{203d}$bs:\\/ /,
# '\xA3'
#];
EOW
if ($] lt '5.010001') {
$want =~ s!qr/!qr/(?-xism:!g;
$want =~ s!/,!)/,!g;
}
elsif ($] gt '5.014') {
$want =~ s{/(,?)$}{/u$1}mg;
}
my $want_xs = $want;
$want_xs =~ s/'\x{A3}'/"\\x{a3}"/;
$want_xs =~ s/\x{203D}/\\x{203d}/g;
TEST_BOTH(qq(Data::Dumper->Dumpxs([ [ '\x{2e18}', qr! \x{203d}/ !, qr! \\\x{203d}/ !, qr! \\\x{203d}$bs:/ !, "\xa3"] ])),
"github #18614, github #18764, perl #58608 corner cases",
$want, $want_xs);
}
#############
# qr/\\\$foo/,
# qr/$dollar \x{A3} /u,
# qr/$dollar \x{203d} /u,
# qr/\\\$ \x{203d} /u,
# qr/\\\\$dollar \x{203d} /u,
# qr/ \$| \x{203d} /u,
# qr/ (\$) \x{203d} /u,
# '\xA3'
#];
EOW
if ($] lt '5.014') {
$want =~ s{/u,$}{/,}mg;
}
if ($] lt '5.010001') {
$want =~ s!qr/!qr/(?-xism:!g;
$want =~ s!/,!)/,!g;
}
my $want_xs = $want;
$want_xs =~ s/'\x{A3}'/"\\x{a3}"/;
$want_xs =~ s/\x{A3}/\\x{a3}/;
$want_xs =~ s/\x{203D}/\\x{203d}/g;
my $have = <<"EOT";
Data::Dumper->Dumpxs([ [
"\\x{2e18}",
( run in 0.715 second using v1.01-cache-2.11-cpan-cc502c75498 )