Сравнение двух файлов
Автор: James Aguirre
Изначально требовалось сравненить два
больших архива. Оказывается на Перле это
делается очень просто.
Совместимость: Perl 5 (все версии)
#################################################
# Файл: readAndCompare.pl
#
# Резюме: Данный скрипт был написан как замена
# для команды DOS сравнения файлов, и эквивалентен
# fc /b (BINARY) <FILE> <FILE>
# пробелы не игнорируются
#################################################
!#usr/bin/perl
# скрипт из командной строки запрашивает пути к сравниваемым файлам
print "Enter Path to Production file.\n";
chomp($pPath=<STDIN>);
##### DEBUG #####
#print "Path Given was $pPath\n";
print "Enter Path to Versioned file.\n";
chomp($vPath=<STDIN>);
# Проверяем, чтобы пути к файлам не были одинаковыми.
if($pPath eq $vPath)
{
print "Бессмыслено сравнивать один и тот же файл\n";
exit;
}
##### DEBUG #####
#print "Path Given was $vPath\n";
# Открываем первый файл.
open(PROD, "< $pPath") or die "Can't read the production file";
# записываем в scalar
while(<PROD>)
{
$pHandle .=$_
}
# Закрываем файл
close(PROD) or die "Can't close the production file.";
# Открываем второй файл только для чтения.
open(VERS, "< $vPath") or die "Can't read the versioned file";
# записываем в scalar
while(<VERS>)
{
$vHandle .=$_
}
# Закрываем файл
close(VERS) or die "Can't close the versioned file.";
# Сравниваем два скаляра
###### Внимание: это бинарное сравнение.
if($vHandle ne $pHandle)
{
print "Первый файл отличается от второго .\n";
}
else
{
# Какое-нибудь умное сообщение :)
exit;
}
|