A couple of thoughts:
1) As a stylistic preference, whenever I construct
a nested data variable in perl, I always start
with a scalar variable at the top, like '$dataroot'.
I like
the way it looks and it's flexible, since a scalar can hold
a reference to anything. You'll notice that
Data::Dumper does the same thing when it spits
out ($VAR1 $VAR2 etc..) as the topmost 'container'
of the output.
2) Using the style mentioned above helps me focus
more on the *meaning* of what it is I am really
storing, helps keeps things readable.
Given this style, your example becomes this
slightly different code ...
use strict;
use warnings;
my $chapters = [
{
title => 'Basic',
page => [
{ paragraph => 'lesson1'},
{ paragraph => 'lesson2'},
],
},
{
title => 'Advanced',
page => [
{ paragraph => 'lesson3'},
{ paragraph => 'lesson4'},
],
},
];
### since we started with a scalar to hold
### an anonymous array ref, we have to
### use the little 'arrow' notation
print $chapters->[0]{title}; ### basic
print "\n---------------\n";
print $chapters->[1]{title}; ### advanced
print "\n---------------\n";
print $chapters->[1]{page}[0]{paragraph}; ### lesson3
print "\n---------------\n";
print $chapters->[1]{page}[1]{paragraph}; ### lesson4
print "\n---------------\n";
-
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.