Hey fellow monks,
Please help enlighten me on the behaviour of "%$hash{'output'}" in the snippet of code below
my %hash = (
'left_fills' => 'Name: a7',
'main_title' => 'Main Area'
);
# call do_output
# Simplifed to pass just one hash value
do_output(
output => \%hash,
);
sub do_output {
my %hash = @_;
my $output = $hash{'output'} || 0;
# Dumped 1 (OK)
print Dumper($output);
# Dumped 2 (OK)
print Dumper(%$output);
# Dumped 3 (OK)
print Dumper($hash{'output'});
# Dumped 4 (Script died)
print Dumper(%$hash{'output'});
}
# print Dumper($output);
$VAR1 = { 'left_fills' => 'Name: a7', 'main_title' => 'Main Area' };
# print Dumper(%$output);
$VAR1 = 'left_fills'; $VAR2 = 'Name: a7'; $VAR3 = 'main_title'; $VAR4
+= 'Main Area';
# print Dumper($hash{'output'});
$VAR1 = { 'left_fills' => 'Name: a7', 'main_title' => 'Main Area' };
# print Dumper(%$hash{'output'});
Error: Global symbol "$hash" requires explicit package named at test.p
+l line...
The dumped output of "$hash{'output'}" is identical to that of "$output". But why does dumping "%$hash{'output'}" cause the script to die?
When I did a "ref" of both "$output" and '$hash{'output'}", the result is HASH for both. I'm puzzled why their behaviour isn't exactly identical.
As usual, thanks in advance :)
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|