220 words
In a way both AppleScript and perl are horrible languages. One of them is unwritable while the other is unreadable. Neither of those tendencies is funny.
An embarrasingly weak point of AppleScript is its handling of text. I doubt that anybody ever wanted to type AppleScript's text item delimiters
twice to replace some strings, no matter how cool that apostrophed genitive looks compared to other scripting languages. As soon as you try to do any text processing in AppleScript that is slightly more ‘sophisticated’ than concatenating strings you will find yourself cursing a lot.
Which is why people start saying that you could just cook up a perl script for the string processing, run that from your AppleScript and be happy ever after. It may be an embarrassing way of doing things, but at least it does the job.
Now the big question is of course whether the negative aspects of both languages multiply here and give something positive or whether I should just get off the happy-drugs and acknowledge that we’re dealing with an aesthetic disaster as mixing two different languages in the same file - via a do shell script
command or running osascript
- can’t possibly be pretty or easily editable.
But assuming that one does this sort of thing anyway, which way would be the best?
I’d sooner recommend using Python or Ruby via appscript: http://appscript.sourceforge.net/
I would definitely opt for the «do shell script» command, but use Python instead of Perl, like shown here:
http://bbs.macscripter.net/viewtopic.php?pid=98398
Or leave the AppleScript syntax behind and start using appscript:
http://appscript.sourceforge.net/
And never forget: AppleScript and women have a lot in common: They are both extremely hard to understand, but can enrich your life tremendously ;-)
Totally. I think even the scripting bridge stuff they ship with X.5 (no need for extra installs!) should be good for situations like this one.
In our situation we just wanted to retrofit an existing script with some regexp stuff and my friend is quite familiar with perl, so this odd mix seemed like the quickest thing to give results.
If I’m not mistaken, OSA should in principle allow an existing AppleScript to be converted to python / ruby / whatever code, which would be a cool thing to do. Unfortunately I haven’t discovered a tool for doing that yet.
I’ll second wvh: Python with appscript has been a really nice replacement for AppleScript for my purposes. It’d be nicer if Apple shipped appscript (and for that matter, python-mode for the included Emacs) but it’s not like it’s tough to install.
(I switched to Python after over a decade of writing Perl. I’ve been far more productive in my scripting/toolsmithing ever since.)
I have had luck (like ~3~4 years ago) with Perl’s AppleScript interface Mac::Glue (or was it Mac::GLUE?). I used it to do some non-trivial data gathering and collation between a bug report system that had Apple Script hooks, and a huge pile of psudo-formated ASCII text describing test failures.
It was definitely a lot nicer then attempting to drive perl from an Apple Script.
Since I happened to already know Perl and it was a good fit for the text de-mangleing it was a good choice for me. AppScript looks like a pretty decent thing to try, especially if you want to avoid Perl. For me the real key was using a “real” programming language to send/receive the Apple Events, and not attempting to work directly with Apple Script (with Mac::GLUE it also attempted to sanatise the reply event data, with varying success — most of my “how do I use this” problems came down to getting unexpected types back as replies, in retrospect I would have been better off having to explicictly make a decoder rather then have Mac::Glue guess correctly 75% of the time, and hand me “Objects” in need of decoding the rest of the time (to it’s credit I don’t think it ever mangled something it attempted to decode)).