Eu acho que não ha muito o que dizer sobre a função join exceto que atua como o oposto da função split.

Essa função pode receber vários elementos de uma lista ou array e juntá-los em um único texto.

use strict;
use warnings;
use v5.10;

my @names = ('Foo', 'Bar', 'Moo');
my $str = join ':', @names;
say $str;                       # Foo:Bar:Moo

my $data = join "-", $str, "names";
say $data;                      # Foo:Bar:Moo-names


$str = join '', @names, 'Baz';
say $str;                       # FooBarMooBaz

O primeiro parâmetro do join é o "conector", o texto que irá conectar todos os demais parâmetros. O resto dos parâmetros da função são "achatados" em uma lista e os elementos dessa lista serão colados pelo "conector".

O "conector" pode ser qualquer texto, até mesmo um texto vazio.