【问题标题】:A simle Perl code with here-document works on Linux but not on Windows带有 here-document 的简单 Perl 代码适用于 Linux,但不适用于 Windows
【发布时间】:2014-05-01 10:01:44
【问题描述】:

在练习时我发现下面的代码在 Linux 上运行良好,但在 Windows 上却不行

print<<EOF;
this is a paragraph
EOF

在 Windows 上显示。

在 demo.pl 的 EOF 之前的任何地方都找不到字符串终止符“EOF”。

【问题讨论】:

  • 你的文件有正确的行尾吗? Linux:LF、Windows CR+LF
  • 是的,我检查过它有正确的行结束
  • 还有...文件末尾是否有行尾?
  • 是的,它就在那里。刚才我通过使用复制命令命令创建文件尝试了相同的代码,它工作正常。但不适用于使用记事本创建的文件
  • 基本上只有 4 种可能性。 EOF 标记之前有空格。 EOF 标记后有空格。该行没有行终止符。或者行终止符是错误的格式,unix 与 windows。

标签: windows string perl heredoc


【解决方案1】:

Windows 认为文件结尾是终止字符串EOF 的一部分,因此它不遵循终止字符串必须单独出现的规则。您需要在终止字符串EOF 之后添加一个新行。

print<<EOF;
this is a paragraph
EOF
# a new line

【讨论】:

  • @nikhilmehta 它适用于我的机器(Perl v5.16.3,Windows 7 64 位)
  • @nikhilmehta 我正在使用 Active Perl,我想知道这是否会有所不同。
猜你喜欢
  • 1970-01-01
  • 2022-10-01
  • 2022-11-21
  • 1970-01-01
  • 2021-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多