perl使用空格参数执行外部命令

perl使用空格参数执行外部命令,perl,Perl,我有两个文件 $file = "songOne.wav"; $file = "song Two.wav"; 当我执行 system("command songOne.wav"); system("command song Two.wav"); 它成功地执行了命令 但是当我执行 system("command songOne.wav"); system("command song Two.wav"); 它给出了一个错误,因为中间有一个空格, 因此命令将其视为两个参数 output :

我有两个文件

$file = "songOne.wav";
$file = "song Two.wav";
当我执行

system("command songOne.wav");
system("command song Two.wav");
它成功地执行了命令

但是当我执行

system("command songOne.wav");
system("command song Two.wav");
它给出了一个错误,因为中间有一个空格, 因此命令将其视为两个参数

output : 
can't open file song
can't open file Two.wav
如何使命令将它们视为一个文件

谢谢

您可以传递参数列表:

my @args = ("command", "song Two.wav");
system (@args);
或者,如果不想创建数组,请执行以下操作:

system ("command", "song Two.wav");

必须引用包含空格的文件名。其中之一可以:

system("command", "song Two.wav");

system("command \"song Two.wav\"");

system("command 'song Two.wav'");

将数组传递给
系统时只有一个gotcha:如果数组只包含一个元素,则该元素将接受shell处理。要强制进行正确的解释,可以使用有趣的
system{$args[0]}@args
@amon。直到现在,我还没有在文档中读到这一点,谢谢你的提示……或者使用IPC::System::Simple中的
systemx
。奖励:它通过抛出一个异常来处理来自孩子的错误。@ikegami这是一个很酷的模块,以前从未见过它。顺便说一句,您可以自由编辑,它由
使用autodie qw(系统)使用