############################################################
# @tableCellData = will be used to store 2 anonymous array
# references.
# @table = will be used to store addresses of array
# *elements* (not of arrays).
############################################################
my (@table, @tableCellData);
#####################################################
# Insert 2 anonymous array references into @table.
# This essentially creates a 2D table, with
# 2 rows / 0 columns.
#####################################################
push @tableCellData, "foo";
push @tableCellData, "foo";
############################################################
# Dynamically expand each anonymous array so that each has
# two elements.
############################################################
$tableCellData[0][0] = "0,0";
$tableCellData[0]1 = "0,1";
$tableCellData1[0] = "1,0";
$tableCellData11 = "1,1";
############################################################
# At this point, at run-time the following (test) line will
# print "1,0" (literally).
############################################################
print "$tableCellData1[0]\n";
##########################################################
# Next, we pouplate the @table array with the both elements
# of the first anonymous array (created above), and also
# with the both elements of the second anonymous array
# (also created above).
##########################################################
push @table, ("$tableCellData[0][0]\n");
push @table, ("$tableCellData[0]1\n");
push @table, ("$tableCellData1[0]\n");
push @table, ("$tableCellData11\n");
##########################################################
# Thus, at this point, at run-time the following (test)
# line will print:
# "0,0" "0,1" "1,0" "1,1" each on their own line.
##########################################################
print "@table\n";
####
print "@table\n";
####
$tableCellData1[0] = "hereIsAnUpdate";
####
push @table, ("$tableCellDataxy");
^^^^^^^^^^^^^^^^^^^^