在perl中,字符串在开头被替换,而不是在结尾追加

在perl中,字符串在开头被替换,而不是在结尾追加,perl,Perl,我的目的是将文件名添加到文件夹路径字符串的末尾。例如,在/u/username/folder1/folder2/folder3/folder4的末尾添加checkfile.tgz。但是,当我运行下面的代码时 my $folderpath = "/u/username/folder1/folder2/folder3/folder4"; my $filepath = $folderpath . "/checkfile.tgz"; 而不是给我 /u/username/folder1/folder2/

我的目的是将文件名添加到文件夹路径字符串的末尾。例如,在
/u/username/folder1/folder2/folder3/folder4的末尾添加
checkfile.tgz
。但是,当我运行下面的代码时

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

字符串长度不变,而前几个字符被需要追加的字符串替换。那么,我应该如何解决这个问题呢?

运行您的代码,得到了我所期望的结果

以下是我运行的程序:

#!/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
如果这不是你看到的,那么请更新你的问题,给出一个小但完整的程序,我们可以运行它来演示你的问题。你还应该确切地说明你希望看到什么

正如在一篇评论中所说的,换行符和回车几乎肯定是一个问题——可能是由于在Windows和Linux之间传输文件而没有进行适当的行尾转换

更新:为了支持ikemami的理论,这里是我的测试程序的一个稍加编辑的版本(我在
$folderpath
的末尾添加了一个回车符)

这是这个程序产生的输出:

Folder path is: /u/username/folder1/folder2/folder3/folder4
/checkfile.tgz/u/username/folder1/folder2/folder3/folder4

请不要撒谎。生成指定输出的代码与您提供的代码不同。在您实际运行的代码中,
$folderpath
有一个尾随回车ReturnHi。我刚刚在代码行的开头添加了四个空格。这意味着StackOverflow将把这些行格式化为代码(如您所见)。当然欢迎,但是请考虑以后自己做。这是我第一次处理Perl脚本中的Windows批处理命令返回的文件。显然,我错过了最后一行的\r。大错误。谢谢大家的帮助。
Folder path is: /u/username/folder1/folder2/folder3/folder4
/checkfile.tgz/u/username/folder1/folder2/folder3/folder4