PDA

Просмотр полной версии : [Perl] Рандомный выбор строки из текста


apofis
03.05.2010, 11:07
Не совсем пойму как рандомно взять строку из файла..
Есть текстовый файл text.txt с текстом:
слово1
слово2
слово3
слово4
...
словоN

Как отсюда взять одно случайное слово?

POS_troi
03.05.2010, 11:30
Открываем файл
Определяем общее количество строк
Полученную цифру кидаем в рандом
Получаем случайное число не большее чем общее количество строк
Читаем строку из файла, под номером полученным рандомом


Или тебе нужно уже готовое решение? ;)

TheSoul
03.05.2010, 12:18
open (FILE, '<text.txt');
chomp (@text = <FILE>);
close FILE;

$rand_text = $text[int(rand scalar @text)];

print $rand_text."\n";

apofis
03.05.2010, 13:05
Открываем файл
Определяем общее количество строк
Полученную цифру кидаем в рандом
Получаем случайное число не большее чем общее количество строк
Читаем строку из файла, под номером полученным рандомом


Или тебе нужно уже готовое решение? ;)

Я хотел сделать именно так)
Но не знаю как прочитать определенную по номеру строку из файла.


TheSoul, спасибо большое) Это, наверное, самое верный вариант)

taxpayer
03.05.2010, 16:26
Зачем всё подгружать в память?
В кукбуке есть очень красивый пример, как решается твоя проблема. туц (http://docstore.mik.ua/orelly/perl/cookbook/ch08_07.htm)


$rand_text = $text[int(rand scalar @text)];

в чём приоритет использования и одновременного неиспользования скобок? :) Кстати, наличие int необязательно ;)

$rand_text = $text[rand scalar @text];