我最近编写了一个转换器,它将旧的Wiki页面转换为SharePoint页面。
这一切都是通过命令行完成的,但现在我用Win32切换到了GUI。
我仍然是Perl的新手,只是将我的工作代码复制到我的new.pl
并使用花哨的GUI。
一切正常,这一行:
$newFileName = 'Pages/'.$file.'.aspx';
它应该输出我的目录(Pages/TheFileName.aspx
)的路径,我存储转换后的页面。
但是,当我打印$newFileName
时,我得到了这个:
.aspx/TheFileName
.aspx
会覆盖页面而不是在最后连接。
我已经尝试了数百个其他组合但第二个连接只是覆盖了我的文本。这是完全相同的一行,它在我的另一个脚本中工作。
答案 0 :(得分:1)
$ newFileName的确切内容似乎是
"Pages/TheFileName\r.aspx"
,打印时看起来像
.aspx/TheFileName
因为包含“\ r”(回车)会导致光标转到行的开头,以便“.aspx”覆盖屏幕上的“页面”。
如此简单的修复(如评论中已提到的)是从$ file中删除“\ r \ n”,例如与
$file =~ s/\r//g;
这样的问题在Windows中很常见,因为在Windows中,换行符是“\ r \ n”而许多类似unix的程序除了“\ n”之外,因此很容易在字符串中留下额外的“\ r \ n”。