La opción /s

La opción /s hace que . se empareje con un \n. Esto es, casa con cualquier carácter.

Veamos otro ejemplo, que imprime los nombres de los ficheros que contienen cadenas que casan con un patrón dado, incluso si este aparece disperso en varias líneas:

   1 #!/usr/bin/perl -w
   2 #use: 
   3 #smodifier.pl 'expr' files
   4 #prints the names of the files that match with the give expr
   5 undef $/; # input record separator
   6 my $what = shift @ARGV;
   7 while(my $file = shift @ARGV) {
   8   open(FILE, "<$file");
   9   $line =  <FILE>;
  10   if ($line =~ /$what/s) {
  11     print "$file\n";
  12   }
  13 }

Ejemplo de uso:

> smodifier.pl 'three.*three' double.in split.pl doublee.pl
double.in
doublee.pl

Vea la sección 3.20 para ver los contenidos del fichero double.in. En dicho fichero, el patrón three.*three aparece repartido entre varias líneas.

Casiano Rodríguez León
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19