Этот вопрос связан с необходимостью обеспечить, чтобы изменения, внесенные в код, не влияли на значения, выводимые в текстовый файл. В идеале я бы бросил саб, чтобы взять два имени файла и return 1
или return 0
в зависимости от того, идентично ли содержимое, пробелов и всего.
Учитывая, что обработка текста - удача Perl, должно быть довольно легко сравнить два файла и определить, идентичны они или нет (код ниже не проверен).
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.