imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 09.12.2003, 07:19     # 1
MTop
Guest
 
Сообщения: n/a

Question Perl ?

Есть задача:
имею два файла с разделителями ";" делаю следующюю обработку со вложенным поиском при этом вложеный поиск она обрабатывает а внешний не хочет.
=====
open outfile, "<C:/Perl/moduli/reestr/spisok1.txt" or die "не могу открыть\n" ;
open outfile2, "<C:/Perl/moduli/reestr/spisok2.txt" or die "не могу открыть\n" ;

foreach $item1 (<outfile>)
{
foreach $item2 (<outfile2>)
{
@array1=split(";",$item1);
@array2=split(";",$item2);
printf ("@array1[0]=@array2[0] \n");
if (@array1[0] eq @array2[0])
{
printf ("@array1[0]=@array2[0] \n");
}
}
}


У кого будут какие соображения. проблема проста но не могу ее решить.
 
Старый 09.12.2003, 08:13     # 2
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
Код:
open (FILE, "spisok1.txt");
my @indata1 = <FILE>;
close (FILE);
open (FILE, "spisok2.txt");
my @indata2 = <FILE>;
close (FILE);
my $i = 0;
foreach my $str1 (@indata1) {
  my @p1 = split (/;/, $str1);
  my $j = 0;
  foreach my $str2 (@indata2) {
    my @p2 = split (/;/, $str2);
    if ($p1[0] eq $p2[0]) {
      print "Line $i in File1 == Line $j in File2: $p1[0]\n";
    }
    $j++;
  }
  $i++;
}
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!
Ghost вне форума  
Старый 09.12.2003, 08:52     # 3
MTop
Guest
 
Сообщения: n/a

Хорошо! тогда следующий вопрос.
после проведения опытов выяснелось, что при втором вхождении список 2 уже кончился, и как возможно сделать повторное вхождение?

(понятно изъяснился)
 
Старый 09.12.2003, 09:00     # 4
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
Код:
open (FILE, "spisok1.txt");
my @indata1 = <FILE>;
close (FILE);
my $l1 = @indata1;
open (FILE, "spisok2.txt");
my @indata2 = <FILE>;
close (FILE);
my $l2 = @indata2;
for (my $i=0; $i<$l1; $i++) {
  my @p1 = split (/;/, $indata1[$i]);
  for (my $j=0; $j<$l2; $j++) {
    my @p2 = split (/;/, $indata2[$j]);
    if ($p1[0] eq $p2[0]) {
      print "Line $i in File1 == Line $j in File2: $p1[0]\n";
    }
  }
}
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!
Ghost вне форума  
Старый 09.12.2003, 10:04     # 5
MTop
Guest
 
Сообщения: n/a

Ну это ясно, а всетаки в чем ошибка в первом скрипте?
 
Старый 09.12.2003, 12:41     # 6
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
В ДНК. (это я шучу так)

Ошибка заключается в попытке циклического прохода файла - указатель сам по себе за здорово живешь на начало файла не перемещается. Вообще, при работе с файлами их нужно с перва считать в память, а потом уж обрабатывать.
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!
Ghost вне форума  
Старый 10.12.2003, 09:00     # 7
MTop
Guest
 
Сообщения: n/a

Дописал скрипт теперь нужно его запускать на win32
компелить комодой не желательно, если интерпритатор этого языка для win32.
к примеру запускаешь его в батнике. что то в этом духе?
 
Старый 10.12.2003, 18:02     # 8
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
Active Perl.
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!
Ghost вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 21:39.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.