powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PERL) открыть 2 файла и сравнить построчно
10 сообщений из 10, страница 1 из 1
(PERL) открыть 2 файла и сравнить построчно
    #33278968
vidoq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
значится открываю я их вроде нормально. т.е.
Код: plaintext
1.
$file1= txt1.txt;
open(FILE,$file1) ... 
ну и так же 2 открываю.
далее пишу вот что:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
while (<FILE>) {
chomp;
@mt=split;
while (<FILE2>) {
chomp;
@mt2=split;

if ($mt[ 0 ] ne $mt2[ 0 ]){
print "Heto4HocTb - $mt[0] $mt2[0]\n";
}

}}

результат такой, из первого файла берется 1 строка и проверяется со ВСЕМИ строками 2 файла.
а мне нужно, чтобы 1 строка проверялась с 1, 2 со 2, 3 с 3, итд... пока не закончатся файлы...
как???
...
Рейтинг: 0 / 0
(PERL) открыть 2 файла и сравнить построчно
    #33279001
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vidoq wrote:
> результат такой, из первого файла берется 1 строка и проверяется со
> ВСЕМИ строками 2 файла.
> а мне нужно, чтобы 1 строка проверялась с 1, 2 со 2, 3 с 3, итд... пока
> не закончатся файлы...
> как???
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
open FH1,"file1";
open FH2,"file2";
$count = 0 ;
while($l1 = <FH1> && $l2=<FH2>){
	++$count;
	print "Diff line # $count: \n$l1 $l2" if ($l1 ne $l2);
}

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
(PERL) открыть 2 файла и сравнить построчно
    #33279184
nik2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vidoq
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
while (<FILE>) {
chomp;
@mt=split;
while (<FILE2>) {
chomp;
@mt2=split;

if ($mt[ 0 ] ne $mt2[ 0 ]){
print "Heto4HocTb - $mt[0] $mt2[0]\n";
}

}}


...где только такую траву продают...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
(PERL) открыть 2 файла и сравнить построчно
    #38011502
mamontozavr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, друзья!

Помогите с решением вот такой задачи..
Есть 2 файла содержимое каждого примерно следующее:
...
c462519cd902a89c494fdfefa9f424c5 file/datadump.txt
...
Но ессть отличия в checksum и пути до файла. Как сравнить построчно
1) с использованием массивов - получается релизовать только без разбиения.
2) как еще с помощью хешей это реализовать? :-( Надо сравнивать левую с правой частью 2х разных файлов.
...
Рейтинг: 0 / 0
(PERL) открыть 2 файла и сравнить построчно
    #38014246
Фотография nexoma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может применить diff и получить реальную разницу и уже потом с ней работать?
...
Рейтинг: 0 / 0
(PERL) открыть 2 файла и сравнить построчно
    #38014294
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nexomaможет применить diff и получить реальную разницу и уже потом с ней работать?
+1
...
Рейтинг: 0 / 0
(PERL) открыть 2 файла и сравнить построчно
    #38035108
mamontozavr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nexoma,

diff к сожалению не вариант ибо он сравнивает секционно и попадаются одинаковые файлы.
Просто задача несколько усложнаяется тем что бывают одинаковые имена в одной части, но разные checksum. Вот как их отловить то((
...
Рейтинг: 0 / 0
(PERL) открыть 2 файла и сравнить построчно
    #38035739
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
(PERL) открыть 2 файла и сравнить построчно
    #38036175
mamontozavr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ренат,

спасибо Ринат, я вот наваял код, котоырй сравнивает чуть лучше чем diff

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
#!/usr/bin/perl -w
use strict;

my $f1 = "/tmp/data_new/MANIFEST-new/MANIFEST.Package";
my $f2 = "/tmp/data-old/MANIFEST-old/MANIFEST.Package";


my $outfile = '/root/result.txt';

open (FD1,$f1) or die "Can not open file".$!."\n";
my %h1 = <FD1>;

#print "\n My Hash1 :" .%hash1."\n";

while(<FD1>){
        chomp;
        my ($key, $array) = split ' ';
        #print "Key eq : $key array eq : $array\n";

}
close(FD1);

open (FD2,$f2) or die "Can not open file".$!."\n";

my %h2 = <FD2>;

while(<FD2>){
#chomp;
my ($key, $array) = split ' ';

if ($h1{$_}){
        delete($h1{$_});
} else {
        $h2{$_}=0;
        }
}
close(FD2);

open(WR,$outfile) or die "Cannot write file: $!";

my @diff = list_diff(keys %h1, keys %h2);
print "Difference in keys: ", @diff, "\n" if @diff;

KEY:
foreach my $key (keys %h1) {
    next KEY unless exists $h2{$key};
    my @diff = list_diff(@{ $h1{$key} },@{ $h2{$key} });
    print "Difference at key $key: ", @diff, "\n" if @diff ;
}



Единственно что не могу победить это как мне в получившихся хешах сравнить сначала значения, потом те значения которые не совпадают сравнить с ключами..
Все что нужно это список тех значений у которых явно не совпадает пара value - key.
...
Рейтинг: 0 / 0
(PERL) открыть 2 файла и сравнить построчно
    #38038846
Фотография nexoma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так вроде правильно делаете.

1a. один файл в один массив, где ключ имя файла с отсечённым путём, цифру - в значение .
второй файл также во второй хэш.
далее сравнивать перебором.

1b.
Код: php
1.
2.
$hash{file}{'1'} = значение из первого файла
$hash{file}{'2'} = значение из первого файла



и одним перебором получаем список, где
Код: php
1.
 $hash{file}{'2'} != $hash{file}{'1'}

, а также список отсутствующих и в том и в другом списках.


2. как вариант, загнать всё в базу, типа sqllite и выбрать разницу через select c помощью DBI

3. проанализировать и, возможно, поискать имеющееся решение, например, если это зеркалирование файлов с контрольной суммой на ftp - применить mirror (прим., это условно) и подогнать решение под mirror. и не придумывать новенькое.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PERL) открыть 2 файла и сравнить построчно
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]