This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Unused 'cv'
[perl5.git] / pod / perlfaq3.pod
index 028461c..7b58df8 100644 (file)
@@ -1,6 +1,6 @@
 =head1 NAME
 
-perlfaq3 - Programming Tools ($Revision: 7875 $)
+perlfaq3 - Programming Tools ($Revision: 10127 $)
 
 =head1 DESCRIPTION
 
@@ -138,7 +138,7 @@ C<-d> switch. It's fully explained in L<perldebug>.
 If you'd like a graphical user interface and you have Tk, you can use
 C<ptkdb>. It's on CPAN and available for free.
 
-If you need something much more sophisicated and controllable, Leon
+If you need something much more sophisticated and controllable, Leon
 Brocard's Devel::ebug (which you can call with the -D switch as -Debug)
 gives you the programmatic hooks into everything you need to write your
 own (without too much pain and suffering).
@@ -216,7 +216,7 @@ http://www.cpan.org/authors/id/TOMC/scripts/toms.exrc.gz
 
 The a2ps http://www-inf.enst.fr/%7Edemaille/a2ps/black+white.ps.gz does
 lots of things related to generating nicely printed output of
-documents, as does enscript at http://people.ssh.fi/mtr/genscript/ .
+documents.
 
 =head2 Is there a ctags for Perl?
 
@@ -327,9 +327,7 @@ If you are using MacOS, the same concerns apply.  MacPerl (for Classic
 environments) comes with a simple editor. Popular external editors are
 BBEdit ( http://www.bbedit.com/ ) or Alpha (
 http://www.his.com/~jguyer/Alpha/Alpha8.html ). MacOS X users can use
-Unix editors as well. Neil Bowers (the man behind Geekcruises) has a
-list of Mac editors that can handle Perl (
-http://www.neilbowers.org/macperleditors.html ).
+Unix editors as well.
 
 =over 4
 
@@ -401,7 +399,7 @@ http://www.slickedit.com/
 
 There is also a toyedit Text widget based editor written in Perl
 that is distributed with the Tk module on CPAN.  The ptkdb
-( http://world.std.com/~aep/ptkdb/ ) is a Perl/tk based debugger that
+( http://ptkdb.sourceforge.net/ ) is a Perl/tk based debugger that
 acts as a development environment of sorts.  Perl Composer
 ( http://perlcomposer.sourceforge.net/ ) is an IDE for Perl/Tk
 GUI creation.
@@ -501,20 +499,73 @@ directory http://www.cpan.org/authors/Tom_Christiansen/scripts/rep.gz ;
 this program repeats a command and updates the screen as needed, rendering
 B<rep ps axu> similar to B<top>.
 
-=head2 How can I use X or Tk with Perl?
+=head2 How can I write a GUI (X, Tk, Gtk, etc.) in Perl?
+X<GUI> X<Tk> X<Wx> X<WxWidgets> X<Gtk> X<Gtk2> X<CamelBones> X<Qt>
 
-The Tk.pm module is a completely Perl-based, object-oriented interface
-to the Tk toolkit that doesn't force you to use Tcl just to get at Tk.
-Sx is an interface to the Athena Widget set.  Both are available from
-CPAN.  See the directory
-http://www.cpan.org/modules/by-category/08_User_Interfaces/
+(contributed by Ben Morrow)
 
-Invaluable for Perl/Tk programming are the Perl/Tk FAQ at
-http://phaseit.net/claird/comp.lang.perl.tk/ptkFAQ.html , the Perl/Tk Reference
-Guide available at
-http://www.cpan.org/authors/Stephen_O_Lidie/ , and the
-online manpages at
-http://www-users.cs.umn.edu/%7Eamundson/perl/perltk/toc.html .
+There are a number of modules which let you write GUIs in Perl. Most
+GUI toolkits have a perl interface: an incomplete list follows.
+
+=over 4
+
+=item Tk
+
+This works under Unix and Windows, and the current version doesn't
+look half as bad under Windows as it used to. Some of the gui elements
+still don't 'feel' quite right, though. The interface is very natural
+and 'perlish', making it easy to use in small scripts that just need a
+simple gui. It hasn't been updated in a while.
+
+=item Wx
+
+This is a Perl binding for the cross-platform wxWidgets toolkit 
+L<http://www.wxwidgets.org>. It works under Unix, Win32 and Mac OS X,
+using native widgets (Gtk under Unix). The interface follows the C++
+interface closely, but the documentation is a little sparse for someone
+who doesn't know the library, mostly just referring you to the C++
+documentation.
+
+=item Gtk and Gtk2
+
+These are Perl bindings for the Gtk toolkit L<http://www.gtk.org>. The
+interface changed significantly between versions 1 and 2 so they have
+separate Perl modules. It runs under Unix, Win32 and Mac OS X (currently
+it requires an X server on Mac OS, but a 'native' port is underway), and
+the widgets look the same on every plaform: i.e., they don't match the
+native widgets. As with Wx, the Perl bindings follow the C API closely,
+and the documentation requires you to read the C documentation to
+understand it.
+
+=item Win32::GUI
+
+This provides access to most of the Win32 GUI widgets from Perl.
+Obviously, it only runs under Win32, and uses native widgets. The Perl
+interface doesn't really follow the C interface: it's been made more
+Perlish, and the documentation is pretty good. More advanced stuff may
+require familiarity with the C Win32 APIs, or reference to MSDN.
+
+=item CamelBones
+
+CamelBones L<http://camelbones.sourceforge.net> is a Perl interface to
+Mac OS X's Cocoa GUI toolkit, and as such can be used to produce native
+GUIs on Mac OS X. It's not on CPAN, as it requires frameworks that
+CPAN.pm doesn't know how to install, but installation is via the
+standard OSX package installer. The Perl API is, again, very close to
+the ObjC API it's wrapping, and the documentation just tells you how to
+translate from one to the other.
+
+=item Qt
+
+There is a Perl interface to TrollTech's Qt toolkit, but it does not
+appear to be maintained.
+
+=item Athena
+
+Sx is an interface to the Athena widget set which comes with X, but
+again it appears not to be much used nowadays.
+
+=back
 
 =head2 How can I make my Perl program run faster?
 
@@ -655,7 +706,7 @@ or
 Pass arrays and hashes by reference, not by value. For one thing, it's
 the only way to pass multiple lists or hashes (or both) in a single
 call/return. It also avoids creating a copy of all the contents. This
-requires some judgment, however, because any changes will be propagated
+requires some judgement, however, because any changes will be propagated
 back to the original data. If you really want to mangle (er, modify) a
 copy, you'll have to sacrifice the memory needed to make one.
 
@@ -982,15 +1033,15 @@ to process and install a Perl distribution.
 
 =head1 REVISION
 
-Revision: $Revision: 7875 $
+Revision: $Revision: 10127 $
 
-Date: $Date: 2006-10-04 22:39:26 +0200 (mer, 04 oct 2006) $
+Date: $Date: 2007-10-27 21:40:20 +0200 (Sat, 27 Oct 2007) $
 
 See L<perlfaq> for source control details and availability.
 
 =head1 AUTHOR AND COPYRIGHT
 
-Copyright (c) 1997-2006 Tom Christiansen, Nathan Torkington, and
+Copyright (c) 1997-2007 Tom Christiansen, Nathan Torkington, and
 other authors as noted. All rights reserved.
 
 This documentation is free; you can redistribute it and/or modify it