我已经写了perl程序读取一些数据(该数据是名字,其包括由一个下划线分割字母数字字符,如SDF_233),我读,在使用为什么我的Windows上的perl程序在我的mac上不能在山狮上运行?
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;}
数据I打印$name
所以我可以用它作为参考,当我比较回原始列表时,可以仔细检查程序是否经历了每个名称。
问:这适用于Windows - 我在我的Mac上试过同样的事情,但它不起作用。我没有输出$name
,但$otherdata
确实打印 - 这是为什么?下划线与此有关吗?
什么Perl版本?什么Mac版本?你将哪些数据输入到脚本中,作为输出得到什么,以及你期望什么?你使用什么编码?你在哪里拆分你的数据? – amon
调试时,使用[Data :: Dumper](http://search.cpan.org/perldoc?Data%3A%3ADumper)模块准确查看变量中的内容是一个非常好的主意。例如。 '使用Data :: Dumper; $数据::自卸车:: Useqq = 1;打印Dumper $ name;'。在你的情况下,你的字符串中可能会有一些空白符号,Useqq选项会逐字输出空格(和其他转义序列),例如, '\ r \ n \ 0'等 – TLP
我的猜测是你在这里被行结局咬伤。因为当你读取文件时,你并没有清除行结束符,所以在某些环境中可能会以'\ r'结尾,这会导致'$ otherdata'覆盖'$ name'。尝试添加一个'chomp $ name',然后再做任何事情。 – zigdon