require 'test.pl';
use strict qw(refs subs);
-plan (96);
+plan(102);
# Test glob operations.
$BAZ = "hit";
is ($$$FOO, 'hit');
+# test that ref(vstring) makes sense
+my $vstref = \v1;
+is (ref($vstref), "VSTRING", "ref(vstr) eq VSTRING");
+like ( $vstref, qr/VSTRING\(0x[0-9a-f]+\)/, '\vstr is also VSTRING');
+
# Test references to real arrays.
my $test = curr_test();
is ($$name1, undef, 'Nothing before we start');
is ($$name2, undef, 'Nothing before we start');
- $$name2 = "Yummy";
+ $$name1 = "Yummy";
is ($$name1, "Yummy", 'Accessing via the correct name works');
- local $TODO = "NUL bytes truncate in symrefs";
is ($$name2, undef,
'Accessing via a different NUL-containing name gives nothing');
}
"deref of undef from list slice fails" );
}
+# test dereferencing errors
+{
+ eval q/ ${*STDOUT{IO}} /;
+ like($@, qr/Not a SCALAR reference/);
+ eval q/ @{*STDOUT{IO}} /;
+ like($@, qr/Not an ARRAY reference/);
+ eval q/ %{*STDOUT{IO}} /;
+ like($@, qr/Not a HASH reference/);
+ eval q/ &{*STDOUT{IO}} /;
+ like($@, qr/Not a CODE reference/);
+}
+
# Bit of a hack to make test.pl happy. There are 3 more tests after it leaves.
$test = curr_test();
curr_test($test + 3);