[Perl] leer lineas aleatorias de un archivo.

Salvador Ortiz Garcia sog en msg.com.mx
Mar Mayo 16 17:25:40 CDT 2006


On Tue, 2006-05-16 at 21:27 +0200, Alexandros googlemail wrote:
> ...
> El problema es (y creo que se me olvido decirlo en el primer mensaje),
> que quiero que las lineas no se repitan, osea (siguiendo con tu
> ejemplo), en @some no deberían poder repetirse dos mismas líneas de
> 'archivo.txt'. Es ahí donde reside el problema de utilizar int(), lo
> suyo sería poder utilizar int() pero descartando los numeros que ya ha
> sacado antes (¿se puede hacer esto?).

Claro.
> 
> Bueno, mientras escribo esto se me esta ocurriendo que podría sustituir
> el valor que saco del array por el ultimo valor de dicho array
> eliminando este, así, aunque el int() saque el mismo numero el valor del
> array será diferente, algo como:
> 
> {...}
> for (1..10) {
>     $foo = int(rand($#file));
>     push @some, $file[$foo];
>     $file[$foo] = pop(@file);
> }
> ...

Ok, que tal esta:

   ...
   push @some, splice(@file, int rand @file, 1) for(1..10);

En donde literalmente descartas el valor recién sacado.


Saludos

-- 
Salvador Ortiz Garcia <sog en msg.com.mx>
Matías Software Group



Más información sobre la lista de distribución Perl