Que fait cette expression dans la programmation Perl?
$variable =~ /^\s*$/;
Que fait cette expression dans la programmation Perl?
$variable =~ /^\s*$/;
C'est la recherche d'un début de ligne (^), suivi de zéro ou plusieurs espaces (\ s *) caractères, suivi d'une fin de ligne ($).
Essentiellement à la recherche de lignes vides/vides.
Je me attends l'expression à utiliser quelque chose comme:
if ($v =~ /^\s*$/) {
# found a blank line
}
afin d'effectuer la vérification et une action suivante.
Rien, puisque vous n'assignez pas le résultat de cette opération à une variable, et qu'il n'a aucun effet secondaire que vous êtes susceptible de tester.
Cependant, si vous avez dit
if ($variable =~ /^\s*$/)
{
print "something";
}
Vous serait répondre à la question:
Est-ce que la valeur dans la variable consistent en une ligne vide ou une ligne composée de rien d'autre que des caractères non impression espaces blancs tels que espaces et onglets?
true alex, l'instruction réelle est dans une boucle qui lit les données du fichier et a la condition next if ($ variable = ~/^ \ s * $ /); – swapnil
Dans ce cas, cela signifie "sauter des lignes vides dans le fichier" –
Alex, techniquement ce n'est pas tout à fait correct. La recherche Regex en Perl a un certain nombre d'effets secondaires, même si vous n'attribuez le résultat à aucune variable. Par exemple, la variable $ & détient la dernière correspondance, donc, on peut l'utiliser sur la ligne suivante, comme ceci: if (defined $ &) {...} –
=~
est un opérateur de correspondance.
L'instruction renvoie true si $ variable ne contient que des espaces ou est simplement vide.
Il vérifie simplement si la chaîne est vide ou non.
if ($variable =~ /^\s*$/)
est le même que
unless ($variable =~ /\S/)
ou
if ($variable !~ /\S/)
L'expression "tout nombre" est un peu vague, je dirais zéro ou plusieurs espaces à la place. –
J'ai modifié pour être un peu plus explicite –