#!/usr/bin/perl -w use strict; # resal.pl - Resalta lo que cace la expresión regular dada como # parámetro. Para ello, manda códigos ANSI directamente a la # terminal, al más puro estilo "hgrep". # Llamamos al tput para que nos diga los códigos que tenemos que mandar a la # terminal para poner el texto en negrita y para ponerlo normal (quitar todos # los atributos) my ($ppio, $fin) = (`tput bold`, `tput sgr0`); my $nomprog = `basename $0`; chop $nomprog; # Esta variable guarda el programa que se va a ejecutar my $procesa = <<'FIN_DEL_PROGRAMA'; while (/$expreg/) { print $`; print $ppio; print $&; $_ = $fin . $'; } print ; FIN_DEL_PROGRAMA if (! scalar @ARGV) { # No hay ningún parámetro print STDERR $nomprog, ": No se han dado parámetros\n"; print STDERR $nomprog, ": $nomprog exp_reg_de_perl [ficheros ...]\n"; exit 1; } # La expresión regular que buscaremos my $expreg = shift; if (scalar @ARGV) { # Hay ficheros que procesar foreach my $f (@ARGV) { if (! open F, $f) { print STDERR $nomprog, ": No se pudo abrir $f\n"; next; } while () { eval $procesa; } close F; } } else { while (<>) { eval $procesa; } }