use warnings;
-print "1..42\n";
+print "1..47\n";
# type coersion on assignment
$foo = 'foo';
print *{*x{GLOB}} eq "*main::STDOUT" ? "ok 22\n" : "not ok 22\n";
print {*x{IO}} "ok 23\n";
+{
+ my $warn;
+ local $SIG{__WARN__} = sub {
+ $warn .= $_[0];
+ };
+ my $val = *x{FILEHANDLE};
+ print {*x{IO}} ($warn =~ /is deprecated/ ? "ok 24\n" : "not ok 24\n");
+
+}
+
# test if defined() doesn't create any new symbols
{
}
+# [ID 20010526.001] localized glob loses value when assigned to
+
+$j=1; %j=(a=>1); @j=(1); local *j=*j; *j = sub{};
+
+print $j == 1 ? "ok 41\n" : "not ok 41\n";
+print $j{a} == 1 ? "ok 42\n" : "not ok 42\n";
+print $j[0] == 1 ? "ok 43\n" : "not ok 43\n";
+
# does pp_readline() handle glob-ness correctly?
{
}
{
- my $warn;
- local $SIG{__WARN__} = sub {
- $warn .= $_[0];
- };
- my $val = *x{FILEHANDLE};
- print {*x{IO}} ($warn =~ /is deprecated/ ? "ok 42\n" : "not ok 42\n");
-
+ my $w = '';
+ $SIG{__WARN__} = sub { $w = $_[0] };
+ sub abc1 ();
+ local *abc1 = sub { };
+ print $w eq '' ? "ok 45\n" : "not ok 45\n# $w";
+ sub abc2 ();
+ local *abc2;
+ *abc2 = sub { };
+ print $w eq '' ? "ok 46\n" : "not ok 46\n# $w";
+ sub abc3 ();
+ *abc3 = sub { };
+ print $w =~ /Prototype mismatch/ ? "ok 47\n" : "not ok 47\n# $w";
}
__END__
-ok 41
+ok 44