use strict; use warnings; my @AoA; while () { chomp; push @AoA, [ split '' ]; } for my $i ( 0 .. @AoA - 1 ) { for my $j ( 0 .. @{ $AoA[0] } - 1 ) { print "String $i; Char $j: '$AoA[$i]->[$j]'\n" } print "\n"; } __DATA__ String 1. Another 2 abcdefghi #### String 0; Char 0: 'S' String 0; Char 1: 't' String 0; Char 2: 'r' String 0; Char 3: 'i' String 0; Char 4: 'n' String 0; Char 5: 'g' String 0; Char 6: ' ' String 0; Char 7: '1' String 0; Char 8: '.' String 1; Char 0: 'A' String 1; Char 1: 'n' String 1; Char 2: 'o' String 1; Char 3: 't' String 1; Char 4: 'h' String 1; Char 5: 'e' String 1; Char 6: 'r' String 1; Char 7: ' ' String 1; Char 8: '2' String 2; Char 0: 'a' String 2; Char 1: 'b' String 2; Char 2: 'c' String 2; Char 3: 'd' String 2; Char 4: 'e' String 2; Char 5: 'f' String 2; Char 6: 'g' String 2; Char 7: 'h' String 2; Char 8: 'i' #### $AoA[$i]->[$j] ^ ^ ^ | | | | | + - Character number in string | + - Dereferencing arrow + - String number in array