Perl脚本(用于调用Mac::AppleScript Perl模块)

Perl脚本(用于调用Mac::AppleScript Perl模块),perl,applescript,Perl,Applescript,我正在使用shell和applescript脚本设置一些自动化。我的几个模块需要将几个参数传递到AppleScript中。尽管有几种方法可以做到这一点,但通过一些研究,我找到了“Mac::AppleScript Perl模块”,它看起来非常有前途。但是,它需要在/usr/local/bin中使用一个简短的.pl脚本。我发现的唯一一个例子有两个语法错误,我对Perl完全没有经验 我试着根据我在使用过的语言中所使用的东西来猜测可能会抛出错误的原因,但即使我能识别出在几个点上没有扩展的变量,我试图纠正

我正在使用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";
问题:

  • 在双引号字符串文本中有一个未转义的
  • 使用从未声明或初始化的变量
  • 您的代码中有一个游离的
    ,“n”
  • 您的代码存在bug
  • 错误消息出现在
    $@
    中,而不是
    $!
固定的:

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: $@");
未经测试