X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlfaq1.pod;h=293aa7f826dd9c8e9ec26db21dcd289212b7b5d4;hb=10ac92784f49d4a1fe54cc1ed7d05f0d3b2a2f29;hp=7566bf5cd079a95a6707708846b30f10fffd7ed2;hpb=d92eb7b0e84a41728b3fbb642691f159dbe28882;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlfaq1.pod b/pod/perlfaq1.pod index 7566bf5..293aa7f 100644 --- a/pod/perlfaq1.pod +++ b/pod/perlfaq1.pod @@ -1,6 +1,6 @@ =head1 NAME -perlfaq1 - General Questions About Perl ($Revision: 1.23 $, $Date: 1999/05/23 16:08:30 $) +perlfaq1 - General Questions About Perl ($Revision: 1.15 $, $Date: 2004/10/11 05:06:29 $) =head1 DESCRIPTION @@ -33,13 +33,17 @@ distribution for more details. See L (new as of 5.005) for Perl's milestone releases. In particular, the core development team (known as the Perl Porters) -are a rag-tag band of highly altruistic individuals committed -to producing better software for free than you could hope to -purchase for money. You may snoop on pending developments via -nntp://news.perl.com/perl.porters-gw/ and the Deja News archive at -http://www.dejanews.com/ using the perl.porters-gw newsgroup, or you can -subscribe to the mailing list by sending perl5-porters-request@perl.org -a subscription request. +are a rag-tag band of highly altruistic individuals committed to +producing better software for free than you could hope to purchase for +money. You may snoop on pending developments via the archives at +http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/ +and http://archive.develooper.com/perl5-porters@perl.org/ +or the news gateway nntp://nntp.perl.org/perl.perl5.porters or +its web interface at http://nntp.perl.org/group/perl.perl5.porters , +or read the faq at http://simon-cozens.org/writings/p5p-faq , +or you can subscribe to the mailing list by sending +perl5-porters-request@perl.org a subscription request +(an empty message with no subject is fine). While the GNU project includes Perl in its distributions, there's no such thing as "GNU Perl". Perl is not produced nor maintained by the @@ -55,14 +59,15 @@ users the informal support will more than suffice. See the answer to You should definitely use version 5. Version 4 is old, limited, and no longer maintained; its last patch (4.036) was in 1992, long ago and far away. Sure, it's stable, but so is anything that's dead; in fact, -perl4 had been called a dead, flea-bitten camel carcass. The most recent -production release is 5.005_03 (although 5.004_05 is still supported). -The most cutting-edge development release is 5.005_57. Further references -to the Perl language in this document refer to the production release -unless otherwise specified. There may be one or more official bug fixes -by the time you read this, and also perhaps some experimental versions -on the way to the next release. All releases prior to 5.004 were subject -to buffer overruns, a grave security issue. +perl4 had been called a dead, flea-bitten camel carcass. The most +recent production release is 5.8.2 (although 5.005_03 and 5.6.2 are +still supported). The most cutting-edge development release is 5.9. +Further references to the Perl language in this document refer to the +production release unless otherwise specified. There may be one or +more official bug fixes by the time you read this, and also perhaps +some experimental versions on the way to the next release. +All releases prior to 5.004 were subject to buffer overruns, a grave +security issue. =head2 What are perl4 and perl5? @@ -78,8 +83,8 @@ The 5.0 release is, essentially, a ground-up rewrite of the original perl source code from releases 1 through 4. It has been modularized, object-oriented, tweaked, trimmed, and optimized until it almost doesn't look like the old code. However, the interface is mostly the same, and -compatibility with previous releases is very high. See L. +compatibility with previous releases is very high. +See L. To avoid the "what language is perl5?" confusion, some people prefer to simply use "perl" to refer to the latest version of perl and avoid using @@ -87,26 +92,36 @@ simply use "perl" to refer to the latest version of perl and avoid using See L for a history of Perl revisions. +=head2 What is Ponie? + +At The O'Reilly Open Source Software Convention in 2003, Artur +Bergman, Fotango, and The Perl Foundation announced a project to +run perl5 on the Parrot virtual machine named Ponie. Ponie stands for +Perl On New Internal Engine. The Perl 5.10 language implementation +will be used for Ponie, and there will be no language level +differences between perl5 and ponie. Ponie is not a complete rewrite +of perl5. + +For more details, see http://www.poniecode.org/ + =head2 What is perl6? -Perl6 is a semi-jocular reference to the Topaz project. Headed by Chip -Salzenberg, Topaz is yet-another ground-up rewrite of the current release -of Perl, one whose major goal is to create a more maintainable core than -found in release 5. Written in nominally portable C++, Topaz hopes to -maintain 100% source-compatibility with previous releases of Perl but to -run significantly faster and smaller. The Topaz team hopes to provide -an XS compatibility interface to allow most XS modules to work unchanged, -albeit perhaps without the efficiency that the new interface would allow. -New features in Topaz are as yet undetermined, and will be addressed -once compatibility and performance goals are met. - -If you are a hard-working C++ wizard with a firm command of Perl's -internals, and you would like to work on the project, send a request to -perl6-porters-request@perl.org to subscribe to the Topaz mailing list. - -There is no ETA for Topaz. It is expected to be several years before it -achieves enough robustness, compatibility, portability, and performance -to replace perl5 for ordinary use by mere mortals. +At The Second O'Reilly Open Source Software Convention, Larry Wall +announced Perl6 development would begin in earnest. Perl6 was an oft +used term for Chip Salzenberg's project to rewrite Perl in C++ named +Topaz. However, Topaz provided valuable insights to the next version +of Perl and its implementation, but was ultimately abandoned. + +If you want to learn more about Perl6, or have a desire to help in +the crusade to make Perl a better place then peruse the Perl6 developers +page at http://dev.perl.org/perl6/ and get involved. + +Perl6 is not scheduled for release yet, and Perl5 will still be supported +for quite awhile after its release. Do not wait for Perl6 to do whatever +you need to do. + +"We're really serious about reinventing everything that needs reinventing." +--Larry Wall =head2 How stable is Perl? @@ -123,10 +138,10 @@ and the rare new keyword). =head2 Is Perl difficult to learn? -No, Perl is easy to start learning -- and easy to keep learning. It looks +No, Perl is easy to start learning--and easy to keep learning. It looks like most programming languages you're likely to have experience -with, so if you've ever written an C program, an awk script, a shell -script, or even BASIC program, you're already part way there. +with, so if you've ever written a C program, an awk script, a shell +script, or even a BASIC program, you're already partway there. Most tasks only require a small subset of the Perl language. One of the guiding mottos for Perl development is "there's more than one way @@ -158,7 +173,7 @@ Probably the best thing to do is try to write equivalent code to do a set of tasks. These languages have their own newsgroups in which you can learn about (but hopefully not argue about) them. -Some comparison documents can be found at http://language.perl.com/versus/ +Some comparison documents can be found at http://www.perl.com/doc/FMTEYEWTK/versus/ if you really can't stop yourself. =head2 Can I do [task] in Perl? @@ -186,7 +201,7 @@ languages that come to mind include prolog and matlab. =head2 When shouldn't I program in Perl? -When your manager forbids it -- but do consider replacing them :-). +When your manager forbids it--but do consider replacing them :-). Actually, one good reason is when you already have an existing application written in another language that's all done (and done @@ -204,7 +219,7 @@ limitations given in the previous statement to some degree, but understand that Perl remains fundamentally a dynamically typed language, not a statically typed one. You certainly won't be chastised if you don't trust nuclear-plant or brain-surgery monitoring code to it. And Larry -will sleep easier, too -- Wall Street programs not withstanding. :-) +will sleep easier, too--Wall Street programs not withstanding. :-) =head2 What's the difference between "perl" and "Perl"? @@ -213,8 +228,8 @@ 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 isn't really an acronym, aprocryphal +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. =head2 Is it a Perl program or a Perl script? @@ -223,17 +238,17 @@ Larry doesn't really care. He says (half in jest) that "a script is what you give the actors. A program is what you give the audience." Originally, a script was a canned sequence of normally interactive -commands, that is, a chat script. Something like a uucp or ppp chat +commands--that is, a chat script. Something like a UUCP or PPP chat script or an expect script fits the bill nicely, as do configuration scripts run by a program at its start up, such F<.cshrc> or F<.ircrc>, for example. Chat scripts were just drivers for existing programs, not stand-alone programs in their own right. A computer scientist will correctly explain that all programs are -interpreted, and that the only question is at what level. But if you +interpreted and that the only question is at what level. But if you ask this question of someone who isn't a computer scientist, they might tell you that a I has been compiled to physical machine code -once, and can then be run multiple times, whereas a I