Hãy xem xét dữ liệu đầu vào sau trong tệp y.txt
(được mã hóa bằng UTF-8).
bar
föbar
và một tệp y.pl
, đặt hai dòng nhập vào một mảng và xử lý chúng, tìm vị trí bắt đầu chuỗi con.
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;
Nếu tôi gọi perl y.pl < y.txt
, tôi nhận được
0
2
3
như đầu ra. Tuy nhiên, tôi hy vọng rằng con số cuối cùng cũng là 2, nhưng vì một lý do nào đó, số thứ hai /.../
regexp hoạt động khác nhau. Tôi đang thiếu gì? Tôi đoán đó là một vấn đề mã hóa, nhưng bất cứ điều gì tôi đã cố gắng, tôi đã không thành công. Đây là Perl 5.18.2.
Trên Perl 5.22.2 dưới Cygwin nó hoạt động cho tôi. –
Hoạt động trên Perl 5.20.1 trên x86_64-linux (CentOS 6) –
Hoạt động tốt theo v5.22.1 [Ubuntu 16.04.1 LTS] –