我的命令:
system("start cmd.exe /k C:\\script.pl $arg1 $arg2 $arg3");
没有正确传递参数。这样做的正确方法是什么?
谢谢
调用的最佳方法system
是使用数组或列表:
my @args = ("start", "cmd.exe", "/k", "C:\\script.pl", $arg1, $arg2, $arg3);
system @args;
system "start", "cmd.exe", "/k", "C:\\script.pl", $arg1, $arg2, $arg3;
与单个字符串 to 相比system
,这节省了“如何引用参数”的复杂性,因为 shell 没有机会解释它们。另一方面,如果您希望 shell 进行 I/O 重定向或管道,您可能不会使用这种机制。