Он вернет позицию первого вхождения $substr в $str или -1, если подстрока не найдена.
Ответ 2
Другая возможность - использовать регулярные выражения, что является тем, что известно Perl:
if ($mystring =~ /s1\.domain\.com/) {
print qq("$mystring" contains "s1.domain.com"\n);
}
Обратные косые черты необходимы, потому что . может соответствовать любому символу. Вы можете обойти это, используя операторы \Q и \E.
my $substring = "s1.domain.com";
if ($mystring =~ /\Q$substring\E/) {
print qq("$mystring" contains "$substring"\n);
}
Или вы можете сделать это как eugene y и использовать index.
Просто слово предупреждения: Index возвращает a -1, когда он не может найти совпадение вместо undef или 0.
Таким образом, это ошибка:
my $substring = "s1.domain.com";
if (not index($mystring, $substr)) {
print qq("$mystring" doesn't contains "$substring"\n";
}
Это будет неправильно, если s1.domain.com находится в начале строки. Я лично был сожжен этим не один раз.
Ответ 3
Пример нечувствительности к регистру
Это расширение ответа Eugene, которое преобразует строки в нижний регистр перед проверкой подстроки: