Une autre possibilité est d'utiliser des expressions régulières qui est ce que Perl est célèbre pour:
if ($mystring =~ /s1\.domain\.com/) {
print qq("$mystring" contains "s1.domain.com"\n);
}
Les barres obliques inverses sont nécessaires, car une .
peut correspondre à n'importe quel caractère. Vous pouvez contourner ce problème en utilisant l' \Q
et \E
opérateurs.
my $substring = "s1.domain.com";
if ($mystring =~ /\Q$substring\E/) {
print qq("$mystring" contains "$substring"\n);
}
Ou, vous pouvez faire comme eugène y a déclaré et l'utilisation de l' indice de la fonction.
Juste un mot d'avertissement: rendement de l'Indice d'un -1
quand il ne peut pas trouver une correspondance à la place d'un undef
ou 0
.
Donc, c'est une erreur:
my $substring = "s1.domain.com";
if (not index($mystring, $substr)) {
print qq("$mystring" doesn't contains "$substring"\n";
}
Ce sera faux si l' s1.domain.com
est au début de votre chaîne. J'ai personnellement été brûlé sur plus d'une fois.