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] –