Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows perl将所有命令行参数塞入$ARGV[0]_Windows_Perl_Command Line - Fatal编程技术网

Windows perl将所有命令行参数塞入$ARGV[0]

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

在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\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的注册表似乎有问题。是的。非常感谢。我纠正了,但没有改变任何事情。