Нет необходимости в ‘join‘, просто используйте интерполяцию строк.
my $a = "http://site.com";
my $part = "index.html";
my $full = "$a/$part";
print $full;
>> http://site.com/index.html
Обновление:
Не все требует модуля. CPAN - это прекрасно, но нужна сдержанность.
Простой подход, описанный выше, работает очень хорошо, если у вас есть чистые данные. Если вам нужно обрабатывать неравномерно отформатированные строки, вам нужно как-то их нормализовать. Использование библиотеки в пространстве имен URI, которая отвечает вашим потребностям, вероятно, является наилучшим вариантом действий, если вам нужно обрабатывать ввод данных пользователем. Если разница незначительна File::Spec
или небольшая ручная очистка может быть достаточно для ваших нужд.
my $a = 'http://site.com';
my @paths = qw( /foo/bar foo //foo/bar );
# bad paths don't work:
print join "\n", "Bad URIs:", map "$a/$_", @paths;
my @cleaned = map s:^/+::, @paths;
print join "\n", "Cleaned URIs:", map "$a/$_", @paths;
Когда вам приходится работать с плохими вещами, такими как $path = /./foo/.././foo/../foo/bar;
, это когда вы определенно хотите использовать библиотеку. Конечно, это можно решить с помощью функции канонического пути File::Spec
.
Если вы беспокоитесь о плохих / причудливых вещах в URI, а не только о проблемах с путями (имена пользователей, пароли, странные спецификаторы протокола) или URL-кодировке строк, то использование библиотеки URI действительно важно и, безусловно, не является чрезмерным.