in reply to Split into 2-D Array

This is how I'd split the arguments up. Comments in the code should provide enough explanation.
my $ArgV = "a1:b1:c1:d1;:a2:b2:c2;:a3;:a4;:a5:b5;:a6:b6:c6;:a7:b7"; my @Array; my ( $ThisRow, $ThisCol ); # Split data into rows on the ';' character. $ThisRow = 0; foreach my $Row ( split ( ';', $ArgV ) ) { # Split the columns on the ':' character. $ThisCol = 0; foreach my $Element ( split ( ':', $Row ) ) { # Skip blank elements; then insert data into the appropriate # Row, Column element then move on to the next column. next if ( $Element eq "" ); $Array[ $ThisRow ][ $ThisCol++ ] = $Element; } # Move on to the next row. $ThisRow++; } # Now print out the array to show that we've got # the right stuff in the right spot. for ( my $RowNow = 0; defined ( $Array[ $RowNow ] ); $RowNow++ ) { for ( my $ColNow = 0; defined ( $Array[ $RowNow ][ $ColNow ] ); $Col +Now++ ) { print "[ $RowNow ][ $ColNow ]: $Array[ $RowNow ][ $ColNow ]. "; } print "\n"; }

"Excellent. Release the hounds." -- Monty Burns.