9
考虑文件y.txt
(以UTF-8编码)中的以下输入数据。
bar
föbar
和文件y.pl
,这使两个输入线到一个数组并处理它们,寻找子串的起始位置。
use open qw(:std :utf8);
my @array;
while (<>) {
push @array, $_;
print $-[0] . "\n" if /bar/;
}
# $array[0] = "bar", $array[1] = "föbar"
print $-[0] . "\n" if $array[1] =~ /$array[0]/u;
如果我打电话perl y.pl < y.txt
,我得到
0
2
3
作为输出。但是,我预计最后一个数字也是2,但由于某种原因,第二个/.../
正则表达式的行为有所不同。我错过了什么?我想这是一个编码问题,但无论我尝试了什么,我都没有成功。这是Perl 5.18.2。
在Cygwin下的Perl 5.22.2上,它适用于我。 –
适用于x86_64-linux上的Perl 5.20.1(CentOS 6) –
在v5.22.1下工作正常[Ubuntu 16.04.1 LTS] –