Функция join не использует шаблоны, но выполняет операцию, обратную по отношению к split. Если split разбивает строку на фрагменты, join «склеивает» набор фрагментов в одну строку. Вызов join выглядит так:
my $result = join $glue, @pieces;
Первый аргумент join определяет произвольную соединительную строку. Остальные аргументы определяют список фрагментов. Функция join вставляет соединительную строку между парами фрагментов и возвращает итоговую строку:
my $x = join ":", 4, 6, 8, 10, 12; # $x содержит "4:6:8:10:12"
В этом примере объединяются пять фрагментов, поэтому между ними вставляются четыре соединительные строки (двоеточия). Соединительная строка добавляется только между элементами, но не в начале или в конце списка. Это означает, что количество соединительных строк всегда на 1 меньше количества элементов в списке. Если список не содержит хотя бы двух элементов, соединительных строк вообще не будет:
my $y = join "foo", "bar"; # Получается только "bar",
# соединитель foo лишний
my @empty; # Пустой массив
my $empty = join "baz", @empty; # Элементов нет, пустая строка
Используя переменную $x из предыдущего примера, мы можем разбить строку и собрать ее заново с другим разделителем:
my @values = split /:/, $x; # @values содержит (4, 6, 8, 10, 12)
my $z = join "-", @values; # $z содержит "4-6-8-10-12"
Хотя split и join хорошо работают в сочетании друг с другом, не забывайте, что первый аргумент join всегда содержит строку, а не шаблон.