我有一个目录,有很多.wav文件。我通过curl命令读取每个文件的数据并将其存储到不同的文件中。
这不是完整的脚本。脚本的某些部分 -
@command= '--request POST --data-binary "@Raajpal_long.wav"
"https://services.govivace.com:49162/SpeakerId
action=search&confidence_threshold=0.0&number_of_matches=20&format=8K_PCM16"';
$stdout=system("curl @command");
当我运行perl脚本时,它在命令行窗口提供输出:
{"status": 0, "processing_time": 96.0, "enrollment_audio_time": 131.10000610351562, "matches": [{"speaker": "sw", "identification_score": 252.54136657714844}]}
我想将此输出存储到文件中。
我用过 -
open (FILE, ">1.txt") or die "Unable to open "1.txt";
$stdout=system("curl @command");
print FILE $stdout;
只保存零(0);
任何人都可以告诉我如何解决这个问题吗?
答案 0 :(得分:3)
你已经开始乞求卷曲来提出要求;使用curl的-o
/--output
选项写入文件而不是stdout会更清晰。
-o, --output <file>
将输出写入而不是stdout。如果您使用的是{}或[] 获取多个文档,你可以使用'#'后跟一个数字 符。该变量将被当前替换 要提取的URL的字符串。喜欢在:
curl http://{one,two}.example.com -o "file_#1.txt"
或使用几个变量,如:
curl http://{site,host}.host[1-5].com -o "#1_#2"
您可以使用此选项的次数与您拥有的URL数量相同。 例如,如果在同一命令行中指定两个URL,则可以 像这样使用它:
curl -o aa example.com -o bb example.net
并且-o选项和URL的顺序无关紧要 第一个-o是第一个URL,依此类推,所以上面的命令行 也可以写成
curl example.com example.net -o aa -o bb
答案 1 :(得分:-2)
您无法使用系统捕获输出,您可以使用反引号``代替系统。
类似的东西:
my @command= '--request POST --data-binary "@Raajpal_long.wav"
"https://services.govivace.com:49162/SpeakerId
action=search&confidence_threshold=0.0&number_of_matches=20&format=8K_PCM16"';
my $result = `curl @command`;
if ( $? == -1 ){
print "\n Curl Command failed: $!\n";
} elsif ($? == 0 ) {
print "$result\n";
}