Windows perl将所有命令行参数塞入$ARGV[0]
在Win 7中,以下是程序:Windows perl将所有命令行参数塞入$ARGV[0],windows,perl,command-line,Windows,Perl,Command Line,在Win 7中,以下是程序: # TestArg.pl print "\nin TestArg.pl, \$ARGV[0]=$ARGV[0], \$ARGV[1]=$ARGV[1], \$ARGV[2]=$ARGV[2]"; 当我在命令行中运行时:TestArg.pl 12 3 我得到:在TestArg.pl中,$ARGV[0]=123,$ARGV[1]=,$ARGV[2]= 而不是分发它们 在登记处: HKEY_USERS\...\Software\Classes\pl_auto_file
# TestArg.pl
print "\nin TestArg.pl, \$ARGV[0]=$ARGV[0], \$ARGV[1]=$ARGV[1], \$ARGV[2]=$ARGV[2]";
当我在命令行中运行时:TestArg.pl 12 3
我得到:在TestArg.pl中,$ARGV[0]=123,$ARGV[1]=,$ARGV[2]=
而不是分发它们
在登记处:
HKEY_USERS\...\Software\Classes\pl_auto_file\shell\open\command is:
Default REG_SZ "C:\Perl\bin\perl.exe" "%1" "%*"
我试图将REG_SZ
更改为REG_MULTI_SZ
,但它不允许,尽管我是管理员
如果我可以编辑它,这会解决问题吗
如果是,我如何获得访问权限
如果它没有帮助,会有什么帮助呢?它应该是
%*
,而不是“%*”
我在上面的评论中留下的答案太离谱了,无法显示,所以我将在这里重复它,在可以看到的地方
正如凯诺西斯所说,这个问题在4年前的1695188号问题上得到了回答
它需要在Applications\perl.exe\shell\open\command注册表字段的末尾添加%*
我有那个%*,但只在pl\u auto\u file\shell\open\command字段中
有趣的是,无论是谁设置了这个领域,至少4年来都在做错事 “当我在命令行上运行:TestArg.pl 1 2 3时”您的意思是
perl TestArg.pl 1 2 3
?不,我依靠文件关联知道以.pl结尾的程序使用perl.exe运行。但这是个好问题!自从我发布之后,我开始玩注册表,把事情搞砸了,显然把一切都恢复原状,但是现在,前面没有perl.exe的调用不会传递任何参数,但是使用perl.exe的调用工作正常!有人知道如何设置所有注册表项吗?这是ActiveState Perl吗?REG_SZ是您想要的,这是ActiveState Perl。但是如果问题出在Perl上,我会感到惊讶。Windows的注册表似乎有问题。是的。非常感谢。我纠正了,但没有改变任何事情。