Perl user escribiste:Bueno creo que es importante hacer caso a lo que el autor inicial de la pregunta dice... a veces es necesario ignorar la salida de algún programa
Es lo que intentaba dar, una opción más para que se ignorara la salida.
Perl user escribiste: y bueno, en lo personal creo que usar un módulo solo para eso ( como el caso de Sysadm-Install el cual no fué escrito solo para esa tarea ) es un poco exagerado
Tienes razón. Cuando digo que yo lo utilizo es porque en un sólo programa puedo utilizar say, tap, slurp, blurt, mv, cp y mkd. Si sólo necesito hacer un print "\n", pues no cargo Sysadm::install para hacer un solo 'say'.
Perl user escribiste:system() en su modalidad PROGRAM, LIST, es un claro y seguro método para realizar dicha tarea.
Me temo que no. system ejecuta el programa externo, pero utiliza el STDIN y STDOUT del script perl original, por lo que si el programa arrancado por system genera salida, saldrá por el STDOUT del script. El usuario verá los cálculos intermedios.
Recomiendo la lectura del capítulo 16 del Perl Cookbook, que aconseja utilizar la función open (como indicaba antes pbellon) o el módulo IPC::Open3 (algo caduco y caótico en el uso).
Repito que aquí estamos para dar opciones. Cuantas más mejor, ¿no? Quizás me he pasado de listo diciendo a un novato lo que no tiene que hacer, y por lo tanto pido disculpas. El comando tap del Sysadm::Install utiliza open.
Perl user escribiste:qx// y los backticks fueron hechos para capturar salida, ignorarla es como ignorar una alarma de incendios.
Recuerda la cantidad de veces que los programadores de C, C++ y Java ponen el cast de (void) para ignorar la salida de las funciones. Pues aquí lo mismo. Si sabemos que no nos interesan para nada la salida de algo, mejor es no verla, quizás porque interfiere con la verdadera salida que queremos dar al usuario.
Y sí, a veces hay que ignorar las alarmas de incendio: en los simulacros de incendio
En cuanto a ignorar la salida de los backticks, en la receta 16.1 del perl Cookbook sí que dice algo de que a Perl no le gusta ignorar la salida. Al final, recomienda utilizar open.