&PL_sv_undef is an undefined value, but you, unfortunately, cannot use it naively in hashes and arrays. Quoting perlguts :
Generally, if you want to store the undefined value in AV or HV, you should not use & PL_sv_undef, but rather create a new undefined value using the newSV function, for example:
av_store( av, 42, newSV(0) ); hv_store( hv, "foo", 3, newSV(0), 0 );
source share