/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