Fonction join() en Perl

Dans le langage de programmation Perl, il ya une fonction intégrée join(). Avec cette fonction, vous pouvez combiner plusieurs valeurs dans une chaîne.

Voici un exemple:

▶ Run
#!/usr/bin/perl

my $str = join('<>', 'a', 'b', 'c');
print $str;

Le programme affichera le texte a<>b<>c.

Les arguments

my $str1 = join($separator, $value1, $value2);
my $str2 = join($separator, @arr);
my $str3 = join($separator, @arr1, @arr2);

L'utilisation standard de la fonction join() est de passer deux ou plus de l'argument. La première valeur qui est transmise à la fonction est une chaîne de diviser. La fonction de join() renvoie une chaîne dans laquelle toutes les valeurs commençant par la la deuxième reliés entre eux, et entre eux se trouve un séparateur. Exemple (programme affiche a:b:c:d):

▶ Run
#!/usr/bin/perl

print join(':', 'a', 'b', 'c', 'd');

Dans ce cas, si après la valeur de séparateur est seulement une valeur, le résultat est une chaîne de caractères qui se compose uniquement d'une deuxième valeur. Exemple (le programme affichera a):

▶ Run
#!/usr/bin/perl

print join(':', 'a');

La valeur de la fracture peut être un ou plusieurs caractères, et peut-être vide ligne ''. Si vous utilisez une chaîne vide comme la première valeur, le résultat du travail de la fonction est la concaténation de valeurs. Exemple (le résultat du travail programme ABC):

▶ Run
#!/usr/bin/perl

print join('', 'A', 'B', 'C');

Si la fonction join() ne transmettre aucun argument, ce serait une erreur:

Not enough arguments for join or string at script.pl line 3, near "join()"
Execution of script.pl aborted due to compilation errors.

Si vous passez de la fonction join() un seul argument, le résultat du travail sera toujours une chaîne vide ''. Si vous passez undef comme le seul l'argument, le résultat sera aussi une chaîne vide, mais inclus use warnings, sur STDERR un avertissement s'affiche:

Use of uninitialized value in join or string at script.pl line 5.

La valeur de retour

Le résultat du travail de la fonction join() — c'est toujours une chaîne.

Même si l'utilisation de la fonction join() avec les chiffres, le résultat est égal à la chaîne, et non pas le nombre. Si écrire join(1, 22, 33), le résultat est une chaîne de '22133', nombre d' 22133. Mais il est difficile d'imaginer une situation dans laquelle il fallait que join() renvoie le nombre, et non pas une chaîne. Mais dans le cas de Perl, il est possible d'utiliser les lignes dans toutes des opérations mathématiques. Plus d'infos sur ce que Perl convertit une chaîne en nombre.

Thèmes connexes

La documentation officielle

Voici la sortie de la commande perldoc -f join:

       join EXPR,LIST
               Joins the separate strings of LIST into a single string with
               fields separated by the value of EXPR, and returns that new
               string.  Example:

                   $rec = join(':', $login,$passwd,$uid,$gid,$gcos,$home,$shell);

               Beware that unlike "split", "join" doesn't take a pattern as
               its first argument.  Compare "split".

Autres articles