Página 1 de 1

Math::Random::MT::Auto 5.04

NotaPublicado: 2009-02-05 11:00 @500
por Cristina
Estimados, necesito hacer "shuffling" de caracteres en un array o un string.
Parece que lo mejor es instalar el módulo Math::Random::MT::Auto 5.04. No puedo hacerlo, al instalarlo me pide cada vez que baje más mádulos como: Objet, Class, inheritance (hasta aquí llegué, el último no lo pude instalar).
¿Hay alguna versión de Perl para Linux que lo tenga integrado, o alguna forma más sencilla de hacerlo?
¡¡Muchas gracias!!
Cris.

NotaPublicado: 2009-02-05 13:14 @593
por explorer
Bienvenida a los foros de Perl en Español, Cristina.

Para barajar el contenido de un arreglo, lo puedes hacer con el módulo List::Util:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use Modern::Perl;
use List::Util qw(shuffle);

my @mazo = 1 .. 52;

say join " ", @mazo;

@mazo = shuffle @mazo;

say join " ", @mazo;

__END__
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

En cuanto al string, se podrían pasar los caracteres a un arreglo (con la ayuda de split //,$string), hacer el barajamiento y luego rehacer el string con un join "", @arreglo.

Algo así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$cadena = join '', shuffle split //, $cadena;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

NotaPublicado: 2009-02-05 13:30 @604
por Cristina
¡¡Muchas gracias!! pero otra vez, me da el mensaje "can´t locate Modern/Perl.pm in @INC (@INQ.....

NotaPublicado: 2009-02-06 05:01 @250
por explorer
Eso es que no lo tienes instalado.

Prueba a instalarlo, con el comando

cpan Modern::Perl

Pero eso sí... ese módulo solo te funcionará si tienes el Perl versión 5.10. Si tienes otro más antiguo, quita la línea del "use ..." y cambia los say() por print() con un "\n" al final.

NotaPublicado: 2009-02-06 10:58 @499
por Cristina
¡Muchas gracias!
Lo voy a intentar.
Saludos.