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


Reply via email to