我打算将文件名添加到文件夹路径字符串的末尾。例如,在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
字符串长度不变,而前几个字符被替换为需要附加的字符串。那我该如何解决这个问题呢?
答案 0 :(得分:3)
运行您的代码可以给我准确的预期输出。
这是我运行的程序:
#!/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之间传输文件而未进行适当的行尾转换而使问题更加复杂。
更新:为了支持ikemami的理论,这是我的测试程序的经过轻松编辑的版本(我在$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