为什么我在windows上运行的perl程序不能在我的mac上运行在山狮上?

为什么我在windows上运行的perl程序不能在我的mac上运行在山狮上?,第1张

概述为什么我在windows上运行的perl程序不能在我的mac上运行在山狮上?

我已经写了一个读取一些数据的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打印 – 这是为什么? 下划线是否与此有关?

无法使用sed或grep提取捕获组

(bash)检查IP是否在子网范围文件中

如何使用正则Expression式提取URL的引号

RewriteRule ^(。*)/ $?path = $ 1 是什么意思在我的.htaccess?

Expression式混合4,编辑DataTemplate后回到窗口?

如何在bash脚本中存储“time”函数输出的子string

从特定字段中删除引号 – 引号之间的整数

如何使用egrep列出符合正则Expression式的单词?

Sed – 删除string之前的x个字符

在linux下的c + + 11的正则Expression式的奇怪的行为

你的代码肯定有你没有显示的chomp 。 如果是这样,问题是您的数据文件格式化为windows。 具体来说,它的行以CR LF结束。 在windows上,这将自动更改为LF,然后使用chomp删除。 在您的Mac上,该转换不会发生,因此您将CR留在后面。 你的代码输出

namer,otherdata

你的终端显示为

,otherdata

解决办法是修复你的输入文件

dos2unix names.txt

或改变

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

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

PS – 您不应该使用名为DATA的句柄。 Perl已经创建了一个名为,所以它很混乱。

PS – 使用s/[rn]+z//如果您处于奇怪的情况,您必须保留最后的空格。

像所有其他人一样,我认为你有行结束的问题。 我会诊断它的方式,如果这是我的脚本将是…

use strict; use warnings; use LWP::Simple; use Data::Dumper; # My favorite deBUGging tool my $file = "names.txt"; open(DATA,$file); my @lines=<DATA>; close DATA; print Dumper(@lines); foreach my $line (@lines) { my $name = chomp $line; print Dumper($name,$line); my $otherdata; #...some more code... print Dumper($otherdata); print $name . "," . $otherdata; }

总结

以上是内存溢出为你收集整理的为什么我在windows上运行的perl程序不能在我的mac上运行在山狮上?全部内容,希望文章能够帮你解决为什么我在windows上运行的perl程序不能在我的mac上运行在山狮上?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1221465.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存