строка заменяется в начале, а не добавляется в конце в Perl - PullRequest
0 голосов
/ 03 января 2019

Мое намерение - добавить имя файла в конец строки пути к папке.Например, добавив checkfile.tgz в конце /u/username/folder1/folder2/folder3/folder4.Тем не менее, когда я запускаю код, как показано ниже

my $folderpath = "/u/username/folder1/folder2/folder3/folder4";
my $filepath = $folderpath . "/checkfile.tgz";

Вместо того, чтобы дать мне

/u/username/folder1/folder2/folder3/folder4/checkfile.tgz

, он показывает

/checkfile.tgzlder1/folder2/folder3/folder4

Длина строки не меняется, в то время какпервые несколько символов заменяются строкой, которую нужно добавить.Так как мне решить эту проблему?

1 Ответ

0 голосов
/ 03 января 2019

Запуск вашего кода дал мне именно тот результат, который я ожидал.

Вот программа, которую я запустил:

#!/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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...