Запуск вашего кода дал мне именно тот результат, который я ожидал.
Вот программа, которую я запустил:
#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
my $folderpath = "/u/username/folder1/folder2/folder3/folder4";
my $filepath = $folderpath . "/checkfile.tgz";
say "Folder path is: $folderpath";
say "File path is: $filepath";
И вот результат, который я получил:
Folder path is: /u/username/folder1/folder2/folder3/folder4
File path is: /u/username/folder1/folder2/folder3/folder4/checkfile.tgz
Если это не то, что вы видели, пожалуйста, обновите ваш вопрос, чтобы дать небольшую, но полную программу, которую мы можем запустить, которая демонстрирует вашу проблему.Вы также должны точно указать, что вы ожидаете увидеть.
Как говорит ikegami в комментарии, это почти наверняка проблема с переводом строки и возвратом каретки - возможно, осложненная переносом файла между Windowsи Linux без соответствующих преобразований конца строки.
Обновление: Чтобы поддержать теорию Икемами, вот слегка отредактированная версия моей тестовой программы (я добавил символ возврата каретки)до конца $folderpath
).
#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
my $folderpath = "/u/username/folder1/folder2/folder3/folder4\r";
my $filepath = $folderpath . "/checkfile.tgz";
say "Folder path is: $folderpath";
say "File path is: $filepath";
А вот вывод этой программы:
Folder path is: /u/username/folder1/folder2/folder3/folder4
/checkfile.tgz/u/username/folder1/folder2/folder3/folder4