加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 将参数传递给脚本,获取:“使用未初始化的值$ARGV [0]”

发布时间:2020-12-15 21:45:42 所属栏目:大数据 来源:网络整理
导读:问题: Windows XP没有将命令行参数传递给perl脚本. 症状:一个简单的命令,如: say "Argument 1 ($ARGV[0]) is: $ARGV[0],argument 2 ($ARGV[1]) is: $ARGV[1]."; 导致: Use of uninitialized value $ARGV[0] in concatenation (.) or string at... 解:
问题: Windows XP没有将命令行参数传递给perl脚本.

症状:一个简单的命令,如:

say "Argument 1 ($ARGV[0]) is: $ARGV[0],argument 2 ($ARGV[1]) is: $ARGV[1].";

导致:

Use of uninitialized value $ARGV[0] in concatenation (.) or string at...

解:

根本问题出在Windows XP中.启动perl的默认方法只传递第一个变量,即脚本名称.结果是$ARGV [0]未初始化.

修复是在以下位置编辑Windows注册表:

HKEY_CLASSES_ROOTPerlshellOpencommand

并输入:

"C:Perlbinperl.exe"  %*

结果是:

C:whatever>perl argtest.pl 1 2
Argument 1 ($ARGV[0]) is: 1,argument 2 ($ARGV[1]) is: 2.

特别感谢大卫W,他指出了我正确的方向.

解决方法

请注意,Perl中的@ARGV与C中的argv不太相似.
C          Perl

Name of the program        argv[0]        $0
1st argument               argv[1]      $ARGV[0]
2nd argument               argv[2]      $ARGV[1]
n-th argument              argv[n]      $ARGV[n-1]

因此,如果您为Perl脚本提供一个命令行参数,它将在$ARGV [0]中找到. $ARGV [1]将未初始化.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读