1#!./perl 2 3BEGIN { 4 unless (-d 'blib') { 5 chdir 't' if -d 't'; 6 @INC = '../lib'; 7 require Config; import Config; 8 keys %Config; # Silence warning 9 if ($Config{extensions} !~ /\bList\/Util\b/) { 10 print "1..0 # Skip: List::Util was not built\n"; 11 exit 0; 12 } 13 } 14} 15 16use vars qw($skip); 17 18BEGIN { 19 require Scalar::Util; 20 21 if (grep { /dualvar/ } @Scalar::Util::EXPORT_FAIL) { 22 print "1..0\n"; 23 $skip=1; 24 } 25} 26 27eval <<'EOT' unless $skip; 28use Scalar::Util qw(dualvar); 29 30print "1..11\n"; 31 32$var = dualvar 2.2,"string"; 33 34print "not " unless $var == 2.2; 35print "ok 1\n"; 36 37print "not " unless $var eq "string"; 38print "ok 2\n"; 39 40$var2 = $var; 41 42$var++; 43 44print "not " unless $var == 3.2; 45print "ok 3\n"; 46 47print "not " unless $var ne "string"; 48print "ok 4\n"; 49 50print "not " unless $var2 == 2.2; 51print "ok 5\n"; 52 53print "not " unless $var2 eq "string"; 54print "ok 6\n"; 55 56my $numstr = "10.2"; 57my $numtmp = sprintf("%d", $numstr); 58$var = dualvar $numstr, ""; 59print "not " unless $var == $numstr; 60print "ok 7\n"; 61 62$var = dualvar 1<<31, ""; 63print "not " unless $var == 1<<31; 64print "ok 8\n"; 65print "not " unless $var > 0; 66print "ok 9\n"; 67 68tie my $tied, 'Tied'; 69$var = dualvar $tied, "ok"; 70print "not " unless $var == 7.5; 71print "ok 10\n"; 72print "not " unless $var eq "ok"; 73print "ok 11\n"; 74 75EOT 76 77package Tied; 78 79sub TIESCALAR { bless {} } 80sub FETCH { 7.5 } 81 82