perl - 最后一个字符串出现在格式化输出的行首
问题描述
有谁知道为什么以下内容会以一种奇怪的方式自行格式化?几年来,我在创建简单的文本输出方面没有任何问题,但这个问题让我感到困惑。
我正在使用这条线
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 。为什么退格字符会进入它?
解决方案
中的字符串以$OurDT
回车结束,这会使您的终端返回光标。据推测, 的值$OurDT
来自在 unixy 机器上读取的 Windows 文件。
一种选择是修复文件(例如通过使用dos2unix
实用程序)。
另一种方法是接受 CRLF 和 LF 作为行尾(例如,通过使用s/\s+\z//
而不是chomp
)。
推荐阅读
- algorithm - 胡的算法是否适用于一般的单位长度边 DAG?
- javascript - useEffect React Hook 使用异步等待多次渲染(提交按钮)
- javascript - 通过 Chrome 扩展程序使用 Google Cloud Pub/Sub
- julia - 如何在 Julia 的循环中跳过错误
- python - python - 尝试设置 Pong。预算小部件遇到问题并将其隐藏
- python - Dask:从 Parquet 写入/读取后的不一致指数
- ios - 定义 SnapKit 值时,CGAffineTransform 旋转会导致宽度和高度之间的切换
- python - 将数据保存到 pandas 中的多个 csv 文件
- ruby-on-rails - 如何解决使用 MiniMagick 操作失败,可能不是图像?原始错误:您必须安装 ImageMagick 或 GraphicsMagick
- sas - SAS 中使用哪些字符作为通配符?