Vamos a comprobar la documentación, ¿por qué no? Cita perlre,
$
: Coincide con el final de la línea (o antes del salto de línea al final)
Dada
\z
: Que sólo al final de la cadena
Eso significa /^$/
es equivalente a /^\n?\z/
.
$ perl -E'$_ = ""; say /^$/ ||0, /^\n?\z/ ||0, /^\z/ ||0;'
111
$ perl -E'$_ = "\n"; say /^$/ ||0, /^\n?\z/ ||0, /^\z/ ||0;'
110
Tenga en cuenta que los cambios /m
lo ^
y $
partido. Debajo de /m
, ^
coincide al comienzo de cualquier "línea", y $
coincide antes de cualquier nueva línea y al final de la cadena.
$ perl -E'$_ = "abc\ndef\n"; say "matched at $-[0]" while /^/g'
matched at 0
$ perl -E'$_ = "abc\ndef\n"; say "matched at $-[0]" while /$/g'
matched at 7
matched at 8
Y el uso/m:
$ perl -E'$_ = "abc\ndef\n"; say "matched at $-[0]" while /^/mg'
matched at 0
matched at 4 <-- new
$ perl -E'$_ = "abc\ndef\n"; say "matched at $-[0]" while /$/mg'
matched at 3 <-- new
matched at 7
matched at 8
\A
, \Z
y \z
aren' t afectados por /m
:
$ perl -E'$_ = "abc\ndef\n"; say "matched at $-[0]" while /\A/g'
matched at 0
$ perl -E'$_ = "abc\ndef\n"; say "matched at $-[0]" while /\z/g'
matched at 8
$ perl -E'$_ = "abc\ndef\n"; say "matched at $-[0]" while /\Z/g'
matched at 7
matched at 8
Este es el mismo error es http://stackoverflow.com/q/10200057/8817 haciendo, también. :) –