BEGIN {
chdir 't' if -d 't';
@INC = '../lib';
+ require Config;
+ if (($Config::Config{'extensions'} !~ m!\bList/Util\b!) ){
+ print "1..0 # Skip -- Perl configured without List::Util module\n";
+ exit 0;
+ }
}
use strict;
sub uniescape { print dumpvar::uniescape($_[0]), "\n" }
sub stringify { print dumpvar::stringify($_[0]), "\n" }
sub dumpvalue {
+ # Call main::dumpValue exactly as the perl5db.pl calls it.
local $\ = '';
local $, = '';
local $" = ' ';
my @params = @_;
- &main::dumpValue(\@params, -1);
+ &main::dumpValue(\@params,-1);
}
package Foo;
use overload '""' => sub { "Bar<@{$_[0]}>" };
+package Tyre;
+
+sub TIESCALAR{bless[]}
+# other methods intentionally omitted
+
package main;
my $foo = Foo->new(1..5);
1 2
2 3
########
+dumpValue([1..3]);
+EXPECT
+0 1
+1 2
+2 3
+########
dumpValue({1..4},1);
EXPECT
1 => 2
3 => 4
########
+dumpValue({1..4});
+EXPECT
+1 => 2
+3 => 4
+########
dumpValue($foo,1);
EXPECT
0 1
3 4
4 5
########
+dumpValue($foo);
+EXPECT
+0 1
+1 2
+2 3
+3 4
+4 5
+########
dumpValue($bar,1);
EXPECT
0 1
3 4
4 5
########
+dumpValue($bar);
+EXPECT
+0 1
+1 2
+2 3
+3 4
+4 5
+########
dumpvalue("a");
EXPECT
0 'a'
my %x=(a=>1, b=>2); dumpvalue(\%x);
EXPECT
/0 HASH\(0x[0-9a-f]+\)\n 'a' => 1\n 'b' => 2\n/i
+########
+dumpvalue(bless[1,2,3,4],"a=b=c");
+EXPECT
+/0 a=b=c=ARRAY\(0x[0-9a-f]+\)\n 0 1\n 1 2\n 2 3\n 3 4\n/i
+########
+local *_; tie $_, 'Tyre'; stringify('');
+EXPECT
+''
+########
+local *_; tie $_, 'Tyre'; unctrl('abc');
+EXPECT
+abc