Функция join() в Perl

В языке программирования Perl есть встроенная функция join(). С помощью этой функции можно объединить несколько значений в строку.

Вот пример:

▶ Run
#!/usr/bin/perl

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

Программа выведет на экран текст a<>b<>c.

Аргументы

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

Стандартное использование функции join() — это передать ей два или более аргумента. Первое значение которое передано в функцию — это строка разделить. Функция join() возвращает строку в которой все значения начиная со второго соединены вместе, а между ними находится разделитель. Пример (программа выведет a:b:c:d):

▶ Run
#!/usr/bin/perl

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

В том случае если после значения разделителя идет только одно значение, то результат будет строка которая состоит только из второго значения. Пример (программа выведет на экран a):

▶ Run
#!/usr/bin/perl

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

Значение разделить может быть один или несколько символов, а может быть пустой строкой ''. Если использовать пустую строку в качестве первого значения, то результат работы функции — это конкатенация значений. Пример (результат работы программы ABC):

▶ Run
#!/usr/bin/perl

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

Если функции join() не передать ни одного аргумента, то будет ошибка:

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

Если передать функции join() один аргумент, то результат работы будет всегда пустая строка ''. Если передать undef в качестве единственного аргумента, то результат тоже будет пустая строка, но при включенных use warnings, то на STDERR будет выведено предупреждение:

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

Возвращаемое значение

Результат работы функции join() — это всегда строка.

Даже если использовать функцию join() с числами, то результат будет все равно строка, а не число. Если написать join(1, 22, 33), то результат будет строка '22133', а не число 22133. Но сложно представить себе ситуацию в которой нужно было чтобы join() возвращает именно число, а не строку. Но в случае Perl вполне можно использовать строки в любых математических операциях. Подробнее о том как Perl преобразует строки в числа.

Связанные темы

Официальная документация

Вот вывод команды 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".

Другие статьи

Комментарии