Rozważ następujące dane wejściowe w pliku y.txt
(zakodowane w UTF-8).
bar
föbar
i plik y.pl
, która stawia dwie linie wejściowe na tablicy i przetwarza je, szukając podciąg pozycje startowe.
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;
Jeśli zadzwonię perl y.pl < y.txt
, mam
0
2
3
jako wyjście. Jednak spodziewałbym się, że ostatnia liczba to także 2, ale z jakiegoś powodu drugie wyrażenie regularne /.../
zachowuje się inaczej. czego mi brakuje? Domyślam się, że to kwestia kodowania, ale cokolwiek próbowałem, nie udało mi się. To jest Perl 5.18.2.
W Perlu 5.22.2 pod Cygwin to działa dla mnie. –
Działa na perlu 5.20.1 na x86_64-linux (CentOS 6) –
Działa dobrze pod kontrolą v5.22.1 [Ubuntu 16.04.1 LTS] –