Итак, у меня есть некоторые данные в форме с разделителями табуляции:
Windows Department1 Enterprise
Windows Department1 Home
Linux Department2 Santiago
Windows Department1 Professional
Windows Department1 Enterprise
Windows Department2 Enterprise
В этом случае мне нужно сначала сопоставить первый столбец и получить количество каждого значения во 2-м и 3-м столбцах. Сортировать по количеству точных совпадений.
Итак, в итоге что-то вроде:
Windows Department1 Enterprise = 2
Windows Department2 Professional = 1
Linux Department2 Santiago = 1
Windows Department3 Home = 1
Windows Department2 Enterprise = 1
Итак, я перепробовал множество вещей, причем это была последняя попытка, и я получил много разных нежелательных результатов:
use strict;
use warnings;
my %seen;
my $count = 0;
while (<INPUTFILE>) {
my ($app,$dep,$name) = split(/\t/,$_);
if ($app.$dep.$name eq 'Windows.Department1.Professional') {
unless ($seen{$app.$dep.name}++) {
$count++;
}
}
}
print $app . " " . $dep . " " . $name . " " . $count++
Но это не делает удаленно то, что я хочу. и просто печатает последние значения со счетчиком. Я хочу один раз установить $app
, а затем сопоставить второе и третье значения, чтобы получить счет. Кроме этого, мне нужно вручную сопоставить каждый элемент с eq
, и в приведенном выше примере удаленно не показано количество данных в файле, так что это станет проблемой. Буду очень признателен за любую помощь.