Всем доброго времени суток. Есть простой скрипт (regexp максимально упростил)
#!/usr/bin/env perl
use strict;
use warnings;
my ($str1, $str2) = @ARGV;
if($str2 =~ m/^$str1$/i) {
print "ok\n";
} else {
print "not ok\n";
}
То есть, передаем на вход две строки и проверяем на матч.
Далее поведение следующее:
$ ./1.pl test test
ok
$ ./1.pl test1 test1
ok
$ ./1.pl test? test?
not ok
$ ./1.pl test?1 test?1
not ok
То есть, не происходит совпадения, если в строках присутствует знак вопроса.
Также, если в regexp'е убрать $:
$str2 =~ m/^$str1/i
Не подскажете, с чем связано такое поведение? Как следует строить выражение, чтобы одинаковые строки, содержащие знак вопроса, совпадали? Где можно про это почитать, чтобы не напороться на аналогичные грабли с другими символами?
Заранее спасибо.