TweetFollow Us on Twitter


Volume Number: 19 (2003)
Issue Number: 1
Column Tag: Mac OS X


Creating GUI-based apps with Perl

by Rich Morin

Sherm Pendley bills CamelBones as "An Objective-C/Perl bridge framework". The web page goes on to say "CamelBones is a framework that allows many types of Cocoa programs to be written entirely in Perl. It also provides a high-level object-oriented wrapper around an embedded Perl interpreter, so that Cocoa programs written in Objective-C can easily make use of code and libraries written in Perl."

Jumping from the general to the particular, CamelBones allows a Perl scripter to create GUI-based apps, with only a modicum of pain (read, Objective-C :-). Because the scripter can use Interface Builder, the graphic layout is painless, quick, and likely to yield attractive results.


Sherm says that CamelBone's biggest current limitation is inheritance. It's not yet possible to create a Perl sub-class that inherits from an Objective-C sub-class. As a result, CamelBones can't be used for:

  • Document-based applications, which require a subclass of NSDocument.

  • Custom controls and/or cells, which require a subclass of one of the many NSControl or NSCell descendants, respectively.

This limitation will be addressed in the next version (0.3), which Sherm expects to have ready by the time this article is in print. Meanwhile, most of the tasks which could be performed by a cub-class can be handled by a Delegation or Notification callback.

CamelBones has some other problems, at least from my perspective. Because the app needs to be "built" (with Project Builder) rather than simply run, the build time becomes a noticeable part of the edit/test cycle. I think that's just the price we pay for using compilers and linkers (:-).

Also, most of the existing Cocoa documentation assumes that you're using Objective-C. This means that you have to have a reading knowledge of Objective-C, as well as the ability to turn method prototypes and example code into their Perl equivalents. I find this livable, however, and help is on the way for both problems

Getting Started

Assuming that you already have OSX and Apple's Developer Tools installed, adding CamelBones is quite simple. Go to http//, download the distribution, and install it! At this writing, the documentation is still a bit sketchy, but the author plans to improve it Real Soon Now, so it may be in significantly better shape by the time you see it.

The package uses a standard installer, so installation is quite easy. I'd suggest that you choose the "Custom" install, so that you can get the source code (why not?). I haven't looked at the code, but I assume that it's a combination of Objective-C and Perl. Nice to have around, if you get frustrated by some peculiarity or simply become curious about how it all works.

If you are thinking about using CamelBones in a proprietary offering, you may want to look over the license a bit. CamelBones is released under the GNU Project's "Lesser General Public License" (LGPL). Briefly, the LGPL allows your app to use CamelBones without any requirement that the author provide the source code for the application (though with Perl, source distribution is the default case). On the other hand, any changes you make to CamelBones itself must be made available to anyone who gets the "binaries".

Once you have CamelBones installed, I strongly suggest that you skim the documentation and walk through the HowTo examples. As a newcomer to Interface Builder and Project Builder, this taught me a bit about the capabilities and operation of each. Even if you are expert at IB and PB, the examples will give you an idea of what kind of Perl code CamelBones expects.

In brief, however, Perl code for use with CamelBones looks pretty much like Perl code to work with any object-oriented API. Stuff like:

sub sayHello {
    my ($self, $sender) = @_;
    NSLog("Hello, world!");

One peculiarity, discussed in the CamelBones web pages, is that CamelBones doesn't (yet ) provide "toll-free" bridging of Perl hashes and lists to Cocoa's collection classes. Consequently, the Perl code has to deal with the Cocoa collections explicitly. Instead of writing:

my %hash;
my $key     = 'abc';
$hash{$key} = 'def';
printf("key=%s, value=%s\n",
  $key, $hash{$key});

you have to write something like:

my $hash = NSMutableDictionary->alloc->init;
my $key  = 'abc';
$hash->setObject_forKey($key, 'def');
printf("key=%s, value=%s\n",
  $key, $hash->objectForKey($key));

Also, because Objective-C doesn't provide automatic (Perl-style) garbage collection, you may need to explicitly reserve and release any Objective-C objects which you create. This looks pretty tedious, to my Perl-accustomed eyes, but I'm consoled by the facts that (a) I only have to use Cocoa collections to access Cocoa-specific items and (b) relief is said to be on the way.

Packaging Issues

Ease of distribution and installation has been a CamelBones priority from the start. All that the end user needs is a copy of CamelBones.framework. By default, applications look for this in /Library/Frameworks, so the easiest thing to do is to create an installer package that will make sure that the framework can be found there.

But, if a developer wants a drag-and-drop install and is willing to rebuild the framework with the appropriate Project Builder options, the framework can be embedded in the application bundle itself. CPAN (Comprehensive Perl Archive Network) modules can also be included in the application bundle, eliminating another common source of pain for end users of Perl programs.

Version Creep

The CamelBones framework is linked against the Perl interpreter (Version 5.6.0) that is shipped with OSX. Sherm has gotten reports that Perl 5.6.1 works fine, as long as it's compiled and installed identically to the original 5.6.0, but 5.8.0 definitely doesn't. So, if you have added Perl 5.8.0 to your system, you may have to rebuild any CamelBones apps you receive.

As time goes on, Apple is quite likely to release Perl 5.8.0 (or whatever) as an update to OSX. Unless a workaround is found, this will cause all 5.6.0-based CamelBones apps to break. Fortunately, some Very Bright People are looking into the matter, so a fix is likely.


Perl wizard Dan Sugalski is currently writing "Programming Cocoa Applications with Perl" for O'Reilly, but a publication date has not yet been established. The book will cover CamelBones in depth, however, so watch for it! In the meanwhile, Dan promises to put up some example code on the CamelBones web site.

Notwithstanding tha fact that they assume Objective-C usage, most books on Cocoa, IB, and PB are relevant to CamelBones Here are some you might want to look over:

    "Building Cocoa Applications: A Step-by-Step Guide"

    Garfinkel and Mahoney

    O'Reilly and Associates, 2002

    ISBN 0-596-00235-1

    "Cocoa Cookbook for Mac OS X"

    Bill Cheeseman

    Peachpit, 2002

    ISBN 0-201-87801-1

    "Cocoa Programming for Mac OS X"

    Aaron Hillegass

    Addison-Wesley, 2001

    ISBN 0-201-72683-1

    "Learning Cocoa with Objective-C", second edition

    James Duncan Davidson

    O'Reilly and Associates, 2002

    ISBN 0-596-00301-3

There is also a 200+ page rundown on Objective-C, right on your Mac OS X system (/Developer/Documentation/Cocoa/ObjectiveC/ObjC.pdf). You should also consider joining the MacOSX-Perl email list, which covers CamelBones and other Perlish topics on Mac OS X. Send email to to get started.

Although Apple provides documentation on the AppKit and Foundation frameworks, it can be tedious to navigate. So, pick up a copy of Hoshi Takanori's Cocoa Browser app ( This will let you browse the Objective-C method descriptions in a speedy, hierarchically-based manner.

As noted above, you will still have to convert the method synopses into Perl format, but that's life. Actually, I'm actually working on a conversion app, but you'll have to wait until next month to read about it. Until then, happy hacking...

Rich Morin has been using computers since 1970, Unix since 1983, and Mac-based Unix since 1986 (when he helped Apple create A/UX 1.0). When he isn't writing this column, Rich runs Prime Time Freeware (, a publisher of books and CD-ROMs for the Free and Open Source software community. Feel free to write to Rich at


Community Search:
MacTech Search:

Software Updates via MacUpdate

OmniPlan 3.0 - Robust project management...
With OmniPlan, you can create logical, manageable project plans with Gantt charts, schedules, summaries, milestones, and critical paths. Break down the tasks needed to make your project a success,... Read more
Yummy FTP 1.11 - FTP/SFTP/FTPS client fo...
Yummy FTP is an FTP + SFTP + FTPS file transfer client which focuses on speed, reliability and productivity. Whether you need to transfer a few files or a few thousand, schedule automatic backups, or... Read more
Tweetbot 2.1 - Popular Twitter client. (...
Tweetbot is a full-featured OS X Twitter client with a lot of personality. Whether it's the meticulously-crafted interface, sounds and animation, or features like multiple timelines and column views... Read more
MacPilot 8.0 - Enable over 1,200 hidden...
MacPilot gives you the power of UNIX and the simplicity of Macintosh, which means a phenomenal amount of untapped power in your hands! Use MacPilot to unlock over 1,200 features, and access them all... Read more
Typinator 6.7 - Speedy and reliable text...
Typinator turbo-charges your typing productivity. Type a little. Typinator does the rest. We've all faced projects that require repetitive typing tasks. With Typinator, you can store commonly used... Read more
Adobe Lightroom 6.2 - Import, develop, a...
Adobe Lightroom is available as part of Adobe Creative Cloud for as little as $9.99/month bundled with Photoshop CC as part of the photography package. Lightroom 6 is also available for purchase as a... Read more
ForeverSave 2.1.4 - Universal auto-save...
ForeverSave auto-saves all documents you're working on while simultaneously doing backup versioning in the background. Lost data can be quickly restored at any time. Losing data, caused by... Read more
VueScan 9.5.27 - Scanner software with a...
VueScan is a scanning program that works with most high-quality flatbed and film scanners to produce scans that have excellent color fidelity and color balance. VueScan is easy to use, and has... Read more
AirPort Utility 6.3.6 - Set up and manag...
Note: Most recent release available only within OS X 10.11 El Capitan update. Use AirPort Utility to set up and manage your Wi-Fi network and AirPort base stations, including AirPort Express, AirPort... Read more
Quicksilver 1.3.1 - Application launcher...
Quicksilver is a light, fast and free Mac application that gives you the power to control your Mac with keystrokes alone. Quicksilver allows you to find what you need quickly and easily, then act... Read more

YAMGUN (Games)
YAMGUN 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: The invasion has begun! Protect the walls of the citadel against waves of enemies! But watch out, you will soon run out of ammo...... | Read more »
Royal Bounty HD (Games)
Royal Bounty HD 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: New World Computing Approved "Hi Guys! looks good so far! keep up the good work. I worked on HoMM 3 and 4 creating all of the... | Read more »
Swords & Crossbones: An Epic Pirate...
Swords & Crossbones: An Epic Pirate Story 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: | Read more »
Camel Up (Games)
Camel Up 1.0.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0.0 (iTunes) Description: | Read more »
The Martian: Bring Him Home (Games)
The Martian: Bring Him Home 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: Based on the best selling novel and critically acclaimed film, THE MARTIAN tells the story of Astronaut Mark... | Read more »
This Week at 148Apps: September 21-30, 2...
Leap Into Fall With 148Apps How do you know what apps are worth your time and money? Just look to the review team at 148Apps. We sort through the chaos and find the apps you're looking for. The ones we love become Editor’s Choice, standing out above... | Read more »
Tweetbot 4 for Twitter (Social Networki...
Tweetbot 4 for Twitter 4.0 Device: iOS Universal Category: Social Networking Price: $4.99, Version: 4.0 (iTunes) Description: *** 50% off for a limited time. *** | Read more »
Mori (Games)
Mori 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: Stop, rewind and unwind with Mori. Time is always running, take a moment to take control. Mori is an action puzzle game about infinitely... | Read more »
100 Years' War (Games)
100 Years' War 1.0 Device: iOS Universal Category: Games Price: $3.99, Version: 1.0 (iTunes) Description: | Read more »
Tower in the Sky (Games)
Tower in the Sky 0.0.60 Device: iOS Universal Category: Games Price: $1.99, Version: 0.0.60 (iTunes) Description: | Read more »

Price Scanner via

Save up to $350 with Apple refurbished iMacs
Apple has Certified Refurbished iMacs available for up to $350 off the cost of new models. Apple’s one-year warranty is standard, and shipping is free: - 27″ 3.5GHz 5K iMac – $1949 $350 off MSRP - 27... Read more
Mac Pros on sale for up to $300 off MSRP
B&H Photo has Mac Pros on sale for up to $300 off MSRP. Shipping is free, and B&H charges sales tax in NY only: - 3.7GHz 4-core Mac Pro: $2818.99, $181 off MSRP - 3.5GHz 6-core Mac Pro: $3699... Read more
5K iMacs on sale for up to $150 off MSRP, fre...
B&H Photo has the 27″ 3.3GHz 5K iMac on sale for $1899.99 including free shipping plus NY tax only. Their price is $100 off MSRP. They have the 27″ 3.5GHz 5K iMac on sale for $2149, $150 off MSRP... Read more
Twelve South Redesigns BookArc For Today’s Sm...
Twelve South has announced a redesigned version of their very first product, BookArc for MacBook. Tailored specifically for the newest generation of MacBooks, BookArc holds the new, smaller Apple... Read more
Phone 6s Tips & Tricks – Tips Book For iP...
Poole, United Kingdom based Tap Guides Ltd. has announced the release and immediate availability of iPhone 6s Tips & Tricks, an in-depth eBook available in the iBookstore that’s priced just $2.99... Read more
13-inch 2.5GHz MacBook Pro on sale for $994,...
Best Buy has the 13″ 2.5GHz MacBook Pro available for $994.99 on their online store. Choose free shipping or free instant local store pickup (if available). Their price is $105 off MSRP. Price valid... Read more
Is The iPad Pro Really A Serious Laptop Repla...
Probably not, at least for productive professionals and other power users. Steve Jobs declared that we’d entered the “post-PC Era” with the advent of the original iPad in 2010, a phrase we don’t hear... Read more
Wednesday Deal: 13-inch Retina MacBook Pros f...
Adorama has 13″ Retina MacBook Pros on sale for up to $130 off MSRP. Shipping is free, and Adorama charges sales tax for NY & NJ residents only: - 13″ 2.7GHz/128GB Retina MacBook Pro: $1199.99 $... Read more
uBar 3.0 for Mac OS X – Custom Dock Replaceme...
Brawer Software has announced the release of uBar 3.0, an important update to their popular app and window manager for Mac OS X. uBar allows users to position it whichever side of the screen they... Read more
13-inch 2.5GHz MacBook Pro (refurbished) avai...
Apple has Certified Refurbished 13″ 2.5GHz MacBook Pros available for $829, or $270 off the cost of new models. Apple’s one-year warranty is standard, and shipping is free: - 13″ 2.5GHz MacBook Pros... Read more

Jobs Board

*Apple* Retail - Multiple Customer Support P...
Job Description:Customer SupportSpecialist - Retail Customer Service and SalesTransform Apple Store visitors into loyal Apple customers. When customers enter the Read more
Software Engineer, *Apple* Watch - Apple (U...
…the team that is revolutionizing the watch! As a software engineer on the Apple Watch team, you will be responsible for building world-class applications and frameworks Read more
*Apple* Online Store UAT Lead - Apple (Unite...
**Job Summary** The Apple Online Store is a fast paced and ever evolving business environment. The User Acceptance Testing (UAT) lead in this organization is able to Read more
Hardware Systems Integration Engineer - *App...
**Job Summary** We are seeking an enthusiastic electrical engineer for the Apple Watch team. This is a design engineering position that entails working with Read more
Touch Validation Design (EE) - *Apple* Watc...
**Job Summary** Help launch next-generation Touch Technologies in Apple products. The Touch Technology team develops cutting-edge Touch solutions and technologies that Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.