règles d'interpolation de Perl état que les réseaux ("@foo"
) et scalaires ("$bar"
), ainsi que (a) des recherches de valeurs de hachage ("$baz{bar}"
) ou des matrices ("$foo[1]"
), et (b) déréférences des cas précédents ("@$foo, $$bar, $baz->{bar}, $foo->[1]"
) sont interpolés dans des chaînes entre guillemets doubles.
Les appels de fonction et les appels de méthode d'extension ne sont pas interpolés.
Vous pouvez interpoler du code arbitraire dans des chaînes en utilisant une astuce de déréférencement d'une référence anonyme. Habituellement, vous voulez un arrayref:
"foo @{[ expressions; ]} bar"; # interpolating anon hashref
mais refs scalaires travailler aussi bien (ils sont 1 caractère plus).
"foo ${\(expressions;)}" # interpolating anon scalar ref
Cependant, vous devriez envisager la mise en cache la valeur que vous voulez interpoler dans une variable scalaire:
my $cardNumber = $self->cardNumber;
for (@accountsInfo) {
if (/\A\Q$cardNumber\E/) {
$self->pushing(split /,/);
$self->invokeAccount();
}
}
Note complémentaire: Je dépouillé parens unneccessary et mentions de $_
de cet extrait de code. En outre, j'ai échappé les caractères dans $cardNumber
afin qu'ils correspondent littéralement, et ne sont pas traités comme une regex.
Homme JE T'AIME les gars! Fonctionne parfaitement! – BackPacker777