Funzione join() in Perl

Nel linguaggio di programmazione Perl ci sono built-in funzione di join(). Con questa funzione è possibile combinare più valori in una stringa.

Ecco un esempio:

▶ Run
#!/usr/bin/perl

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

Il programma visualizzerà il testo a<>b<>c.

Argomenti

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

L'uso standard di funzioni join() è darle due o più argomenti. Il primo valore che è trasmesso in funzione è una stringa di condividere. Funzione join() restituisce una stringa in cui tutti i valori a partire dal secondo collegati tra loro, e tra loro si trova un separatore. Esempio (programma visualizza a:b:c:d):

▶ Run
#!/usr/bin/perl

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

Nel caso in cui dopo il valore separatore va solo un valore, il risultato è una stringa che consiste solo di un secondo valore. Esempio (il programma visualizzerà a):

▶ Run
#!/usr/bin/perl

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

Il valore di dividere può essere uno o più caratteri, e può essere vuoto stringa ''. Se si utilizza una stringa vuota come primo valore, il risultato del lavoro di una funzione è una concatenazione di valori. Esempio (il risultato del lavoro programma ABC):

▶ Run
#!/usr/bin/perl

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

Se la funzione join() non trasmettere alcun argomento, quello è un errore:

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

Se trasferire la funzione join() un argomento, il risultato del lavoro sarà sempre una stringa vuota ''. Se trasferire undef come unico argomento, il risultato sarà anche una stringa vuota, ma quando sono use warnings, quello su STDERR verrà visualizzato un messaggio di avviso:

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

Il valore restituito

Il risultato del lavoro funzione join() è sempre una stringa.

Anche se utilizzare la funzione di join() con i numeri, il risultato sarà comunque una stringa e non un numero. Se scrivere join(1, 22, 33), il risultato è una stringa '22133', e non il numero di 22133. Ma è difficile immaginare una situazione in cui c'era bisogno per join() restituisce esattamente il numero, e non una stringa. Ma in caso di Perl è possibile utilizzare il comando di tutte le operazioni matematiche. Leggi di più su come Perl converte le stringhe in numeri.

Temi correlati

La documentazione ufficiale di

Ecco l'output 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".

Altri articoli