首页 > 解决方案 > 如何从行尾删除 `\n` 字符?

问题描述

医生说:

咀嚼;# 在最后一个字段上避免 \n

但是当文件有 windows CRLF 时,只有 LF 从最后被删除。

my $line =  <STDIN>;
print chomp $line;                 # 1
print map{ ord } split '', $line;  # 46 49 13

如何CRLF从末尾删除两个字符?

标签: perl

解决方案


Glib 回答:在 Windows 上运行您的程序。

略少 glib 答案:dos2unix在处理数据文件之前运行它。

几乎完全不是油嘴滑舌的答案:

您指向的文档以此开头:

这个更安全的chop版本删除了与当前值对应的任何尾随字符串$/

所以如果你想改变你的行为,chomp()你需要改变$/.

{ # Always localise changes to Perl's internal variables.

  local $/ = "\015\012";

  chomp; # Now removes Windows line endings

} # Revert $/ to original value

推荐阅读