A função join() em Perl

Na linguagem de programação Perl possui a função de join(). Com esta função, você pode mesclar vários valores em uma seqüência de caracteres.

Aqui está um exemplo:

▶ Run
#!/usr/bin/perl

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

O programa exibirá o texto a<>b<>c.

Argumentos

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

O padrão de uso da função join() — é transmitir-lhe dois ou mais argumentos. O primeiro valor que passados para a função é uma cadeia de dividir. A função join() retorna uma cadeia de caracteres na qual todos os valores a partir do segundo unidas, e, entre eles, está o separador. Exemplo (programa de exibe a:b:c:d):

▶ Run
#!/usr/bin/perl

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

Nesse caso, se após o valor do divisor vai apenas um valor, o o resultado será a linha que é composta apenas a partir do segundo valor. Exemplo (o programa exibirá a):

▶ Run
#!/usr/bin/perl

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

O valor de dividir pode ser um ou mais caracteres, e pode ser vazio linha ''. Se utilizar uma cadeia vazia como um primeiro valor, o resultado do trabalho da função é uma concatenação de valores. Exemplo: (o resultado do trabalho programa ABC):

▶ Run
#!/usr/bin/perl

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

Se a função join() não passar nenhum argumento, então o erro será:

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

Se passar uma função join() um argumento, o resultado do trabalho será sempre uma string vazia ''. Se passar undef como o único o argumento, o resultado também será uma linha em branco, mas quando incluídos use warnings, o STDERR exibirá um aviso:

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

O valor de retorno

O resultado do trabalho da função join() — é sempre uma linha.

Mesmo se usar o recurso de join() com os números, o resultado é igual a linha, e não o número. Se escrever join(1, 22, 33), o resultado será uma seqüência de '22133', e não o número de 22133. Mas é difícil imaginar uma situação em que foi necessário para join() retorna exatamente o número, em vez de uma string. Mas no caso do Perl é perfeitamente possível usar o comando em quaisquer operações matemáticas. Leia mais sobre como Perl converte uma cadeia de caracteres em números.

Temas relacionados

A documentação oficial

Aqui está a saída do 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".

Outros artigos