Как выбрать случайное имя из списка и сохранить его в переменной? - PullRequest
1 голос
/ 23 октября 2009

Я уже разрабатываю этот проект для своей семьи, но теперь мне нужно связать имя с другим условным обозначением (помните, что первое имя у меня есть) и сохранить только второе имя в переменной, помните, что это list - это файл (*. txt) с некоторыми именами, но как я могу это сделать? Спасибо.

Ответы [ 2 ]

6 голосов
/ 23 октября 2009

Хорошо, похоже, вы хотите получить случайное имя из файла. Предполагая, что эти имена находятся в отдельных строках, вот что вы можете сделать (пожалуйста, прочитайте о встроенных rand, int и chomp методах в perldoc perlfunc , чтобы увидеть, как они работают):

my @names = <>;
chomp(@names);
my $random_name = $names[int(rand(@names))];

Разбивая это на шаги, вот что он делает:

  • Сначала мы читаем в файле. Если вы передадите файл в ваш скрипт (например, perl myscript.pl < names.txt), вы сможете читать напрямую из STDIN, набрав <>.
  • затем мы удаляем все символы новой строки из каждой строки с помощью chomp.
  • теперь мы хотим получить случайный элемент из списка:
  • @list в скалярном контексте получить количество элементов в списке (например, 4)
  • rand(4): получить случайное число от 0 до 4 (чтобы мы могли иметь число от 0 до 3.999999 ...)
  • int(some number from above) это было число с плавающей запятой, поэтому давайте округлим его (так что теперь у нас есть 0, 1, 2 или 3: это как раз возможные индексы массива для нашего списка!
  • используйте это как индекс массива в @list, и все готово!
2 голосов
/ 23 октября 2009

Английский в вашем вопросе настолько плох, что мне очень трудно понять, о чем вы спрашиваете.

Но как насчет этого?

use List::Util qw(shuffle);
my @array = shuffle(<>);
print shift @array;

При чтении из STDIN вы всегда можете использовать open, чтобы открыть файл, а затем использовать его в дескрипторе файла.

Вот оно с файлом IO:

use List::Util qw(shuffle);
open my $fh, "<", "out.txt";
my @array = shuffle(<$fh>);
print shift @array;
close $fh;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...