Skip to Content
Advanced Perl Programming
book

Advanced Perl Programming

by Sriram Srinivasan
August 1997
Intermediate to advanced
432 pages
12h 19m
English
O'Reilly Media, Inc.
Content preview from Advanced Perl Programming

Nested Data Structures

Recall that arrays and hashes contain only scalars; they cannot directly contain another array or hash as such. But considering that references can refer to an array or a hash and that references are scalars, you can see how one or more elements in an array or hash can point to other arrays or hashes. In this section, we will study how to build nested, heterogeneous data structures.

Let us say we would like to track a person’s details and that of their dependents. One approach is to create separate named hash tables for each person:

%sue = (              # Parent
    'name' => 'Sue',
    'age'  => '45');
%john = (             # Child
    'name' => 'John',
    'age'  => '20');
%peggy = (            # Child
    'name' => 'Peggy',
    'age'  => '16');

The structures for John and Peggy can now be related to Sue like this:

@children = (\%john, \%peggy);
$sue{'children'} = \@children;

# Or
$sue{'children'} = [\%john, \%peggy];

Figure 1.2 shows this structure after it has been built.

Mixing scalars with arrays and hashes.

Figure 1-2. Mixing scalars with arrays and hashes.

This is how you can print Peggy’s age, given %sue:

print $sue{children}->[1]->{age};

Implicit Creation of Complex Structures

Suppose the first line in your program is this:

$sue{children}->[1]->{age} = 10;

Perl automatically creates the hash %sue, gives it a hash element indexed by the string children, points that entry to a newly allocated array, whose second element is made to refer to a freshly allocated ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Computer Science & Perl Programming

Computer Science & Perl Programming

Jon Orwant
Beginning Perl

Beginning Perl

Curtis Ovid Poe
Perl Template Toolkit

Perl Template Toolkit

Darren Chamberlain, Andy Wardley, David Cross

Publisher Resources

ISBN: 1565922204Catalog PageErrata