Первый случай включает косую черту, потому что "D:" является спецификатором объема. Это не правильное имя каталога. «D: /» аналогичен корневому каталогу в Unix / Linux.
Быстрое и грязное решение:
$directory .= '/' unless $directory =~ m|/$|;
Для надежного и портативного решения используйте File :: Spec или File :: Spec :: Functions , если вы предпочитаете не объектно-ориентированный интерфейс:
use Cwd;
use File::Spec::Functions qw(catdir);
my $directory = catdir(getcwd(), $ProjectName);
Обратите внимание, что catdir
не включает , а не , включая косую черту, и что File :: Spec создает пути, используя разделитель каталогов для операционной системы хоста. (например, обратная косая черта в Windows).