On Tue, Jan 12, 2021, at 3:40 PM, Corwin Brust wrote: > I wonder if you could be running into an entry in %ENV with a undef > value? In that case we could end up with an odd number of > hash-elements and worse. Perl will ignore the undef values from > hashes "exploded" within parens, e.g. within the ... part of @x = ( > ... ). When we come to assign the resulting list back into a new hash > we then get "misalignments". That is incorrect. use v5.30.0; my %hash = (a => undef, b => 1); my @array = %hash; my %other = @array; use Data::Dumper; print Dumper(\%other); Output: $VAR1 = { 'a' => undef, 'b' => 1 }; You may be thinking of the common mistake where someone puts a subroutine call into a hash assignment: %hash = ( a => subroutine(), b => 1, ); In that case, subroutine() may return something other than a single element, which could be surprising. If it returns an even number of elements, it also throws b from the key position to the value position. In that case, you generally want to put "scalar" before subroutine. undef is already a scalar value. It does not cause this problem. -- rjbsThread Previous