«Не работает» заставляет нас читать ваши мысли и угадывать, что может сработать. В следующий раз, пожалуйста, опишите проблему с точки зрения вашего ожидаемого или желаемого поведения.
Полагаю, вам нужен отсортированный список городов, в которых есть списки квартир. Если вы хотите избавиться от повторяющихся элементов из списка (, т.е. , вам нужны уникальные элементы списка), используйте элементы в качестве хеш-ключей.
Я бы написал так:
my %aptcities;
foreach my $rec (@data) {
my($type,$city) = split /\|/, $rec;
next unless $type eq "PJ RER Apts to Share";
$city =~ s/(\w+)/\u\L$1/g; # handle WEST WARWICK, for example
++$aptcities{$city};
}
my $n = scalar keys %aptcities;
my $ies = $n == 1 ? "y" : "ies";
print "$n cit$ies:\n",
map " - $_\n", sort keys %aptcities;
Выход:
2 cities:
- Johnston
- Providence