[Melbourne-pm] Weirdness with references

Scott Penrose scottp at dd.com.au
Wed Sep 6 18:42:20 PDT 2006


Very odd...

A quick note to anyone who tries this - it actually on dies if you  
"use strict";

>     my %empty;
>     print %{ $empty{'fake'} }

Yep - makes sense, you can't use an undef or nothing as a hashref -  
must be a real hashref.

>     my %empty;
>     print values %{ $empty{'fake'} }

Nope - makes no sense

But here is my fav !

THIS WORKS

	use warnings;
	use strict;
	my %empty;
	print values %{ $empty{'fake'} };
	print %{ $empty{'fake'} };

THIS FAILS

	use warnings;
	use strict;
	my %empty;
	print %{ $empty{'fake'} };
	print values %{ $empty{'fake'} };

so then try this...

	use warnings;
	use strict;
	use Data::Dumper;
	my %empty;
	print Dumper(\%empty);
	print values %{ $empty{'fake'} };
	print Dumper(\%empty);
	print %{ $empty{'fake'} };

And you see what is happening !

	$VAR1 = {};
	$VAR1 = {
        	   'fake' => {}
         };

So the "values" sort of "forces" it to be a hashref - I guess that in  
that case it returns an lvalue or similar and as values must be on a  
hash it makes it so... maybe?

Scott
-- 
* - *  http://www.osdc.com.au - Open Source Developers Conference * - *
Scott Penrose
Anthropomorphic Personification Expert
http://search.cpan.org/search?author=SCOTT
scott at cpan.org

Dismaimer: While every attempt has been made to make sure that this  
email only contains zeros and ones, there has been no effort made to  
guarantee the quantity or the order.

Please do not send me Word or PowerPoint attachments.
See http://www.gnu.org/philosophy/no-word-attachments.html

Microsoft is not the answer. It's the question. And the answer is no.




More information about the Melbourne-pm mailing list