我正在使用shell和applescript脚本设置一些自动化。我的几个模块需要将几个参数传递给AppleScript。尽管有几种方法可以这样做,但是经过一些研究,我找到了“ Mac :: AppleScript Perl模块”,它看起来确实很有前途。但是,它需要/ usr / local / bin中的简短.pl脚本。我发现的唯一示例有两个语法错误,而且我完全没有使用Perl的经验。
我已经尝试根据我使用的语言来猜测可能会引发什么错误,但是即使我可以识别出变量没有在某些地方扩展,但仍会尝试纠正该错误在进一步的错误中,我已经对其进行了数小时的修改。有人可以看看我能解决什么语法问题吗?
#!/usr/bin/perl
use strict;
use Mac::AppleScript qw/ RunAppleScript /;
if( $#ARGV = 0) ? '"'.join('","',@ARGV).'"' : "";
my $rtn = RunAppleScript( "return run script alias ((POSIX file ""
.$script.'") as text) with parameters {'.$args.'}' ),"n"
or die "AppleScript Error: $!";
$rtn =~ s/(^"|"$)//g;
print $rtn,"n";
答案 0 :(得分:1)
问题:
"
。,"n"
。$@
中,而不是$!
中。已修复:
sub text_to_as_lit { '"'.( $_[0] =~ s/([\\"])/\\$1/rg ).'"' } #'
my ($script, @args) = @ARGV;
my $rtn = RunAppleScript(sprintf(
"return run script alias ((POSIX file %s) as text) with parameters {%s}",
text_to_as_lit($script),
( join ',', map text_to_as_lit($_), @args ),
))
or die("AppleScript Error: $@");
未经测试。