De hecho, utiliza una línea en un caso como este.
Recientemente he codificado un pequeño modulino que utilizo, entre otras formas, para producir resultados que enumeren la estructura de directorios presente en un archivo .zip (una entrada dir por línea).Entonces, usando ese resultado como un ejemplo de salida de comando que nos gustaría filtrar, podríamos poner un conducto y luego usar perl con los indicadores -n -e
para filtrar los datos entrantes (y/o hacer otras cosas con él):
[command_producing_text_output] | perl -MFile::Path -n -e \
"BEGIN{@PTM=()} if (m{^perl/(bin|lib(?!/site))}) {chomp;push @PTM,$_}"^
-e "END{@WDD=mkpath (\@PTM,1);"^
-e "printf qq/Created %u dirs to reflect part of structure present in the .ZIP file\n/, scalar(@WDD);}"
la sintaxis del intérprete de comandos utilizada, que incluye: citar el código perl y el escape de nuevas líneas, refleja el uso de CMD.exe en consolas similares a Windows NT. Si es necesario, mentalmente sustituir "^" con "\" y "con" en los lugares apropiados.
La sola línea anterior agrega sólo los nombres de directorio que comienzan con 'perl/bin' o " perl/lib (no seguido de "/ sitio"); luego crea esos directorios. Dirige con un árbol (vacío) que puede usar para cualquier propósito malvado que desee.
El punto principal es ilustrar que hay banderas disponibles (-n
, -p
) a permiten Perl para recorrer cada registro de entrada (línea), y que lo que puede hacer es ilimitada en términos de complejidad.
O como terminé implementándolo: for (@output) { my_action() if/regex /; } Permitiéndome hacer lo que quiera si recibo un golpe. ¡Gracias! – alexwood