6 use Variable::Temp 'set_temp';
8 use Test::More tests => (9 + 2 * 19) * 2 + 6 * 3;
12 return join ', ', map "$_:$h->{$_}", sort keys %$h;
15 my $aelem_delete_msg = 'Localized extraneous array elements do not reset array length at scope end before perl 5.12';
16 my $aelem_delete_ok = ("$]" >= 5.012);
57 set_temp @y => [ 8, 9, 10 ];
64 set_temp @y => [ 12, 13, 14 ];
66 set_temp @y => [ 15, 16];
76 set_temp @y => [ qw<a b c> ];
79 skip $aelem_delete_msg => 3 unless $aelem_delete_ok;
83 local @y[2, 3] = qw<e f>;
95 is describe(\%z), 'a:1';
97 set_temp %z => { b => 2 };
98 is describe(\%z), 'b:2';
100 is describe(\%z), 'c:3';
102 is describe(\%z), 'c:3, d:4';
104 is describe(\%z), 'a:1';
106 set_temp %z => { a => 5 };
107 is describe(\%z), 'a:5';
109 is describe(\%z), 'a:6';
111 is describe(\%z), 'a:1';
113 set_temp %z => { a => 7, d => 8 };
114 is describe(\%z), 'a:7, d:8';
115 set_temp %z => { d => 9, e => 10 };
116 is describe(\%z), 'd:9, e:10';
118 is describe(\%z), 'a:1';
121 is describe(\%z), '';
123 is describe(\%z), 'a:1';
125 set_temp %z => { a => 11, f => 12 };
126 is describe(\%z), 'a:11, f:12';
129 is describe(\%z), 'a:13, f:12';
131 local @z{qw<f g>} = (14, 15);
132 is describe(\%z), 'a:13, f:14, g:15';
134 is describe(\%z), 'a:13, f:12';
136 is describe(\%z), 'a:11, f:12';
138 is describe(\%z), 'a:1';
188 set_temp @Y => [ 3 ];
197 set_temp @Y => [ 8, 9, 10 ];
204 set_temp @Y => [ 12, 13, 14 ];
206 set_temp @Y => [ 15, 16];
216 set_temp @Y => [ qw<a b c> ];
219 skip $aelem_delete_msg => 3 unless $aelem_delete_ok;
223 local @Y[2, 3] = qw<e f>;
237 local @Y = qw<C D E>;
238 set_temp @Y => [ qw<F> ];
243 set_temp @Y => [ qw<G H I> ];
252 is describe(\%Z), 'a:1';
254 set_temp %Z => { b => 2 };
255 is describe(\%Z), 'b:2';
257 is describe(\%Z), 'c:3';
259 is describe(\%Z), 'c:3, d:4';
261 is describe(\%Z), 'a:1';
263 set_temp %Z => { a => 5 };
264 is describe(\%Z), 'a:5';
266 is describe(\%Z), 'a:6';
268 is describe(\%Z), 'a:1';
270 set_temp %Z => { a => 7, d => 8 };
271 is describe(\%Z), 'a:7, d:8';
272 set_temp %Z => { d => 9, e => 10 };
273 is describe(\%Z), 'd:9, e:10';
275 is describe(\%Z), 'a:1';
278 is describe(\%Z), '';
280 is describe(\%Z), 'a:1';
282 set_temp %Z => { a => 11, f => 12 };
283 is describe(\%Z), 'a:11, f:12';
286 is describe(\%Z), 'a:13, f:12';
288 local @Z{qw<f g>} = (14, 15);
289 is describe(\%Z), 'a:13, f:14, g:15';
291 is describe(\%Z), 'a:13, f:12';
293 is describe(\%Z), 'a:11, f:12';
295 is describe(\%Z), 'a:1';
297 local %Z = (A => 1, B => 2);
298 is describe(\%Z), 'A:1, B:2';
300 is describe(\%Z), 'a:1';
302 local %Z = (A => 3, C => 4);
303 set_temp %Z => { A => 5, D => 6 };
304 is describe(\%Z), 'A:5, D:6';
306 is describe(\%Z), 'a:1';
308 set_temp %Z => { A => 7, E => 8 };
309 local %Z = (A => 9, F => 10);
310 is describe(\%Z), 'A:9, F:10';
312 is describe(\%Z), 'a:1';