From: Rafael Garcia-Suarez Date: Fri, 23 Nov 2007 11:39:00 +0000 (+0000) Subject: FAQ sync X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=c195e131167b24ce65760dbc38d744bc87427feb;p=p5sagit%2Fp5-mst-13.2.git FAQ sync p4raw-id: //depot/perl@32464 --- diff --git a/pod/perlfaq.pod b/pod/perlfaq.pod index 771a23c..e0ec672 100644 --- a/pod/perlfaq.pod +++ b/pod/perlfaq.pod @@ -61,13 +61,13 @@ it, try the resources in L. Tom Christiansen wrote the original perlfaq then expanded it with the help of Nat Torkington. The perlfaq-workers maintain current document -and the dezinens of comp.lang.perl.misc regularly review and update the +and the denizens of comp.lang.perl.misc regularly review and update the FAQ. Several people have contributed answers, corrections, and comments, and the perlfaq notes those contributions wherever appropriate. =head1 AUTHOR AND COPYRIGHT -Tom Christainsen wrote the original version of this document. +Tom Christiansen wrote the original version of this document. brian d foy C<< >> wrote this version. See the individual perlfaq documents for additional copyright information. @@ -313,7 +313,7 @@ How can I use curses with Perl? =item * -How can I use X or Tk with Perl? +How can I write a GUI (X, Tk, Gtk, etc.) in Perl? =item * @@ -747,6 +747,10 @@ How can I write() into a string? =item * +How can I open a filehandle to a string? + +=item * + How can I output my numbers with commas added? =item * @@ -1001,6 +1005,10 @@ How do I create a module? =item * +How do I adopt or take over a module already on CPAN? + +=item * + How do I create a class? =item * diff --git a/pod/perlfaq1.pod b/pod/perlfaq1.pod index d04fa28..a6d3990 100644 --- a/pod/perlfaq1.pod +++ b/pod/perlfaq1.pod @@ -1,6 +1,6 @@ =head1 NAME -perlfaq1 - General Questions About Perl ($Revision: 9681 $) +perlfaq1 - General Questions About Perl ($Revision: 10127 $) =head1 DESCRIPTION @@ -127,7 +127,7 @@ minor release (i.e. perl5.9.x, where 9 is the minor release). (contributed by brian d foy) -In short, Pelr 4 is the past, Perl 5 is the present, and Perl 6 is the +In short, Perl 4 is the past, Perl 5 is the present, and Perl 6 is the future. The number after perl (i.e. the 5 after Perl 5) is the major release @@ -136,7 +136,7 @@ major version has significant differences that earlier versions cannot support. The current major release of Perl is Perl 5, and was released in 1994. -It can run scripts from the previous major release, perl4 (March 1991), +It can run scripts from the previous major release, Perl 4 (March 1991), but has significant differences. It introduced the concept of references, complex data structures, and modules. The Perl 5 interpreter was a complete re-write of the previous perl sources. @@ -157,7 +157,7 @@ See L for a history of Perl revisions. Ponie stands for "Perl On the New Internal Engine", started by Arthur Bergman from Fotango in 2003, and subsequently run as a project of The Perl Foundation. It was abandoned in 2006 -(http://www.nntp.perl.org/group/perl.ponie.dev/487). +( http://www.nntp.perl.org/group/perl.ponie.dev/487 ). Instead of using the current Perl internals, Ponie aimed to create a new one that would provide a translation path from Perl 5 to Perl 6 @@ -283,13 +283,23 @@ will sleep easier, too--Wall Street programs not withstanding. :-) =head2 What's the difference between "perl" and "Perl"? One bit. Oh, you weren't talking ASCII? :-) Larry now uses "Perl" to -signify the language proper and "perl" the implementation of it, -i.e. the current interpreter. Hence Tom's quip that "Nothing but perl -can parse Perl." You may or may not choose to follow this usage. For -example, parallelism means "awk and perl" and "Python and Perl" look -OK, while "awk and Perl" and "Python and perl" do not. But never -write "PERL", because perl is not an acronym, apocryphal -folklore and post-facto expansions notwithstanding. +signify the language proper and "perl" the implementation of it, i.e. +the current interpreter. Hence Tom's quip that "Nothing but perl can +parse Perl." + +Before the first edition of I, people commonly +referred to the language as "perl", and its name appeared that way in +the title because it referred to the interpreter. In the book, Randal +Schwartz capitalised the language's name to make it stand out better +when typeset. This convention was adopted by the community, and the +second edition became I, using the capitalized +version of the name to refer to the language. + +You may or may not choose to follow this usage. For example, +parallelism means "awk and perl" and "Python and Perl" look good, while +"awk and Perl" and "Python and perl" do not. But never write "PERL", +because perl is not an acronym, apocryphal folklore and post-facto +expansions notwithstanding. =head2 Is it a Perl program or a Perl script? @@ -390,9 +400,9 @@ You might find these links useful: =head1 REVISION -Revision: $Revision: 9681 $ +Revision: $Revision: 10127 $ -Date: $Date: 2007-06-26 01:36:56 +0200 (Tue, 26 Jun 2007) $ +Date: $Date: 2007-10-27 21:40:20 +0200 (Sat, 27 Oct 2007) $ See L for source control details and availability. diff --git a/pod/perlfaq2.pod b/pod/perlfaq2.pod index ebb64d1..c9a0ec1 100644 --- a/pod/perlfaq2.pod +++ b/pod/perlfaq2.pod @@ -1,6 +1,6 @@ =head1 NAME -perlfaq2 - Obtaining and Learning about Perl ($Revision: 9462 $) +perlfaq2 - Obtaining and Learning about Perl ($Revision: 10144 $) =head1 DESCRIPTION @@ -54,10 +54,7 @@ Some URLs that might help you are: Someone looking for a perl for Win16 might look to Laszlo Molnar's djgpp port in http://www.cpan.org/ports/#msdos , which comes with -clear installation instructions. A simple installation guide for -MS-DOS using Ilya Zakharevich's OS/2 port is available at -http://www.cs.ruu.nl/%7Epiet/perl5dos.html -and similarly for Windows 3.1 at http://www.cs.ruu.nl/%7Epiet/perlwin3.html . +clear installation instructions. =head2 I don't have a C compiler. How can I build my own Perl interpreter? @@ -71,7 +68,8 @@ information on where to get such a binary version. You might look around the net for a pre-built binary of Perl (or a C compiler!) that meets your needs, though: -For Windows, Vanilla Perl (http://vanillaperl.com/) comes with a +For Windows, Vanilla Perl ( http://vanillaperl.com/ ) and Strawberry Perl +( http://strawberryperl.com/ ) come with a bundled C compiler. ActivePerl is a pre-compiled version of Perl ready-to-use. @@ -323,7 +321,12 @@ Recommended books on (or mostly on) Perl follow. Intermediate Perl (the "Alpaca Book") by Randal L. Schwartz and brian d foy, with Tom Phoenix (foreword by Damian Conway) ISBN 0-596-10206-2 [1st edition March 2006] - http://www.oreilly.com/catalog/lrnperlorm/ + http://www.oreilly.com/catalog/intermediateperl/ + + Mastering Perl + by brian d foy + ISBN 0-596-52724-1 [1st edition July 2007] + http://www.oreilly.com/catalog/9780596527242/ =item Task-Oriented @@ -401,6 +404,11 @@ Recommended books on (or mostly on) Perl follow. ISBN 0-596-00503-2 [1st edition January 2004] http://www.oreilly.com/catalog/perldebugpr/ + Pro Perl Debugging + by Richard Foley with Andy Lester + ISBN 1-59059-454-1 [1st edition July 2005] + http://www.apress.com/book/view/1590594541 + =back =head2 Which magazines have Perl content? @@ -501,9 +509,9 @@ The Perl Foundation is an advocacy organization for the Perl language which maintains the web site http://www.perl.org/ as a general advocacy site for the Perl language. It uses the domain to provide general support services to the Perl community, including the hosting -of mailing lists, web sites, and other services. The web site -http://www.perl.org/ is a general advocacy site for the Perl language, -and there are many other sub-domains for special topics, such as +of mailing lists, web sites, and other services. There are also many +other sub-domains for special topics like learning Perl, Perl news, jobs +in Perl, such as: http://learn.perl.org/ http://use.perl.org/ @@ -521,9 +529,9 @@ the I question earlier in this document. =head1 REVISION -Revision: $Revision: 9462 $ +Revision: $Revision: 10144 $ -Date: $Date: 2007-04-27 08:24:33 +0200 (Fri, 27 Apr 2007) $ +Date: $Date: 2007-10-31 13:50:01 +0100 (Wed, 31 Oct 2007) $ See L for source control details and availability. diff --git a/pod/perlfaq3.pod b/pod/perlfaq3.pod index bc2607a..7b58df8 100644 --- a/pod/perlfaq3.pod +++ b/pod/perlfaq3.pod @@ -1,6 +1,6 @@ =head1 NAME -perlfaq3 - Programming Tools ($Revision: 8539 $) +perlfaq3 - Programming Tools ($Revision: 10127 $) =head1 DESCRIPTION @@ -138,7 +138,7 @@ C<-d> switch. It's fully explained in L. If you'd like a graphical user interface and you have Tk, you can use C. 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 similar to B. -=head2 How can I use X or Tk with Perl? +=head2 How can I write a GUI (X, Tk, Gtk, etc.) in Perl? +X X X X X X X X -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. 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. 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 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,9 +1033,9 @@ to process and install a Perl distribution. =head1 REVISION -Revision: $Revision: 8539 $ +Revision: $Revision: 10127 $ -Date: $Date: 2007-01-11 00:07:14 +0100 (Thu, 11 Jan 2007) $ +Date: $Date: 2007-10-27 21:40:20 +0200 (Sat, 27 Oct 2007) $ See L for source control details and availability. diff --git a/pod/perlfaq4.pod b/pod/perlfaq4.pod index 7c84de7..e660042 100644 --- a/pod/perlfaq4.pod +++ b/pod/perlfaq4.pod @@ -1,6 +1,6 @@ =head1 NAME -perlfaq4 - Data Manipulation ($Revision: 9681 $) +perlfaq4 - Data Manipulation ($Revision: 10126 $) =head1 DESCRIPTION @@ -1006,12 +1006,15 @@ C, and C modules. (contributed by brian d foy) If you can avoid it, don't, or if you can use a templating system, -such as C or C