--- Table.pm.bak 2002-06-27 18:11:40.000000000 -0700 +++ Table.pm 2003-01-04 20:33:33.000000000 -0800 @@ -232,27 +232,31 @@ # data. my @data = (); my @returnData = (); + + my @rIters = ($r1 <= $r2) ? $r1..$r2 : reverse $r2..$r1; + my @cIters = ($c1 <= $c2) ? $c1..$c2 : reverse $c2..$c1; + # Determine if this is a single column. If not, then return data in # row format. my $value; if ($c1 == $c2) { - for my $r ($r1..$r2) { + for my $r (@rIters) { $value = $selectedTable[$r][$c1]; push ( @data, $selectedTable[$r][$c1] ) if (defined $value); } push (@returnData, [@data]); } else { if ($r1 == $r2) { - for my $c ($c1..$c2) { + for my $c (@cIters) { $value = $selectedTable[$r1][$c]; push ( @data, $selectedTable[$r1][$c] ) if (defined $value); } push (@returnData, [@data]); } else { # More than one column so get each row of data - for my $r ($r1..$r2) { + for my $r (@rIters) { @data = (); - for my $c ($c1..$c2) { + for my $c (@cIters) { $value = $selectedTable[$r][$c]; push ( @data, $selectedTable[$r][$c] ) if (defined $value); } @@ -305,9 +309,12 @@ my @returnData = (); my $value = 0; - for my $c ( $c1..$c2 ) { + my @cIters = ($c1 <= $c2) ? $c1..$c2 : reverse $c2..$c1; + my @rIters = ($r1 <= $r2) ? $r1..$r2 : reverse $r2..$r1; + + for my $c ( @cIters ) { my @data = (); - for my $r ( $r1..$r2 ) { + for my $r ( @rIters ) { $value = $selectedTable[$r][$c]; push ( @data, $selectedTable[$r][$c] ) if( defined $value ); }