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?"
Here's a project that's doing this. They seem to have functioning code, too.
Yeah. There are several, in various stages of incompleteness.
/Developer/Documentation/Cocoa/ObjCTutorial.
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
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
GPL Deconstructed
I wouldn't put too much work into your own solutions...
Perl-Objc bindings are included in jaguar.
See: Library/Perl/darwin/PerlObjCBridge.pm
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!]
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.
You, my friend, do not belong at slashdot. Just because someone ported a kernel and some low-level tools to the Wintel platform, it doesn't mean that it comes with:
Drivers
a GUI
Carbon support
Cocoa support
Framework support
OS 8.6+ support
or anything else that comes with OS X. In other words, you can't run, say, iTunes in Darwin for Intel/AMD. I would hope that the Slashdot community would know that a kernel is not all that an operating system is. You, obviously, cannot tell the difference.
This would be analogous to say, building a house. Suppose you could make a foundation for a house in a flat, grassy area and build a house on it. This would be OS X. Now, let's say that you could take a barrel of concrete and pour it down a sheer cliff. This sloppy, messy, incoherent splatter would be Darwin for Intel/AMD. Yes, it would be concrete, and yes, it might even mold itself into a semblance of a foundation. BUT , you cannot build a full-fledged house on a sheer cliff with a small, globular, spattered foundation that may not even be in one specific area!
I will now redundantly add my name to the end of my post. You know, in case you forgot me or something.
-- @rjamestaylor on Ello
In other words, you can't run, say, iTunes in Darwin for Intel/AMD.
I know this is trollfodder (not you; the guy two posts above you) but here it is anyway.
As was pointed out to me just the other day, you can just barely run Darwin for Intel at all. The list of supported hardware is incredibly short. Behold:
Supported Hardware:
-------------------
IDE:
Only the PIIX4 IDE controllers have been found to work.
Attached devices must be UDMA/33 compatible or better.
Ethernet:
Intel 8255x 10/100 ethernet controllers are supported.
Video:
You must have a VESA 2.0 compliant video card. Almost all
modern graphics cards are VESA 2.0 compliant. However, emulators
such as vmware do not have VESA 2.0 compliant emulated video cards.
Successfully tested hardware:
All 440BX motherboards tested have worked with their internal
IDE controllers.
IBM ThinkPad A21m (with onboard Intel ethernet)
Known to not be supported:
All AMD and VIA based systems.
If *you* weren't so uptight you'd have thought the analogy somewhat funny.
Um... except it wasn't. It's only funny if it's both witty and apt. Yours was only witty in the sense that you used the word "masturbation." And, as I pointed out, it wasn't apt at all.
You missed the mark, friend.
You might notice that I didn't say "MacOS X". I said Darwin. I know full well what Darwin is. It's a pretty definitive answer to the question of "Does MacOS X exist for Intel?". The answer is that part of the code has been ported. But of course you're so full of yourself that you think I need a lecture in the parts of an OS. I think you're not terribly smart. You might know some fluff about OSes but you're certainly too slow to realise that when someone makes a short statement it doesn't mean that that is the sum total of everything that they know.
-- SIGFPE