이 질문은 코드에 대한 변경 사항이 텍스트 파일에 출력하는 값에 영향을 미치지 않도록해야합니다. 이상적으로, 나는 서브 파일을 두 개의 파일 이름을 취하고 내용이 동일한지 아닌지 공백 여부에 따라 return 1
또는 return 0
을 사용합니다.Perl을 사용하여 두 파일의 내용이 동일한 지 어떻게 판단 할 수 있습니까?
텍스트 처리가 Perl의 forté라는 점을 감안할 때 두 파일을 비교하고 그 파일이 동일한지 아닌지 (테스트되지 않은 코드) 여부를 쉽게 판단 할 수 있어야합니다. 나는 (SAN을 CPAN 모듈) 생각할 수
use strict;
use warnings;
sub files_match {
my ($fileA, $fileB) = @_;
open my $file1, '<', $fileA;
open my $file2, '<', $fileB;
while (my $lineA = <$file1>) {
next if $lineA eq <$file2>;
return 0 and last;
}
return 1;
}
있는 유일한 방법은 문제의 두 파일을 열고 차이가 발견 될 때까지 한 줄 한 줄을 읽는 것입니다. 차이가 없으면 파일은 동일해야합니다.
그러나이 방법은 제한적이며 서투른 있습니다. 두 파일의 총 행 수가 다른 경우 어떻게해야합니까? 행 수를 결정하기 위해 열고 닫아야할까요? 텍스트를 스캔하기 위해 다시 열어야합니까? 왝.
이와 관련하여 perlfaq5에 아무것도 표시되지 않습니다. 핵심 Perl 5.6.1 배포판을 제외하고는 모듈에서 벗어나고 싶습니다.
나는이 질문이 전에는 나오지 않았다는 것에 놀랐습니다. – Zaid
왜 diff를 사용하지 않습니까? - 당신이 * nix – heferav
@heferav에있는 경우 : Perl에 렌더링하여 제대로 처리 할 수 있습니다. 나는 유닉스 프로그래밍에서 그다지 많은 것을하지 못했다.) – Zaid