11 use vars qw(@ary %ary %hash);
42 ok defined($ary{'foo'});
43 ok !defined($ary{'bar'});
45 ok !defined($ary{'foo'});
56 like $@, qr/^Modification of a read/;
59 like $@, qr/^Modification of a read/;
62 # [perl #17753] segfault when undef'ing unquoted string constant
64 like $@, qr/^Can't modify constant item/;
68 # undefing a hash may free objects with destructors that then try to
69 # modify the hash. Ensure that the hash remains consistent
77 $hash{"k$_"} = bless ["k$_"], 'X';
78 $mirror{"k$_"} = "k$_";
88 note("----- DELETE($key) ------");
91 is join('-', sort keys %hash), join('-', sort keys %mirror),
93 is join('-', sort map $_->[0], values %hash),
94 join('-', sort values %mirror), "$key: values";
96 # don't know exactly what we'll get from the iterator, but
97 # it must be a sensible value
98 my ($k, $v) = each %hash;
99 ok defined $k ? exists($mirror{$k}) : (keys(%mirror) == 0),
102 is delete $hash{$key}, undef, "$key: delete";
103 ($k, $v) = each %hash;
104 ok defined $k ? exists($mirror{$k}) : (keys(%mirror) <= 1),
108 if ($c <= $iters * 2) {
109 $hash{"k$c"} = bless ["k$c"], 'X';
110 $mirror{"k$c"} = "k$c";
115 each %hash; # set eiter
118 is scalar keys %hash, 0, "hash empty at end";
119 is $events, ('DE' x ($iters*2)), "events";
120 my ($k, $v) = each %hash;
121 is $k, undef, 'each undef at end';
124 # part of #105906: inlined undef constant getting copied
125 BEGIN { $::{z} = \undef }
129 is $_[0], $_[1], 'undef constants preserve identity';
134 DESTROY { $messages .= 'destroyed ' }
138 my $t = bless [], 'Thingie';
140 }->(), $messages .= 'after ';
145 is $messages, 'destroyed after ', 'undef $scalar frees refs immediately';
148 # this will segfault if it fails
150 sub PVBM () { 'foo' }
151 { my $dummy = index 'foo', PVBM }