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

Discussion in 'PHP' started by apofis, 3 May 2010.

  1. apofis

    apofis New Member

    Joined:
    23 Feb 2009
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    Не совсем пойму как рандомно взять строку из файла..
    Есть текстовый файл text.txt с текстом:
    слово1
    слово2
    слово3
    слово4
    ...
    словоN

    Как отсюда взять одно случайное слово?
     
    #1 apofis, 3 May 2010
    Last edited: 3 May 2010
  2. POS_troi

    POS_troi Elder - Старейшина

    Joined:
    1 Dec 2006
    Messages:
    1,569
    Likes Received:
    466
    Reputations:
    108
    Открываем файл
    Определяем общее количество строк
    Полученную цифру кидаем в рандом
    Получаем случайное число не большее чем общее количество строк
    Читаем строку из файла, под номером полученным рандомом


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

    TheSoul Elder - Старейшина

    Joined:
    12 Nov 2007
    Messages:
    83
    Likes Received:
    35
    Reputations:
    0
    open (FILE, '<text.txt');
    chomp (@text = <FILE>);
    close FILE;

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

    print $rand_text."\n";
     
  4. apofis

    apofis New Member

    Joined:
    23 Feb 2009
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    Я хотел сделать именно так)
    Но не знаю как прочитать определенную по номеру строку из файла.


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

    taxpayer Member

    Joined:
    17 Jan 2010
    Messages:
    31
    Likes Received:
    7
    Reputations:
    3
    Зачем всё подгружать в память?
    В кукбуке есть очень красивый пример, как решается твоя проблема. туц

    Code:
    $rand_text = $text[int(rand scalar @text)];
    
    в чём приоритет использования и одновременного неиспользования скобок? :) Кстати, наличие int необязательно ;)
    Code:
    $rand_text = $text[rand scalar @text];