[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