Для поиска строк без учета регистра используйте index
(или rindex
) в сочетании с fc
. Этот пример расширяет ответ Евгения Ярмаша:
use feature qw( fc );
my $str = "Abc";
my $substr = "aB";
print "found" if index( fc $str, fc $substr ) != -1;
# Prints: found
print "found" if rindex( fc $str, fc $substr ) != -1;
# Prints: found
$str = "Abc";
$substr = "bA";
print "found" if index( fc $str, fc $substr ) != -1;
# Prints nothing
print "found" if rindex( fc $str, fc $substr ) != -1;
# Prints nothing
И index
, и rindex
возвращают -1
, если подстрока не найдена.
А fc
возвращает версию своего строкового аргумента в сложенном виде, и здесь его следует использовать вместо (более привычных) uc
или lc
. Не забудьте включить эту функцию, например, с помощью use feature qw( fc );
.
ДЕТАЛИ:
Из документов fc
:
Сворачивание регистров — это процесс преобразования строк в форму, в которой различия регистров стираются; сравнение двух строк в их регистро-свернутой форме — это фактически способ узнать, равны ли две строки, независимо от регистра.
Из часто задаваемых вопросов по Unicode:
В: В чем разница между картированием случаев и сворачиванием случаев?
О: Отображение регистра или преобразование регистра — это процесс, посредством которого строки преобразуются в определенную форму — верхний регистр, нижний регистр или заглавный — возможно, для отображения пользователю. Свертывание регистра в основном используется для сравнения текста без регистра, например идентификаторов в компьютерной программе, а не для фактического преобразования текста. Свертывание регистра в Unicode в основном основано на сопоставлении нижнего регистра, но включает дополнительные изменения исходного текста, которые помогают сделать его нечувствительным к языку и согласованным. В результате текст, сложенный регистром, должен использоваться исключительно для внутренней обработки и, как правило, не должен храниться или отображаться для конечного пользователя.
person
Timur Shtatland
schedule
01.09.2020
WWW::Mechanize
илиLWP::UserAgent
, чтобы получить страницу и анализатор, напримерHTML::TokeParser
, чтобы получить нужную информацию. - person Joel Berger   schedule 10.08.2011