Como ya aceptado una respuesta, estoy escribiendo esta respuesta de referencia para los futuros lectores en busca de problemas similares, pero no exactamente el suyo:
Como la gente ha respondido ya, la forma de simular grep con Perl es usar el enfoque en línea. Para el uso de perl como 'mejor' grep (y buscar y cortar y ...) recomiendo el libro minimal perl y tiene suerte porque el capítulo para 'perl as a "better" grep' es uno de los capítulos de muestra.
Aquí tienes más ejemplos inspirados en el libro:
perl -wnle '/foo/ and print' null.txt # normal grep
perl -wnle '/foo/ and print "$ARGV: $_"' null.txt # grep -H
perl -wnle '/foo/ and print $ARGV and close ARGV' null_1.txt null_2.txt # grep -l
En el último ejemplo ARGV es el gestor de archivo actual, y como con -l que están interesados en la búsqueda de archivos con el partido que puede imprimir el archivo nombrar e ir al siguiente archivo después de la primera coincidencia en un archivo.
También puedes buscar por el párrafo no por línea:
$ perl -00 -wnl -e '/\bBRIBE\b/i and print;' SenQ.testimony
I knew I'd be in trouble if
I ACCEPTED THE BRIBE!
So I did not.
My minimum bribe is $100k, and she only offered me $50k,
so to preserve my pricing power, I refused it.
O encontrar sólo el primer partido:
$ perl -00 -wnl -e '/\bBRIBE\b/i and close ARGV;' SenQ.testimony
I knew I would be in trouble if
I ACCEPTED THE BRIBE!
So I did not.
Y, finalmente, si se le pregunta acerca de grep y Perl, creo que parecían que debería mencionar ACK. Implementa, en perl, la funcionalidad grep y la extiende. Esta es una herramienta maravillosa y, además, puede tenerla también como un paquete de CPAN. Siempre he usado como línea de comando, no sé si puedes acceder a sus métodos directamente desde tus programas perl, pero esto sería muy bueno.
- Gracias lo tengo. – TCM
@coddadict, lo hiciste muy bien arreglando los errores en el código, pero esta pregunta y el enfoque utilizado por el usuario lo convierte en un 'problema casi xy' así que esta es una de esas situaciones en que el adoctrinamiento probablemente no está fuera del tema. Hubiera recomendado no leer todo el archivo al mismo tiempo (quería simular grep orientado a la línea), lo habría recomendado usando el grep {} en lugar del grep() solo para crear un buen hábito, y los tres argumentos abiertos Y aún más mostrarle el enfoque en línea (o alternativamente línea por línea con el tiempo) hubiera sido una ventaja. –