That code (and several other examples) don't work quite like the request:
$hash{red}{green}{brown} = 1
They do this instead:
$hash{red}{green}{brown} = { }
That inner-most key makes a lot of the foreach solutions kind of ugly because the last key must be treated specially -- unless there's a way to transmogrify a hash ref into a scalar ref? Here's a short reverse foreach that uses globs to solve the corner case:
my @array = qw(red green brown);
use vars qw(%hash);
foreach (reverse @array) {
*hash = { $_ => (%hash) ? \%hash : 1 }
}
The lexical version is more ugly and a lot less efficient:
my @array = qw(red green brown);
my %hash;
foreach (reverse @array) {
%hash = ( $_ => (%hash) ? { %hash } : 1 )
}
-
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
or How to display code and escape characters
are good places to start.
|