Хотя ответ @ DVK - это путь, по которому я бы решил общую проблему такого рода, мне интересно, если ваш инструктор предназначил для вас использовать массивы и регулярные выражения для решения этой проблемы, поскольку у вас явно есть матрица.
Код лаконичен и не прокомментирован специально.
#!/usr/bin/perl
use strict; use warnings;
my @matrix;
my ($i_max, $j_max) = (0, 0);
while ( my $path = <DATA> ) {
next unless $path =~ m{/intf([0-9])/syst([0-9])/\w+};
my ($i, $j) = map $_ - 1, $1, $2;
$matrix[$i][$j] = 1;
$i_max = $i if $i > $i_max;
$j_max = $j if $j > $j_max;
}
print_row(['' => map "syst$_", 1 .. $j_max + 1]);
for my $i ( 0 .. $i_max ) {
print_row([
'intf' . ($i + 1), map {
my $v = $matrix[$i][$_];
defined($v) ? 'x' : '';
} 0 .. $j_max
]);
}
sub print_row { print join("\t", @{ $_[0] }), "\n" }
__DATA__
/intf1/syst1/some1
/intf3/syst4/some111
/intf1/syst2/some2
/intf2/syst1/some1
/intf2/syst3/some9
/intf4/syst2/sdsds