在我的(cmd.exe' s)中,当前工作目录是名为 libre-office-document.odt 的文件。我可以使用start
命令打开此文档而不会出现问题:
c:\path\to\> start libre-office-document.odt
然而,如果我使用以下简单的Perl脚本
use warnings;
use strict;
print system("start libre-office-document.odt")
并在同一目录中执行它,我得到以下消息框:
LibreOffice 4.4 - 致命错误
无法启动应用程序 用户安装无法完成。
显然,使用Perl的system
命令时,某些行为会有所不同。我无法确定这是什么以及如何使用system
命令打开文档。
答案 0 :(得分:1)
使用反引号捕获输出。 您可以使用assoc和ftype检查文件关联,然后对其进行硬编码,或尝试执行以下操作:
use strict;
use warnings;
my $assoc = `assoc .odt`;
# .odt=LibreOffice.WriterDocument.1
chomp $assoc;
$assoc =~ s/.*=//g;
my $ftype = `ftype $assoc`;
# LibreOffice.WriterDocument.1="C:\Program Files\LibreOffice\program\soffice.exe" -o "%1"
chomp $ftype;
$ftype =~ /.*=("[^"]*")/;
$ftype = $1;
# "C:\Program Files\LibreOffice\program\soffice.exe" libre-office-document.odt
my $cmd = "$ftype libre-office-document.odt";
system($cmd);