Jak namatchovat \n na konci stringu?

Pavel Smerk xsmerk na fi.muni.cz
Středa Listopad 5 09:57:13 CET 2008


On Wed, Nov 05, 2008 at 09:48:50AM +0100, Jan Kasprzak wrote:
> Pavel Smerk wrote:
> : On Wed, Nov 05, 2008 at 09:22:45AM +0100, Jan Kasprzak wrote:
> : > Pavel Smerk wrote:
> : > : > Co znamena to "or"? Podle ceho se perl rozhodne, kterou z tech dvou variant
> : > : > zvoli? Jak muzu rict, ze chci "at end of string", a nikoli "before newline
> : > : > at the end"?
> : > 
> : > 	A neni ten kdo zvoli primo programator pomoci /m ?
> : 
> : Tomu asi nerozumim, perl -e 'print "ab\n" =~ /^.*?(.{0,1})$/' vypise vzdy
> : "b" a nikdy "\n", nezavisle na pouzite "podmnozine" modifikatoru {/s, /m}.
> : 
> : IOW, to /m v tomhle pripade nic neovlivni. Vzdy je to "before newline at the
> : end". Naproti tomu pri =~ /^.*?(.{0,})$/ se vypise budto "ab", nebo "ab\n"
> : podle toho, zda pouziju /s, /m opet nema zadny vliv, ani s /s, ani bez nej.
> 
> 	/m ovlivnuje jen \z, ne $, rekl bych.

To myslim, ze prave naopak, man perlre:

m   Treat string as multiple lines. That is, change "^" and "$" from
matching the start or end of the string to matching the start or end of any
line anywhere within the string.

[...]

ALE! \z je to, co jsem hledal, diky, nevim, proc jsem docetl jen k \Z. :-)

"Teoreticka" otazka, proc se .{n,} chova v tomto kontextu jinak nez .{n,m},
aniz by to bylo zmineno v dokumentaci (a jestli je to bug, nebo se toto
chovani ridi nejakou skrytou logikou), ovsem stale zustava.
									P.


Další informace o konferenci Perl