首页 > 解决方案 > 最后一个字符串出现在格式化输出的行首

问题描述

有谁知道为什么以下内容会以一种奇怪的方式自行格式化?几年来,我在创建简单的文本输出方面没有任何问题,但这个问题让我感到困惑。

我正在使用这条线

print "$BC,$Ttl,$FN,$SN,$Finalage,$OurLoc,$OurDT,$FinalPC\n";

每个值都是一个简单的文本字符串,我在其上运行“chomp”来删除返回字符。

我希望输出如下所示:

*DD10099999,,Information Services,Guest Ticket 2,41,C G,03/11/2020,NE8 9BB*

$BC 是第一项,$FinalPC 是最后的邮政编码。

相反,我得到:

*,NE8 9BB99, ,Information Services,Guest Ticket 2,41,C G,03/11/2020*

最后一项不知何故移到了行首并覆盖了第一项。这在我的屏幕和文本文件输出的每一行都持续发生,我完全不知道为什么。数据从文本文件中读取,并与同样是简单文本的数据库输出进行比较。我的代码中的任何地方都没有出现 \b 。为什么退格字符会进入它?

标签: perlformatting

解决方案


中的字符串以$OurDT回车结束,这会使您的终端返回光标。据推测, 的值$OurDT来自在 unixy 机器上读取的 Windows 文件。

一种选择是修复文件(例如通过使用dos2unix实用程序)。

另一种方法是接受 CRLF 和 LF 作为行尾(例如,通过使用s/\s+\z//而不是chomp)。


推荐阅读