#!/usr/local/bin/perl -w use Data::Dumper; print "Case 1: non existent\n"; exists $x->{'y'}->{'z'}; print Dumper $x; print "Case 2: undef\n"; $x = undef; exists $x->{'y'}->{'z'}; print Dumper $x; print "Case 3: hashref\n"; $x = {}; exists $x->{'y'}->{'z'}; print Dumper $x; print "Case 4: stopper scalar\n"; $x = 'stopper'; exists $x->{'y'}->{'z'}; print Dumper $x; print Dumper \%{$x}; print "Case 5: Even assignment won't do, and won't trigger warning or +runtime error!\n"; $x = 'stop2'; $x->{'y'}->{'z'} = 'something'; print Dumper $x; print Dumper \%{$x}; print "Case 6: use strict is your friend :)\n"; eval { use strict 'refs'; $x = 'stop3'; $x->{'y'}->{'z'} = 'something else'; print Dumper $x; }; $@ and print $@; ---------------- Case 1: non existent $VAR1 = { 'y' => {} }; Case 2: undef $VAR1 = { 'y' => {} }; Case 3: hashref $VAR1 = { 'y' => {} }; Case 4: stopper scalar $VAR1 = 'stopper'; $VAR1 = { 'y' => {} }; Case 5: Even assignment won't do, and won't trigger warning or runtime + error! $VAR1 = 'stop2'; $VAR1 = { 'y' => { 'z' => 'something' } }; Case 6: use strict is your friend :) Can't use string ("stop3") as a HASH ref while "strict refs" in use at + ./abcd.pl line 36.
------
We are the carpenters and bricklayers of the Information Age.
Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.
In reply to Re: Autovivification and soft refs
by dragonchild
in thread Autovivification and soft refs
by calin
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |