当我运行时:
perl -e '$x="abc\nxyz\n123"; $x =~ s/\n.*/... multiline.../; printf("str %s\n", $x);'
我希望结果是:
str abc... multiline...
但实际收到的是
str abc... multiline...
123
我哪里做错了?
$x =~ s/\n.*/... multiline.../s
/s
修改符号告诉Perl将匹配的字符串视为单行,这将导致.
可以匹配换行符。通常情况下它不会匹配换行符,从而导致您观察到的行为。
$x =~ s/\n.*/... multiline.../;
变成这样:
$x =~ s/\n.*/... multiline.../s;