• XSS.stack #1 – первый литературный журнал от юзеров форума

Удалить одинаковые строки

around

CD-диск
Пользователь
Регистрация
09.04.2006
Сообщения
13
Реакции
0
Прива всем.
Такое дело. Решил научиться программировать на перле.
Поставил активперл и запасся книжкой :) .

Так вот. Прочитал страниц 50 и решил написать свою "программу" (скрипт - кому как нравиться). Суть её заключается в том, что бы удалить одинаковае строки и файла. То есть. Есть один txt файл, в нём записанно много-много слов в столбик (словарь паролей).

#!/usr/bin/perl -w

open(MLIST, "mlist.txt") or die "No list found: $!\n";

while ($line = <MLIST>) {
($word, $razd) = ($line, "");
$words{$word} = $razd . "";
}

open(OUT, ">out.txt") or die "Can't create file: $!\n";
print OUT %words;
close OUT;

print "DONE";

exit;

Не обращайте особого внимания на способ реализации :D - первая программа.
Короче. Файл размером в 50Мб прекрасно прогоняет (несколько минут), а вот 100Мб - окончания не дождался (больше часа).

Собственно, подскажите, пожалуйста, почему так происходит и как это поправить :) .
 
Взято с runthes.ru

Код:
<?php
echo ('Скрипт для нахождения совпадений в *.txt файлах
');
echo ('coded by ex_ecutioner

');

$c=0;
$file_array = file("http://find/test.txt"); //имя файла своё
for ($k=0; $k < count($file_array); $k++)
{
 $str1 = $file_array[$k];
 for ($j=$k+1; $j < count($file_array); $j++)
 {
  $str2 = $file_array[$j];
  $res = strcmp($str1,$str2);
  if ($res == 0)
  {
  $c++;
  $string[]=$j+1;
  $doubles[]=$str2;
  }
 }
}
echo ("Обнаружено совпадений: <B>".$c."</B>
");
echo ('<TABLE border="0" cellspacing="0" cellpadding="0"><TR><TD width="150">Совпадение:</TD>
       <TD width="150">Строка:</TD></TR><TR><TD>');

for ($n=0; $n < count(@$doubles); $n++)
{
 echo "".@$doubles[$n]."
";
} 

echo ('</TD><TD>');

for ($o=0; $o < count(@$string); $o++)
{
 echo "".@$string[$o]."
";
}

echo ('</TD></TR></TABLE>');
?>
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх