이 정말 차이가 없습니다와 당신이 펄의 트릭의 몇 가지에주의로 하나 개의 파일을 통해 반복. 한 파일의 경우는 모두를 열고 두 파일이 읽기 수행에만 끝에 조건부 루프를 변경하여
use strict;
use warnings;
use English qw(-no_match_vars);
my $filename = 'foo';
open my $file, '<', $filename or die "Failed to open '$filename' $OS_ERROR\n";
while (my $line = <$file>) {
# work with $line
}
close $file;
이 두 파일을 확장 할 수 있습니다를 사용하는 것이 일반적이다. 하지만 catch가 있습니다. Perl은 while 루프의 조건부로 파일 핸들에서 간단한 읽기를 보았을 때 defined()
에 랩핑합니다. 왜냐하면 조건부는 단순한 읽기 이상이므로 수동으로 수행해야하기 때문입니다.
use strict;
use warnings;
use English qw(-no_match_vars);
my $filename1 = 'foo';
my $filename2 = 'bar';
open my $file1, '<', $filename1 or die "Failed to open '$filename1' $OS_ERROR\n";
open my $file2, '<', $filename2 or die "Failed to open '$filename2' $OS_ERROR\n";
my ($line1, $line2);
while (do { $line1 = <$file1>; $line2 = <$file2>; defined($line1) || defined($line2) }) {
# do what you need to with $line1 and $line2
}
close $file1;
close $file2;
어떤 연구? – bzlm
당신은 * NIX 시스템에 있습니까? 'perl -e 'exec @ARGV'paste/tmp/file1/tmp/file2' :) – pilcrow
@pilcrow : 예. * NIX에 있는데 솔루션이 잘 작동했습니다. 나는 나 자신을 생각해 내지 못했다고 나는 믿을 수 없다. 게시하기 전에 조사를했지만 붙여 넣기 명령을 고려하는 것을 잊었습니다. 감사. –