Funkcja join() w Perl

W języku programowania Perl jest wbudowana funkcja join(). Za pomocą tej funkcji można połączyć kilka wartości w ciągu.

Oto przykład:

▶ Run
#!/usr/bin/perl

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

Program wyświetla na ekranie tekst a<>b<>c.

Argumenty

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

Standardowe korzystanie z funkcji join() — to wyślij jej dwa lub więcej argumentów. Pierwsza wartość przekazywana do funkcji to ciąg podzielić. Funkcja join() zwraca ciąg, w którym wszystkie wartości od drugiego są połączone ze sobą, a pomiędzy nimi znajduje się separator. Przykład (program wyświetli a:b:c:d):

▶ Run
#!/usr/bin/perl

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

W tym przypadku, jeśli po wartości separatora idzie tylko jedną wartość, to wynik będzie ciąg która składa się tylko z drugiej wartości. Przykład (program wyświetli a):

▶ Run
#!/usr/bin/perl

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

Wartość podzielić może być jeden lub kilka znaków, a może być pusty ciągiem ''. Jeśli użyć pusty ciąg znaków jako pierwszego znaczenia, wynik działania funkcji jest połączeniem wartości. Przykład (rezultat pracy programy ABC):

▶ Run
#!/usr/bin/perl

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

Jeśli funkcje join() nie oddać ani jednego argumentu, to będzie błąd:

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

Jeśli przekazać funkcji join() jeden argument, to wynik pracy będzie zawsze pusty wiersz ''. Jeśli wyślij undef jako jedyny argument, wynik też będzie pusty wiersz, ale przy włączonych use warnings, na STDERR, zostanie wyświetlone ostrzeżenie:

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

Wartość zwracana

Wynik działania funkcji join() — to zawsze linia.

Nawet jeśli użyć funkcji join() z liczb, wynik jest nadal wiersz, a nie liczba. Jeśli napisać join(1, 22, 33), to wynik będzie ciąg '22133', a nie liczba 22133. Ale trudno wyobrazić sobie sytuację, w której trzeba było aby join() zwraca to liczba, a nie wiersz. Ale w przypadku Perl można użyć polecenia w jakichkolwiek operacjach matematycznych. Więcej o tym jak Perl konwertuje ciąg w liczby.

Tematy pokrewne

Oficjalna dokumentacja

Oto wynik polecenia 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".

Inne artykuły