Slashdot Mirror


Perl Carbon/Cocoa Bindings on Mac OS X?

gigawattwarlock asks: "As an almost new Mac OS X user (I've been adminning my wife's Mac for a while now), I am used to writing Perl scripts for her Mac, which work just fine. Simply put, I have become spoiled with the GTk bindings for Perl on Linux. I love being able to use and abuse a robust GUI, quickly and easily. And to make matters worse, I find the Aqua interface near addictive ... enough so that the idea of installing another desktop environment (KDE, Gnome, et. al) just seems a little silly, and a bit of overkill, to me. Does anyone know if there are any perl bindings in the works for Mac OS X or maybe even an already existent alternative graphical library or interface within Mac OS X?"

11 of 57 comments (clear)

  1. camelbones by Fiery · · Score: 5, Informative

    Here's a project that's doing this. They seem to have functioning code, too.

  2. Just use Objective C by foobar104 · · Score: 5, Informative

    Yeah. There are several, in various stages of incompleteness.

    But why don't you just read the tutorial and learn to program Cocoa with Objective C? Programming Cocoa apps with Objective-C, using Project Builder and Interface Builder, is, I dare say, easier than writing Perl scripts that call Cocoa functions would be. You don't even need to be terribly familiar with C to write simple apps.

    Don't get me wrong. I love Perl as much as the next guy. But I don't like writing GUI code. It's a pain in the ass, no matter how nice the programming language might be. The combination of Interface Builder and Objective C makes whipping up little Cocoa apps easy as pie, and fun, too.

    You can find the Objective-C Cocoa tutorial in PDF form here. It's also included with the OS X developer's tools under /Developer/Documentation/Cocoa/ObjCTutorial.

    1. Re:Just use Objective C by BitGeek · · Score: 3, Informative

      Please mod this parent up, its NOT off topic.

      The reason is this: Getting access to perl code you've written or integrating perl with an Obj-C API is really easy using this method.

      If you write an application in Obj C (or Java-- actually Java would be my choice) you get to use interface builder to build your UI-- this is the best/fastest way to build a great UI. Then, its a simple matter of linking that UI to the perl scripts you've already written.

      This can be done in a number of ways, the most explicit being to simply call the shell from within your ObjC application.

      ObjC (despite my prior prejudice against it) is turning out to be a pretty decent and relatively easy language to learn. And, of course, when you consider Interface Builder its the best way to build an interface for any language-- just write minimal ObjC to tie your buttons, etc, to the bulk of your code.

      I imagined you'll spend 3 hours learning the ObjC stuff and then be back on your way programming-- and actually get more productive than if you have a Perl Aqua UI to work with because it would be slower to specify that Aqua UI in Perl using the custom API (than using Interface Builder.)

      So please, mod this parent up-- essentially the "bridge" is already there, its just "unconventional". Not "offtopic".

      --
      Yeah, and you guys panned the ipod too: http://apple.slashdot.org/article.pl?sid=01/10/23/ 1816257
  3. Ask Pudge! by 2nd+Post! · · Score: 5, Informative

    Have you looked here?

    Pudge has a site with lots of Mac+Perl info and projects, including a link to this, a tool to connect Perl to the Apple Event model.

    Of course this begs the question why you haven't already looked at AppleScript Studio and AppleScript, which allows you to script the OS and many of it's Apps?

    This snippet allows me to start my apps when I get into work:

    tell application "ICQ 3.0X"
    activate
    end tell
    tell application "AOL Instant Messenger (SM)"
    activate
    end tell
    tell application "Yahoo! Messenger"
    activate
    end tell
    tell application "Microsoft Outlook"
    activate
    end tell

    It's not particularly complex nor instructive, but AppleScript is full featured and extensive. I have a cronjob run an AppleScript in the mornings, where the AppleScript opens iTunes, opens a playlist, and then start playing, as my alarm clock!

    tell application "iTunes"
    play user playlist "Sweet-Sad"
    play
    end tell

  4. O'Reilly book on Perl/Cocoa coming soon? by wka · · Score: 2, Informative
    From the preface to Building Cocoa Applications: A Step-by-Step Guide, (page xviii, after mentioning an upcoming book on Cocoa and Java):
    "(And for those interested in writing Perl applications for this new platform [OS X], watch for Programming Cocoa Applications with Perl, also coming soon from O'Reilly.)"
    Note: I don't see anything about this on O'Reilly's new and upcoming book list, so it's possibly quite a few months off.
    1. Re:O'Reilly book on Perl/Cocoa coming soon? by Elian · · Score: 2, Informative

      Yep, a while off. A few chapters done, and more to come. (Sez the man feverishly writing the thing... :)

  5. jaguar by Anonymous Coward · · Score: 4, Informative

    I wouldn't put too much work into your own solutions...

    Perl-Objc bindings are included in jaguar.

    See: Library/Perl/darwin/PerlObjCBridge.pm

    1. Re:jaguar by Elian · · Score: 2, Informative

      This doesn't work at all well. Tried it, no joy. The problem is that Cocoa only works with real, honest-to-goodness applications, and you have to load the frameworks in the right order.

  6. F-Script by tarzan353 · · Score: 1, Informative

    Another great way to interact with Cocoa apps is F-Script and F-Script Anywhere.

    I know it's not exactly what the asker was looking for, but AS and Perl have already been discussed in detail. F-Script offers a different type of scriptability.

  7. use python w/ native mac GUI or Gtk/Qt on mac X by Splork · · Score: 3, Informative

    python apparently has excellent macos X gui support. (i don't pay the apple tax myself so i can't judge first hand). on top of that you should be able to use anything with Qt or Gtk bindings using X on the mac (python and perl both have good bindings there).

    [and before any perl weenies mod this down because i said to use a different language: grow up!]

  8. More Resources by pudge · · Score: 5, Informative

    I meant to respond earlier, but didn't get the chance. There are several ways to go about this. One is to the oft-mentioned CamelBones, which is in initial stages, but is a great start for Cocoa bindings. For Carbon, there is a vaporware project I've played with, a SWIG-based glue for Perl, Python, Tcl, Ruby, and maybe more, and more details of it will be forthcoming when it's ready.

    Right now there is also the Carbon-based MacOSX::File, which offers much of the same functionality as the Mac::Files module included in MacPerl, and there is OSXMacPerl, a basic clone of the MacPerl module (DoAppleScript and more are provided).

    And some day I would like to port the Mac:: modules to Carbon, if I get the tuits.