Hi,
when trying to process continuation lines in a file, I ran
into a weird phenomenon that I can't make any sense of:
$s contains a line read from a file, that ends with a backslash
(+ the newline character), so
$s='abc \
';
$s =~ /^(.*)$/; print $1; # prints "abc \" as expected
If the line ends with a backslash, I don't want to include it
in the grouping, thus I use:
$s =~ /^(.*[^\\])(\\)?$/; print "1: '$1', 2: '$2'";
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 perlre manpage says:
> . Match any character (except newline)
> $ Match the end of the line (or before newline at the end)
but in my case the "." obviously matched the newline at the end.
When I do a chomp($s) first, everything behaves as expected,
while a "/m" at the end of the regular expression doesn't
make any difference.
Does anybody have an explanation what is going on here?
Regards,
Peter Daum
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>