【发布时间】:2012-03-28 13:14:09
【问题描述】:
我是 Perl 的新手,并且一直在努力寻找这个问题的答案,但我被困住了。
举个例子:
my $filein = $ARGV[0];
open(SNPIN,$filein);
while(<SNPIN>)
{
chomp;
split(/\s+/);
print "$_[0]\n";
}
close(SNPIN);
我使用的测试文件有以下几行:
This is a test.
Is a test.
A test.
此脚本在我们的 linux 服务器(使用 perl 5.10)上执行良好,输出每行的第一个单词 - 尽管它给了我以下警告:
Use of implicit split to @_ is deprecated at scan_test.pl line 7.
但是当我尝试在运行 OS X(使用 perl 5.12.3)的本地计算机上执行它时,出现以下错误:
Useless use of split in void context at scan_test.pl line 7.
Use of uninitialized value $_[0] in concatenation (.) or string at
scan_test.pl line 8, <SNPIN> line 1.
显然这是一个虚拟脚本。我继承了其他人在我们的服务器上运行的极其冗长和复杂的脚本,但我想在本地开发它,而不必遍历整个脚本并将所有默认变量调用重新分配给另一个变量。无论我尝试过什么(包括“使用 v5.10;”),都不允许我在本地机器上使用默认变量。
有什么想法吗?非常感谢您的帮助。
【问题讨论】:
标签: perl cross-platform