Μια όπως και στην περίπτωση των Arrays, μια Hash δεν αποτελεί απλώς ένα σύνολο από scalar μεταβλητές, αλλά μπορεί να περιέχει ως στοιχεία της άλλες πλήρεις arrays. Για παράδειγμα:
my %AinH = (
Skywalkers => ['Luke', 'Anakin', 'Shmi' ],
Jedis => ['Yoda', 'Obi Wan Kenobi'],
Darths => ['Sidious', 'Maul', 'Vader']
);
Εδώ τα keys είναι Skywalkers, Jedis, Darths και values τα περιεχόμενα των arrays.
Για την προσθήκη μιας ακόμη array θα δηλώσουμε:
$AinH{Droids} = [ 'C-3PO', 'R2-D2', 'FX-7'];
Για την προσθήκη ενός στοιχείου σε μια ήδη υπάρχουσα array έχουμε:
my $temp= 'new member';
my %AinH = (
Skywalkers => ['Luke', 'Anakin', 'Shmi' ],
Jedis => ['Yoda', 'Obi Wan Kenobi'],
Darths => ['Sidious', 'Maul', 'Vader']
);
push @{$AinH{Skywalkers}}, $temp;
και θα έχουμε πλέον:
Skywalkers => ['Luke', 'Anakin', 'Shmi', 'new member' ]
Η εκτύπωση
print "$AinH{Jedis}[1] \n";
print "$AinH{Droids}[0] \n";
μας δίνει:
Obi Wan Kenobi
C-3PO
Για να τυπώσουμε όλο το περιεχόμενο μιας hash of arrays όπου κάθε array περιέχει 3 elements θα δώσουμε:
my @keys = keys(%contents);
foreach my $key (@keys)
{
print "$key\n";
print "$contents{$key}[0]\n";
print "$contents{$key}[1]\n";
print "$contents{$key}[2]\n"
Το print %contents δεν θα λειτουργήσει σωστά (ως values θα τυπωθούν οι references των arrays)
Για να πάρουμε το περιεχόμενο μιας μόνο από τις arrays που περιέχει η hash θα δηλώσουμε:
my $test = $AinH{Jedis};
Αυτό μας δίνει τη reference της array
my @test2 = @$test;
print "@test2\n";
Η εκτύπωση μας δίνει:
Yoda Obi Wan Kenobi
Τέλος για να αφαιρέσουμε το περιεχόμενο ενός στοιχείου μιας array που βρίσκεται μέσα σε hash θα δηλώσουμε:
my $last_array_element = pop @{$AinH{Jedis} }
Αυτό αφαιρέσει την τιμή Obi Wan Kenobi