Хотя вы можете, как уже упоминалось в других ответах, просто принудительно добавить завершающий слеш, у него есть некоторые незначительные проблемы, возникающие в результате двойного слеша - просто выглядеть некрасиво, по крайней мере, ИМХО, если вы печатаете имена файлов дляпротоколирование;к гораздо худшей проблеме усложнения синтаксического анализа / обработки указанных журналов при необходимости.
Более переносимый и идиоматический подход в Perl - это создание путей с использованием File :: Spec:
use File::Spec;
my $file = File::Spec::catfile($dir1,$filename);
Если вы чувствуете, что использовать модуль для чего-то, ЧТО простое - это не совсем простой подход, используйте регулярное выражение (, чтобы у вас теперь было 2 проблемы !:)
$dir =~ s!([^/])$!$1/!;
Этот подход обладает дополнительным преимуществом обучающего устройства для демонстрации того, что вам не нужно использовать косую черту в качестве разделителей регулярных выражений.
Кроме того, и, вероятно, уже очевидно для вас, но стоитповторение: НИКОГДА НЕ ДОВЕРЯЙТЕ ВХОДУ ПОЛЬЗОВАТЕЛЯ !!!
Поэтому при обработке параметров командной строки всегда делайте что-то вроде die "Not a directory: $dir1\n" unless -d $dir1;
.