Я начинающий программист Perl и хотел бы помочь. У меня есть список массивов, который я пытаюсь разделить каждый элемент на основе канала на два скалярных элемента. Оттуда я хотел бы выделить только строки, которые читают «PJ RER Apts to Share» в качестве первого элемента. Затем я хочу распечатать второй элемент только один раз при подсчете каждый раз, когда элемент появляется. Я написал фрагмент кода ниже, но не могу понять, где я ошибаюсь. Это может быть что-то маленькое, что я просто пропускаю. Любая помощь будет принята с благодарностью.
## CODE ##
my @data = ('PJ RER Apts to Share|PROVIDENCE',
'PJ RER Apts to Share|JOHNSTON',
'PJ RER Apts to Share|JOHNSTON',
'PJ RER Apts to Share|JOHNSTON',
'PJ RER Condo|WEST WARWICK',
'PJ RER Condo|WARWICK');
foreach my $line (@data) {
$count = @data;
chomp($line);
@fields = split(/\|/,$line);
if (($fields[0] =~ /PJ RER Apts to Share/g)){
@array2 = $fields[1];
my %seen;
my @uniq = grep { ! $seen{$_}++ } @array2;
my $count2 = scalar(@uniq);
print "$array2[0] ($count2)","\n"
}
}
print "$count","\n";
## OUTPUT ##
PROVIDENCE (1)
JOHNSTON (1)
JOHNSTON (1)
JOHNSTON (1)
6