Perl Carbon/Cocoa Bindings on Mac OS X? 57
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?"
camelbones (Score:5, Informative)
Re:camelbones (Score:2)
I made a few simple test programs and didn't have any trouble, but I have a feeling that some of the more esoteric bits of Cocoa might not work too well.
The PerlObjective-C bridge is pretty good. Perl is pretty well suited for interacting with Objective-C (better than Java, certainly) due to its dynamic nature.
Re:camelbones (Score:2)
Thanks, I'm glad you like it.
the documentation is nearly non-existant, unfortunately.
Guilty as charged. All I can say is, I didn't think very many people were interested in it; I can count the daily hits on the project page with one hand. Seems like the interest level is higher than I thought, though, so I'll get off my lazy ass and write more docs, pronto.
Re:camelbones (Score:1)
-Alex
Re:camelbones (Score:1)
Please do, I've had it installed for a while now, and am very happy with it!
"Ask Slashdot" in disguise--use question mark! (Score:1, Troll)
An announcement of a Perl binding for Cocoa is somewhat interesting to me, but in general AS's aren't.
Just use Objective C (Score:5, Informative)
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 [apple.com]. It's also included with the OS X developer's tools under
Re:Just use Objective C (Score:3, Informative)
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".
Re:Just use Objective C (Score:1, Offtopic)
Everything is proceeding as planned... mwah-ha-ha.
Re:Just use Objective C (Score:1)
Still, you can use the Interface Builder with CamelBones. It's possible to build a fully GUI based app entirely in perl.
Re:Just use Objective C (Score:1)
As you pointed out, Interface Builder is wonderful; use Perl through AppleScript Studio.
Russell Ahrens
Re:Just use Objective C (Score:2)
Yes indeed it is! That's why I included support for PB+IB in CamelBones from the start - because I hate writing GUI code.
Ask Pudge! (Score:5, Informative)
Pudge has a site with lots of Mac+Perl info and projects, including a link to this [pudge.net], 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
Re:Ask Pudge! (Score:2)
At home it's Eudora, Netscape, and Fire.
But thanks anyway, I was hoping to make a more complicated script eventually, with if-then-else clauses and logon if already active and do nothing if active *and* logged on, etc.
Re:Ask Pudge! (Score:1)
Why not just select these items from System Preferences -> Login?
They'll load up automatically when you log into your account.
(Of course you can do a lot more with AppleScript, like the alarm clock idea)
Re:Ask Pudge! (Score:2)
I guess I *could*, but I usually just close the screen and go home, open the screen and fire up my AppleScript
O'Reilly book on Perl/Cocoa coming soon? (Score:2, Informative)
Re:O'Reilly book on Perl/Cocoa coming soon? (Score:2, Informative)
jaguar (Score:4, Informative)
Perl-Objc bindings are included in jaguar.
See: Library/Perl/darwin/PerlObjCBridge.pm
Re:jaguar (Score:2, Informative)
Re:jaguar (Score:2)
Yes, but they only work well with Foundation classes, because they're implemented as a module that gets loaded into a traditional Perl script. AppKit depends pretty heavily on being surrounded by an application bundle, I'm afraid.
CamelBones is implemented as a framework that gets linked into an application, and lets you build your GUI with Interface Builder. On the other paw, it can't be loaded into a standalone script as a module; like AppKit, it requires an application bundle.
The two products are addressing different problems, really; which one will be more useful to you depends on what you want to accomplish.
Re:Apple: OSX Now available for Intel (Score:1, Offtopic)
Re:Apple: OSX Now available for Intel (Score:2, Interesting)
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!
Re:Apple: OSX Now available for Intel (Score:2)
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 [apple.com] 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.
Re:Apple: OSX Now available for Intel (Score:2)
Re:Apple: OSX Now available for Intel (Score:1)
Re:Apple: OSX Now available for Intel
I admit that I must have fallen for your clever ploy.
Also, you should probably post information that doesn't conflict with your vast knowledge of operating systems.
F-Script (Score:1, Informative)
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.
use python w/ native mac GUI or Gtk/Qt on mac X (Score:3, Informative)
[and before any perl weenies mod this down because i said to use a different language: grow up!]
Re:use python w/ native mac GUI or Gtk/Qt on mac X (Score:2)
I haven't actually *created* anything using PyObjC, but I did learn quite a bit about the inner workings of the Objective-C runtime by studying the code. I'd go so far as to say that I couldn't have written CamelBones without first studying the PyObjC bridge - there's some stuff in there that I still haven't seen documented anywhere. So, as far as my own limited exposure to it goes, I'd say that yes, Python's support for Cocoa is very good.
I agree with the other part of your post, too - the more options that OS X programmers have, the better. Language bigots need to grow up.
Perl and Mac OS X Graphics in general... (Score:1)
Having said that, if you're *very* familiar with Cocoa already, and are looking more towards GUI and not so much towards video-games, Camelbones is the leading suspect right now. I personally found it confusing, and you need to do development in the Apple Project Builder for the most part, but it has one key thing going for it - it works, and there's sample source.
(I'm personally on the video-game quest - I want to be able to say "use GLUT", and go nuts, without an IDE getting in the way. But I digress...)
The Sourceforge page for Camelbones is here: http://sourceforge.net/projects/camelbones/
A homepage discussing Camelbones (but seemingly not up-to-date - it talks about 0.1, but 0.2 is available) is here: http://camelbones.sourceforge.net/
-- Tom Bortels
Re:Perl and Mac OS X Graphics in general... (Score:1)
But it can be pretty:
http://www.frozen-bubble.org/
That's Perl and perlsdl.
More Resources (Score:5, Informative)
Right now there is also the Carbon-based MacOSX::File [cpan.org], which offers much of the same functionality as the Mac::Files module included in MacPerl, and there is OSXMacPerl [uec.ac.jp], 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.
Not exactly Perl, but (Score:1)
Re:Use Ruby with RubyCocoa (Score:2)
Re:Use Ruby with RubyCocoa (Score:1, Flamebait)
Dude, Ask Slashdot (which is what this is, no matter how it was filed) isn't supposed to be a search engine. If all the poor guy wanted was a list of Perl/Cocoa bindings, he could have used Google.
The great thing about Ask Slashdot is that you get opinions, editorials, and suggestions for alternatives.
And then, of course, you get guys like yourself who moderate suggestions off-topic, or who post vulgar messages complaining of same.
:sigh: Just relax a little, and let the free flow of ideas wash over you.
Re:Use Ruby with RubyCocoa (Score:2, Flamebait)
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.
AppleScript Studio (Score:1)
If you need to call AppleScript stuff from a Perl script you can use the various AppleScript bindings mentioned by others, or just do a system("echo 'tell app to do thing' | osascript"); which will run applescript commands, if a little indirectly. I have done this for things like cleanly quitting GUI apps, and it works great. Of course TMTOWTDI, so you could also open a pipe to osascript and dump in AppleScript commands, which might work nicely in some cases.
Perl/Tk support (Score:1)
Re:Perl/Tk support (Score:1)
Re:Perl/Tk support (Score:1)
Perl/Tk.org [perltk.org]
There is an O'Reilly book on this coming out (Score:1)