[bcn-pm] Problemas con split.
Miquel Ruiz
self a miquelruiz.net
dll feb 18 02:05:12 PST 2013
El 18/02/2013 10:24, Manuel Trujillo (TooManySecrets) escribió:
> Holas!
>
> Hacía mucho tiempo que no hacía nada con Perl, y lo estoy pagando con
> creces...
>
> Tengo un script que ejecuta directamente de sistema una orden para el
> oracle-asm. De ahí extraigo ésto:
>
> NAME 512 4,096 1,048,576 CONNECTED EXTERN
> 139,384 34,572 24.80
>
> Lo que necesito es trabajar con los tres últimos números. Para ello he
> probado lo siguiente:
>
> @TOTAL = split(/\s+/,system("comandos_oracle"));
> print $total[6];
>
> No funciona; me dá el bonito mensaje conforme no sabe nada de la
> variable $total:
> "Use of uninitialized value in print at testasm.pl <http://testasm.pl>
> line..."
>
> Si digo de hacer el split así:
> @TOTAL = split(/ /,system....);
> Pasa exactamente lo mismo (hay un espacio entre / y /).
>
> También he probado pasando el contenido a $TOTAL, y ejecutando luego el
> split y asignación:
>
> $TOTAL = system("comandos_oracle");
> @TOTAL = split(/\s+/, $TOTAL); #el split probado con \s y /<espacio>/
>
> Pero el resultado es exactamente el mismo... sigh...
>
> Seguro que es una tontería que tengo delante (o no), pero, ¿alguien
> podría echarme un cable por favor?
>
> Por cierto, he probado un foreach sobre @TOTAL, para ver qué hay en cada
> posición, y por lo que veo, sencillamente parece que el split *no* se
> hace (o eso me parece a mí).
>
Buenas!
La llamada "system" no retorna el output del comando, sinó su "exit code".
Para capturar el output lo tendrás que ejecutar con backticks:
@TOTAL = split(/\s+/, `comandos_oracle`));
Salut!
--
Miquel Ruiz
Més informació sobre la llista de correu Barcelona-pm