Используйте массив для первого и 2-мерный хеш для второго. Первый должен выглядеть примерно так:
$list[0] # row 1 - the value is "A B 1"
А хеш вроде:
$hash{A}{A} # the intersection of A and A - the value is 0
Понимание того, как решить проблему, составляет для меня около 75% умственного сражения. Я не буду вдаваться в подробности о том, как печатать хеш или массив, потому что это легко, и я также не совсем понимаю, как вы хотите, чтобы он печатался, или сколько вы хотите печатать. Но преобразование массива в хеш должно выглядеть примерно так:
foreach (@list) {
my ($letter1, $letter2, $value) = split(/ /);
$hash{$letter1}{$letter2} = $value;
}
По крайней мере, я думаю, это то, что вы ищете. Если вы действительно хотите, вы можете использовать регулярное выражение, но это, вероятно, излишне просто для извлечения 3 значений из строки.
РЕДАКТИРОВАТЬ: Конечно, вы можете отказаться от @list
и просто собрать хеш прямо из файла. Но это ваша работа, а не моя.