Random_Walk has asked for the wisdom of the Perl Monks concerning the following question:
Good $localtime fellow monks
I have a large piece of code, and while debugging, the output routine is giving me the above message, lots. I am passing it an array of hasrefs (alerts basicaly), and trying to sort by the msg value in the hashrefs. I have distilled the problem to a one-liner. TBH, I expected the problem to drop out elsewhere in my code, surprised I see it in this:
perl -wle '@r=({k=>"r"},{k=>"s"},{k=>"t"});print $_->{k} for sort { $_ +->{k} cmp $_->{k} } @r' Use of uninitialized value in string comparison (cmp) at -e line 1. Use of uninitialized value in string comparison (cmp) at -e line 1. Use of uninitialized value in string comparison (cmp) at -e line 1. Use of uninitialized value in string comparison (cmp) at -e line 1. Use of uninitialized value in string comparison (cmp) at -e line 1. Use of uninitialized value in string comparison (cmp) at -e line 1. r s t
I get the same result if I deref it this way to:
perl -wle '@r=({k=>"r"},{k=>"s"},{k=>"t"});print $_->{k} for sort { $$_{k} cmp $$_{k} } @r'Why does this happen, where is it finding unitialised values? and of course, how can I fix it?
Cheers,
R.
Pereant, qui ante nos nostra dixerunt!
Back to
Seekers of Perl Wisdom