$ and \Z work pretty much the same in normal mode, both match the end of search string or before a string-ending newline. the difference between them lies in the multiline mode when you issue an 'm' modifier.
\z means the real end of string even after the string-ending newline.
If you use an 's' modifier, then things become more different but that's mainly coz of the '.' which changes its behaviors, not the three end-of-string anchors..
check the following snippets:
perl -e 'print "match\n" if "foo\n" =~ /.+$/' # ok #
perl -e 'print "match\n" if "foo\n" =~ /.+\z/'
perl -e 'print "match\n" if "foo\n" =~ /.+\Z/' # ok #
perl -e 'print "match\n" if "foo\n\n\n" =~ /.+\Z/'
perl -e 'print "match\n" if "foo\n\n\n" =~ /.+\z/'
perl -e 'print "match\n" if "foo\n\n\n" =~ /.+$/'
perl -e 'print "match\n" if "foo\n\n\n" =~ /.+$/m' # ok #
perl -e 'print "match\n" if "foo\n\n\n" =~ /.+\z/m'
perl -e 'print "match\n" if "foo\n\n\n" =~ /.+\Z/m'
perl -e 'print "match\n" if "foo\n\n\n" =~ /.+\Z/s' # ok #
perl -e 'print "match\n" if "foo\n\n\n" =~ /.+\z/s' # ok #
perl -e 'print "match\n" if "foo\n\n\n" =~ /.+$/s' # ok #
BTW. When comparing between \z, \Z and $, it's probably better to avoid using .* or .? quanifiers the ways in your examples.
BTW. my previous statement about \Z had some error and I have updated that post.
Regards,
Xicheng
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|