6 use Variable::Temp 'temp';
12 plan skip_all => 'perl 5.14 required to use lvalue temp()';
14 plan tests => (9 + 2 * 19) * 2 + 6 * 3;
20 return join ', ', map "$_:$h->{$_}", sort keys %$h;
23 my $aelem_delete_msg = 'Localized extraneous array elements do not reset array length at scope end before perl 5.12';
24 my $aelem_delete_ok = ("$]" >= 5.012);
65 temp @y = [ 8, 9, 10 ];
72 temp @y = [ 12, 13, 14 ];
84 temp @y = [ qw<a b c> ];
87 skip $aelem_delete_msg => 3 unless $aelem_delete_ok;
91 local @y[2, 3] = qw<e f>;
103 is describe(\%z), 'a:1';
105 temp %z = { b => 2 };
106 is describe(\%z), 'b:2';
108 is describe(\%z), 'c:3';
110 is describe(\%z), 'c:3, d:4';
112 is describe(\%z), 'a:1';
114 temp %z = { a => 5 };
115 is describe(\%z), 'a:5';
117 is describe(\%z), 'a:6';
119 is describe(\%z), 'a:1';
121 temp %z = { a => 7, d => 8 };
122 is describe(\%z), 'a:7, d:8';
123 temp %z = { d => 9, e => 10 };
124 is describe(\%z), 'd:9, e:10';
126 is describe(\%z), 'a:1';
129 is describe(\%z), '';
131 is describe(\%z), 'a:1';
133 temp %z = { a => 11, f => 12 };
134 is describe(\%z), 'a:11, f:12';
137 is describe(\%z), 'a:13, f:12';
139 local @z{qw<f g>} = (14, 15);
140 is describe(\%z), 'a:13, f:14, g:15';
142 is describe(\%z), 'a:13, f:12';
144 is describe(\%z), 'a:11, f:12';
146 is describe(\%z), 'a:1';
205 temp @Y = [ 8, 9, 10 ];
212 temp @Y = [ 12, 13, 14 ];
224 temp @Y = [ qw<a b c> ];
227 skip $aelem_delete_msg => 3 unless $aelem_delete_ok;
231 local @Y[2, 3] = qw<e f>;
245 local @Y = qw<C D E>;
251 temp @Y = [ qw<G H I> ];
260 is describe(\%Z), 'a:1';
262 temp %Z = { b => 2 };
263 is describe(\%Z), 'b:2';
265 is describe(\%Z), 'c:3';
267 is describe(\%Z), 'c:3, d:4';
269 is describe(\%Z), 'a:1';
271 temp %Z = { a => 5 };
272 is describe(\%Z), 'a:5';
274 is describe(\%Z), 'a:6';
276 is describe(\%Z), 'a:1';
278 temp %Z = { a => 7, d => 8 };
279 is describe(\%Z), 'a:7, d:8';
280 temp %Z = { d => 9, e => 10 };
281 is describe(\%Z), 'd:9, e:10';
283 is describe(\%Z), 'a:1';
286 is describe(\%Z), '';
288 is describe(\%Z), 'a:1';
290 temp %Z = { a => 11, f => 12 };
291 is describe(\%Z), 'a:11, f:12';
294 is describe(\%Z), 'a:13, f:12';
296 local @Z{qw<f g>} = (14, 15);
297 is describe(\%Z), 'a:13, f:14, g:15';
299 is describe(\%Z), 'a:13, f:12';
301 is describe(\%Z), 'a:11, f:12';
303 is describe(\%Z), 'a:1';
305 local %Z = (A => 1, B => 2);
306 is describe(\%Z), 'A:1, B:2';
308 is describe(\%Z), 'a:1';
310 local %Z = (A => 3, C => 4);
311 temp %Z = { A => 5, D => 6 };
312 is describe(\%Z), 'A:5, D:6';
314 is describe(\%Z), 'a:1';
316 temp %Z = { A => 7, E => 8 };
317 local %Z = (A => 9, F => 10);
318 is describe(\%Z), 'A:9, F:10';
320 is describe(\%Z), 'a:1';