Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнение двух файлов 
V
    Опции темы
kokaine
Дата 3.1.2006, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 27.12.2005

Репутация: 1
Всего: 1



Ну вообщем не сравнение 2-ух файлов..
короче так
2 файла в них списки фильмов
.avi
.mpeg
нужно
сравнить эти два списка и файлы которых нету в первом вынести в отдельный текстовый документик..
список фильмов ~400-500 штук..
подскажи пожалуйсто как!?
можно делать это и не очень быстро, использоваться этот скрипт будет 1 раз =)
Добавлено @ 20:17
пардон.. забыл то что набрасал сам.. может так понятнее будет
ногами за кривизну кода не пинайте я перлом максимум неделю занимаюсь включая праздники smile
Код

#!/usr/bin/perl
print "[1] Select films from DIR.\n";
print "[2] Select films from HTML.\n";
print "[3] Last action.\n";
print "[4] Exit.\n";
$act = <STDIN>;
 if($act =~ /[1-4]/)
  {
   if($act == 1)
    {
     print "[!] Enter DIR path: ";
     $dir_path = <STDIN>;
     chomp($dir_path);
     open(F1,">ffd.txt");
     opendir(Dir, $dir_path) || die print $!."\n";
     my @file=grep (!/^\.+$/,readdir (Dir)); 
     print "[>] Start write films from $dir_path...\n";
      foreach $arg(@file)
       {
        if($arg =~ /.avi|.mpg|.mpeg/)
         {
          print $arg."\n";
          print F1 $arg."\n";
         }
       } 
     print "\n[i] End write films from $dir_path...\n";
     print "[i] Exiting...\n";
     closedir(Dir);
     close(F1);
     system('pause');
     exit 0;
    }
     if($act == 2)
      {
       print "[!] Enter path to HTML file: ";
       $path_to_HTML_file = <STDIN>;
       chop($path_to_HTML_file);
       open(F2,"<$path_to_HTML_file") || die print $!."\n";
       open(F3,">ffh.txt") || die print $!."\n";
       print "[>] Start write films from ".$path_to_HTML_file."...\n\n";
       @data = <F2>;
        foreach $arg(@data)
         {
          if($arg =~ /.avi|.mpg|.mpeg/)
           {
            print $arg."\n";
            print F3 $arg;
           }
         }
       close(F2);
       close(F3);
       print "\n[i] End write films from $path_to_HTML_file...\n";
       print "[i] Exiting...\n";
       system('pause');
       exit 0;
      }
       if($act == 3)
        {
         print "[!] Last action...\n";
         open(F1,"<ffd.txt") || die print $!."\n";
         open(F3,"<ffh.txt") || die print $!."\n";
         open(F4,">end.txt") || die print $!."\n";
         @data_from_f1 = <F1>;
         @data_from_f3 = <F3>;
#Вот вроде тут че то надо приудмать ;) 
         print "[i] End last action...\n";
         print "[i] Exititng...\n";
         close(F1);
         close(F3);
         close(F4);
         system('pause');
         exit 0;
        }   
  }
   else
    {
     print "[x] Error!\n";
     print "[i] Exiting...\n";
     system('pause');
     exit 0;
    }

PM MAIL   Вверх
korob2001
Дата 4.1.2006, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Не понял, тебе нужно записать в отдельный файл названия фильмов, которые не пересекаются в данных файлах?
Если да, то смотри этот код:
Код

#!/usr/bin/perl -w
use strict;
my @f1 = ("film1.avi", "film12.mpg", "film4.avi");
my @f2 = ("film12.avi", "film1.avi", "film4.avi");
my %res = ();
$res{$_}++ for @f1, @f2;

open(F, "> diff.txt") or die $!;
while (my($k,$v) = each(%res)) {
       print F $k,"\n" if $v == 1;
}
close(F);

Только для простоты я заменил первые 2 файла, массивами. Но это не должно тебе усложнить жизнь. 500 строк в файле, это не много, потому можешь смело их читать в массивы из файлов, хотя можно и через while прогонять вложенный while по второму файлу. При этом память вообще не будет засоряться.

Это сообщение отредактировал(а) korob2001 - 4.1.2006, 11:11


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0688 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.