LINUX.ORG.RU

Если небольшой файлик, то можно так: 

use struct;
open ( my $fh, "<FILE_NAME" ); 
my ($count, @lines);
while (<$fh>) {
  $count ++; 
  push (@lines, $_)
};
print  ($lines [int(rand($count))]);
close ($fh);

Если большой, то чтобы файл в память не загружать, можно

use strict;
open ( my $fh, "<FILE_NAME" ); 
my $count; 
while (<$fh>) {
  $count ++;
}; 
my $c=int(rand($count)); 
seek ($fh, 0 ,0); 
for (my $i=0; $i<$c; $i++) {$_=<$fh>};
print; 
close ($fh);

octy ★★
()

Еще, маленький файл можно обработать так:

open ( FILE, "<FILE_NAME" ); 
my @lines = <FILE>;
close (FILE);
print  ($lines [int(rand($#lines))]);

ProtecT
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.