탭으로 구분 된 여러 데이터 파일이 있습니다. 이 데이터 파일의 특정 열 (25 열)의 모든 고유 값을 추출하여 추가 처리를 위해 출력 파일에이 값을 기록해야합니다. Perl에서 어떻게 할 수 있습니까? 동일한 폴더에서 여러 파일을 고려해야한다는 것을 기억하십시오.Perl의 여러 파일에서 고유 값 추출
편집 : 지금까지 해본 코드는 이와 같습니다.
#!/usr/bin/perl
use warnings;
use strict;
my @hhfilelist = glob "*.hh3";
for my $f (@hhfilelist) {
open F, $f || die "Cannot open $f: $!";
while (<F>) {
chomp;
my @line = split /\t/;
print "field is $line[24]\n";
}
close (F);
}
질문은 어떻게하면 각 파일의 각 줄을 읽을 때 고유 한 값의 해시/배열을 효율적으로 만들 수 있습니까? 또는 전체 배열을 채우고 중복을 제거하면 더 빠릅니까?
@davorg 잘 난 기본적인 문제 자체에 붙어있어. 먼저 여러 파일을 한 번에 하나씩 읽는 방법. 다음 파일은 각 파일을 읽을 때 고유 한 값만 고려합니다. Find :: File 패키지를 사용할 수 있습니다. – sfactor
@DVK yes는 이미 Perl에있는 더 큰 코드의 일부입니다. – sfactor
보통 X로 구분 된 파일을 구문 분석 할 때 split을 사용해서는 안됩니다. 가장 사소한 경우를 제외하고는 충분하지 않습니다. 예 : 필드 안에있는 X (분리 기호) 나 따옴표로 묶인 필드는 처리하지 않습니다. 평범한 경우에는 작동하지만, glob() 함수를 성공적으로 사용했습니다. – DVK