Subject: PDSC Recipes for Lists of Lists (part 1 of 5)
From: Tom Christiansen <[email-masked]>
Date: 2 Oct 1995 01:50:33 GMT
Newsgroups: comp.lang.perl.misc,comp.lang.perl.announce

PDSC: The Perl Data Structures Cookbook 
		    part 1 of 5: Lists of Lists

		    by Tom Christiansen 
		    <[email-masked]>

		    release 0.1 (untested, may have typos)
		    Sunday, 1 October 1995

Declaration of a LIST OF LISTS:

    @LoL = ( 
	   [ "fred", "barney" ],
	   [ "george", "jane", "elroy" ],
	   [ "homer", "marge", "bart" ],
         );

Generation:

    # reading from file
    while ( <> ) {
	push @LoL, [ split ];
    }

    # calling a function 
    for $i ( 1 .. 10 ) {
	$LoL[$i] = [ somefunc($i) ];
    }

    # using temp vars
    for $i ( 1 .. 10 ) {
	@tmp = somefunc($i);
	$LoL[$i] = [ @tmp ];
    }

    # add to an existing row
    push @{ $LoL[0] }, "wilma", "betty";

Access and Printing:

    # one element
    $LoL[0][0] = "Fred";

    # another element
    $LoL[1][1] =~ s/(\w)/\u$1/;

    # print the whole thing with refs
    for $aref ( @LoL ) {
	print "\t [ @$aref ],\n";
    }

    # print the whole thing with indices
    for $i ( 0 .. $#LoL ) {
	print "\t [ @{$LoL[$i]} ],\n";
    }

    # print the whole thing one at a time
    for $i ( 0 .. $#LoL ) {
	for $j ( 0 .. $#{$LoL[$i]} ) {
	    print "elt $i $j is $LoL[$i][$j]\n";
	}
    }