Этот вопрос связан с необходимостью обеспечения того, чтобы изменения, внесенные мной в код, не влияли на значения, которые он выводит в текстовый файл. В идеале, я бы свернул суб, чтобы взять два имени файла и return 1
или return 0
в зависимости от того, идентичны ли они или нет, пробелы и все.
Учитывая, что текстовая обработка Perl forté, довольно просто сравнить два файла и определить, идентичны они или нет (код ниже непроверен).
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;
}
Единственный способ, которым я могу думать (без систем CPAN), - открыть два указанных файла и прочитать их в строке за строкой до тех пор, пока не будет найдена разница. Если разница не найдена, файлы должны быть идентичными.
Но этот подход ограничен и неуклюж. Что делать, если общие строки отличаются в двух файлах? Должен ли я открывать и закрывать, чтобы определить количество строк, затем снова открыть для сканирования тексты? Тьфу.
Я ничего не вижу в perlfaq5, относящемся к этому. Я хочу держаться подальше от модулей, если они не входят в основной дистрибутив Perl 5.6.1.