La función de join() en Perl

En el lenguaje de programación Perl tiene integrada la función de join(). Con esta función se puede combinar varios valores en una fila.

He aquí un ejemplo:

▶ Run
#!/usr/bin/perl

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

El programa mostrará en pantalla el texto a<>b<>c.

Los argumentos

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

Uso estándar de la función de join() es el de pasar de dos o más argumentos. El primer valor que pasar a la función es una cadena de dividir. La función de join() devuelve una cadena en la que todos los valores a partir de la la segunda se unen, y entre ellos se encuentra el separador. Ejemplo (programa de mostrará a:b:c:d):

▶ Run
#!/usr/bin/perl

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

En caso de que después del separador trata de un único valor, que el resultado es una cadena que consta de sólo el segundo valor. Ejemplo, el programa mostrará un a):

▶ Run
#!/usr/bin/perl

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

El valor de dividir puede ser uno o varios caracteres, y puede estar vacía la cadena de ''. Si utilizar una cadena vacía como el primer valor, el resultado de la ejecución de la función es la concatenación de los valores. Ejemplo (el resultado del trabajo de el programa de ABC):

▶ Run
#!/usr/bin/perl

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

Si la función de join() no enviar ningún argumento, lo que se producirá un error:

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

Si para pasar a la función join() un argumento, el resultado de la ejecución será siempre una cadena vacía ''. Si pasa undef como el único el argumento, el resultado también será una cadena vacía, pero cuando se use warnings, en STDERR aparecerá un mensaje de advertencia:

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

El valor devuelto

El resultado de la operación de la función de join() es siempre la cadena.

Incluso si utiliza la función de join() con los números, el resultado es una cadena, no el número. Si escribir join(1, 22, 33), el resultado será una cadena '22133', y no el número de 22133. Pero es difícil imaginar una situación en que era necesario para join() devuelve exactamente el número, y no es una cadena. Pero en el caso de Perl es posible el uso de cadenas en todas las operaciones matemáticas. Más información sobre la forma como Perl convierte una cadena en un número.

Temas relacionados

La documentación oficial

He aquí el resultado del comando 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".

Otros articulos