1 #!/usr/bin/perl -w 2 ($one, $five, $fifteen) = (`uptime` =~ /(\d+\.\d+)/g); 3 print "$one, $five, $fifteen\n";
Observe la salida:
> uptime 1:35pm up 19:22, 0 users, load average: 0.01, 0.03, 0.00 > glist.pl 0.01, 0.03, 0.00
En un contexto escalar m//g
itera sobre la cadena, devolviendo
cierto cada vez que casa, y falso cuando deja de casar. En otras
palabras, recuerda donde se quedo la última vez y se recomienza la búsqueda
desde ese punto. Se puede averiguar la posicion del emparejamiento
utilizando la función pos.
Si por alguna razón modificas la cadena en cuestión,
la posición de emparejamiento se reestablece al comienzo de la cadena.
1 #!/usr/bin/perl -w 2 # count sentences in a document 3 #defined as ending in [.!?] perhaps with 4 # quotes or parens on either side. 5 $/ = ""; # paragraph mode 6 while ($paragraph = <>) { 7 print $paragraph; 8 while ($paragraph =~ /[a-z]['")]*[.!?]+['")]*\s/g) { 9 $sentences++; 10 } 11 } 12 print "$sentences\n";
Observe el uso de la variable especial $/
.
Esta variable contiene el separador de registros en el fichero de
entrada. Si se iguala a la cadena vacía usará las líneas
en blanco como separadores. Se le puede dar el valor de una cadena multicarácter
para usarla como delimitador. Nótese que establecerla a \n\n
es diferente de asignarla a ""
. Si se deja undef
,
la siguiente lectura leerá todo el fichero.
Sigue un ejemplo de ejecución. El programa se llama gscalar.pl
.
Introducimos el texto desde STDIN
. El programa escribe el
número de párrafos:
> gscalar.pl este primer parrafo. Sera seguido de un segundo parrafo. "Cita de Seneca". 3
Casiano Rodríguez León