有关LF + CR和Windows编码与Linux编码的信息,用于Perl编程

时间:2014-04-21 23:09:49

标签: linux perl

我有perl脚本在windows中工作正常。但是当我尝试在Mac OS X中运行它时,它不执行完整任务。谁能解释LF + CR?为什么这些行结尾在Unix上不起作用? &安培;在那种情况下,如果我想在Linux / Unix中运行它,如何处理为windows编写的perl脚本?

2 个答案:

答案 0 :(得分:1)

假设您有一个包含以下字节的文件:

61 62 63 0D 0A 64 65 66 0D 0A

通过Windows定义文本文件,该文件包含两行61 62 6364 65 66以及行终止符。

通过unix对文本文件(包括Mac)的定义,该文件包含两行61 62 63 0D64 65 66 0D以及行终止符。

由于线条不同,当然它们的工作方式不同。

如果您使用的是unix系统,并且需要两行61 62 6364 65 66以及行终止符,则该文件需要包含以下字节:

61 62 63 0A 64 65 66 0A

您可以使用dos2unix将Windows文本文件翻译成unix文本文件。

答案 1 :(得分:1)

您可以使用perl将Windows行结尾(\ r \ n)更改为换行符(\ n):

perl -pi -e 's/\r\n?/\n/g' your-script.pl

通过使换行符可选,这也可以将传统的mac行结尾(\ r)转换为换行符。你可以把它变成别名:

alias fixlines="perl -pi -e 's/\r\n?/\n/g'"