【发布时间】:2010-05-13 00:21:59
【问题描述】:
我是一名新手 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
【问题讨论】: