#!/user/bin/perl use warnings; use strict; my (@A, $A); # single, top level array of references my (@B0, $B0); # mid level array of references for data set index_0 my (@B1, $B1); # mid level array of references for data set index_1 my (@Ct0, $Ct0); # low level array storing text for data set index_0 my (@Ct1, $Ct1); # low level array storing text for data set index_1 my %Ch0; # low level hash storing key-value pairs for data set index_0 my %Ch1; # low level hash storing key-value pairs for data set index_1 print "\nSAMPLE PROGRAM FOR PERLMONKS QUESTION\n"; $A[0] = \@B0; # array B0 contains references for data set index_0 $A[1] = \@B1; # array B1 contains references for data set index_1 $B0[0] = \@Ct0; # array Ct0 contains text data for data set index_0 $B1[0] = \@Ct1; # array Ct1 contains text data for data set index_1 $B0[1] = \%Ch0; # hash Ch0 has key-value pairs for data set index_0 $B1[1] = \%Ch1; # hash Ch1 has key-value pairs for data set index_1 &fetch_data(\@A); &process_data(\@A); &store_data(\@A); sub fetch_data { # populating storage for data set index_0 ${${${$_[0]}[0]}[0]}[0] = 10; ${${${$_[0]}[0]}[0]}[1] = 11; ${${${$_[0]}[0]}[0]}[2] = 12; ${${${$_[0]}[0]}[1]}{"dog"} = 15; ${${${$_[0]}[0]}[1]}{"cat"} = 16; ${${${$_[0]}[0]}[1]}{"bird"} = 17; # populating storage for data set index_1 ${${${$_[0]}[1]}[0]}[0] = 20; ${${${$_[0]}[1]}[0]}[1] = 21; ${${${$_[0]}[1]}[0]}[2] = 22; ${${${$_[0]}[1]}[1]}{"dog"} = 25; ${${${$_[0]}[1]}[1]}{"cat"} = 26; ${${${$_[0]}[1]}[1]}{"bird"} = 27; } sub process_data { # change two items in data set index_1 just to prove I can ${${${$_[0]}[1]}[0]}[2] = 24; ${${${$_[0]}[1]}[1]}{"bird"} = 29; } sub store_data { # printing to screen is good "storage" for a sample program print "TEXT: $_[0]->[0][0][0]\n"; print "TEXT: $_[0]->[0][0][1]\n"; print "TEXT: $_[0]->[0][0][2]\n"; print "\n"; print "HASH: $_[0]->[0][1]{\"dog\"}\n"; print "HASH: $_[0]->[0][1]{\"cat\"}\n"; print "HASH: $_[0]->[0][1]{\"bird\"}\n"; print "\n"; print "TEXT: $_[0]->[1][0][0]\n"; print "TEXT: $_[0]->[1][0][1]\n"; print "TEXT: $_[0]->[1][0][2]\n"; print "\n"; print "HASH: $_[0]->[1][1]{\"dog\"}\n"; print "HASH: $_[0]->[1][1]{\"cat\"}\n"; print "HASH: $_[0]->[1][1]{\"bird\"}\n"; }