我有以下文件:
10001;02/07/98;;PI;M^12/12/59^F^^SP^09/12/55
;;;;;M1|F1|SP1;11;10;12;10;12;11;1.82;D16S539
;;;;;M1|F1|SP1;8;8;8;8;10;8;3.45;D7S820
;;;;;M1|F1|SP1;14;12;12;11;14;11;1.57;D13S317
;;;;;M1|F1|SP1;12;12;13;12;13;8;3.27;D5S818
;;;;;M1|F1|SP1;12;12;12;12;12;8;1.51;CSF1PO
.
.
.
当我运行下面的代码时,我会为我的文件的每一行打印一个$indiv[0]
值(在这种情况下为M1M1M1M1M1M1...
)。我只想使用其中一个值,它可能是第一个,最后一个,等等。我知道我可以在循环外使用print $indiv[0]
并获得最后一个,但事实并非如此,{{1这里只是一个例子,我需要在循环中使用该值进行其他计算。
那么,我怎么才能只访问一个值(只有一行),将它保持在while循环中?
提前致谢!
print
答案 0 :(得分:2)
只需输入一个常用的习惯用法来过滤重复项。
#!/usr/bin/perl
use warnings;
use strict;
my %seen;
while (<>) {
chomp;
my @field = split /;/;
if ($field[0] eq '') {
my ($foo) = split /\|/, $field[5];
if (!$seen{$foo}++) {
print "$foo\n";
}
}
}