Wow, you wait four years for a post on MacPerl digest and along come
two at once.
I thought that MacPerl::DoAppleScript dated back to pre-OS X MacPerl
(like this whole mailing list does).
You might try osascript instead. See for example:
http://oreilly.com/pub/a/mac/2003/11/07/scripting_osx.html
David
From: Alan Fry <a...@afco.demon.co.uk>
Date: 6 March 2011 15:38:02 GMT+01:00
To: macperl@perl.org
Subject: MacPerl::DoAppleScript and Perl v5.10.0
I have made a small Applet containing a Perl script intended for use
by folk not necessarily conversant with Perl. The script is inside
the applet bundle, is called by AppleScript and works as intended.
Unfortunately the Perl script itself calls 'MacPerl::DoAppleScript'
which causes an error if the version of Perl is 5.10.0, which is the
case of course on 'Snow Leopard' machines. The problem can be
resolved by setting 'Prefer-32-Bit' to 'Yes' in
'com.apple.versioner.perl.plist'. The question is how to achieve
this, bearing in mind some (possibly most) of the users will be
unused to Perl and terrified of using the Terminal.
I have resolved this difficulty for the moment by placing another
Perl script in the applet bundle which reads simply
if (qx(file /usr/bin/perl) =~ /executable x86_64/) {
qx(defaults write com.apple.versioner.perl Prefer-32-Bit -bool yes)
}
The notion behind this is that if the default version of the perl
executable is compiled for Intel 64 bit architecture it probably is
64 bit perl (?) and Prefer-32-Bit should therefore be set to 'Yes'.
This script is run before the main Perl script is launched by which
time 'com.apple.versioner.perl.plist' will have been updated.
The first question is this. Is it acceptable to change the setting
of 'com.apple.versioner.perl.plist' on someone else's machine? What
if the owner wants to use 64 bit Perl? It is not sensible to restore
the setting of Prefer-32-Bit to 'No' at the end of the run because
the owner may have already set it to 'Yes' anyway.
The second question is this. Is there a better way to resolve the
problem of how to contrive a portable Perl script incorporating a
'MacPerl::DoAppleScript call?
Suggestions would be most welcome.
Alan Fry