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]将未初始化. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |