On 8/5/06, Peter Daum <[EMAIL PROTECTED]> wrote:
$s='abc \
';
$s =~ /^(.*[^\\])(\\)?$/; print "1: '$1', 2: '$2'";
Let's see what that pattern matches by annotating it:
m{
^ # start of string
( # memory 1
.* # any ol' junk, including backslashes
[^\\] # any non-backslash, including newlines
)
(\\)? # optional backslash (memory 2)
$ # end of string (or final newline at eos)
}x
I would expect $1 to hold "abc " and $2=="\\", but instead,
the first grouping holds everything including the backslash
and the following newline, while $2 is left undefined.
the "." obviously matched the newline at the end.
No, the "." matched the backslash; the "[^\\]" matched the newline.
Does that get you back on the right track? Hope this helps!
--Tom Phoenix
Stonehenge Perl Training
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>