Quel est l'équivalent en Perl de strlen()
?
Votre réponse serait meilleure si elle comportait un exemple.
Quel est l'équivalent en Perl de strlen()
?
length($string)
perldoc -f length
length EXPR
length Returns the length in characters of the value of EXPR. If EXPR is
omitted, returns length of $\_. Note that this cannot be used on an
entire array or hash to find out how many elements these have. For
that, use "scalar @array" and "scalar keys %hash" respectively.
Note the characters: if the EXPR is in Unicode, you will get the num-
ber of characters, not the number of bytes. To get the length in
bytes, use "do { use bytes; length(EXPR) }", see bytes.
Que se passe-t-il si la chaîne de caractères contient des zéros intégrés (par exemple, à la suite de la lecture d'une partie ou de la totalité d'un fichier fichier binaire en une chaîne de caractères) ? Le terme "longueur" peut ne pas être l'équivalent exact.
Bien que 'length()' soit la réponse correcte qui devrait être utilisée dans tout code sain, L'horreur de la longueur d'Abigail doit être mentionnée, ne serait-ce que pour l'histoire de Perl.
En gros, l'astuce consiste à utiliser la valeur de retour de l'opérateur de translittération fourre-tout :
print "foo" =~ y===c; # prints 3
y///c remplace tous les caractères par eux-mêmes (grâce à l'option complémentaire 'c'), et renvoie le nombre de caractères remplacés (donc, en fait, la longueur de la chaîne).
Les modes de comptage de y ne modifient pas réellement la chaîne de caractères, de sorte qu'ils fonctionnent bien même sur des valeurs en lecture seule.
@Yanick Je n'arrive pas à lire le lien de "Abigail's length horror" donc pouvez-vous expliquer cela s'il vous plaît ? Je sais que ce sujet est vieux, mais il y a des nouveaux venus comme moi qui sont intéressés.
Pas une réponse mais une observation : J'exécute la v5.30.2 construite pour darwin-2level, et j'ai remarqué que si je ne chomp
l'entrée d'abord (comme avec stdin), puis calcule la longueur, les length
d'un seul caractère n'est pas 1, mais 2.
N'oubliez pas les sauts de ligne et les autres caractères cachés qui peuvent jouer un rôle.
Et j'aimerais bien trouver le post d'Abigail, mais hélas il semble avoir été consumé par l'éther.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.