gpt4 book ai didi

regex - 为什么我在 windows 中运行的 perl 程序在我的 mac 上不能在 mountain lion 中运行?

转载 作者:可可西里 更新时间:2023-11-01 10:00:25 25 4
gpt4 key购买 nike

我写了一个读取一些数据的 perl 程序(数据是包含由下划线分隔的字母数字字符的名称,例如 SDF_233),我在使用中读取了该数据

use strict;
use warnings;
use LWP::Simple;

my $file = "names.txt";
open(DATA,$file);
my @lines=<DATA>;
close DATA;

foreach my $line (@lines) {
my $name = $line;
my $otherdata; ...some more code...

print $name . "," . $otherdata;}

我打印 $name 以便我可以将它用作引用,以便在我与原始列表进行比较时仔细检查程序是否遍历了每个名称。

问:这适用于 Windows - 我在我的 Mac 上尝试过同样的操作,但它不起作用。我没有得到 $name 的输出,但是 $otherdata 打印出来了——这是为什么?下划线与此有关吗?

最佳答案

您的代码肯定有一个您没有显示的chomp。如果是这样,问题是您的数据文件是针对 Windows 格式化的。具体来说,它的行以 CR LF 终止。在 Windows 上,它会自动更改为 LF,稍后您可以使用 chomp 将其删除。在您的 Mac 上,不会发生这种转换,因此您将 CR 留在后面。你的代码输出

name\r,otherdata

您的终端显示为

,otherdata

解决方案是修复你的输入文件

dos2unix names.txt

或改变

while (my $line = <DATA>) {
chomp($line);
...
}

while (my $line = <DATA>) {
$line =~ s/\s+\z//;
...
}

PS - 您不应该使用名为 DATA 的句柄。 Perl 已经创建了一个名为那个的,所以它很困惑。

PS - 如果您遇到必须保留尾随空格的奇怪情况,请使用 s/[\r\n]+\z//

关于regex - 为什么我在 windows 中运行的 perl 程序在我的 mac 上不能在 mountain lion 中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12428436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com