1PERLFAQ1(1)            Perl Programmers Reference Guide            PERLFAQ1(1)
2
3
4

NAME

6       perlfaq1 - General Questions About Perl
7

DESCRIPTION

9       This section of the FAQ answers very general, high-level questions
10       about Perl.
11
12   What is Perl?
13       Perl is a high-level programming language with an eclectic heritage
14       written by Larry Wall and a cast of thousands.  It derives from the
15       ubiquitous C programming language and to a lesser extent from sed, awk,
16       the Unix shell, and at least a dozen other tools and languages.  Perl's
17       process, file, and text manipulation facilities make it particularly
18       well-suited for tasks involving quick prototyping, system utilities,
19       software tools, system management tasks, database access, graphical
20       programming, networking, and world wide web programming.  These
21       strengths make it especially popular with system administrators and CGI
22       script authors, but mathematicians, geneticists, journalists, and even
23       managers also use Perl.  Maybe you should, too.
24
25   Who supports Perl?  Who develops it?  Why is it free?
26       The original culture of the pre-populist Internet and the deeply-held
27       beliefs of Perl's author, Larry Wall, gave rise to the free and open
28       distribution policy of perl.  Perl is supported by its users.  The
29       core, the standard Perl library, the optional modules, and the
30       documentation you're reading now were all written by volunteers.  See
31       the personal note at the end of the README file in the perl source
32       distribution for more details.  See perlhist (new as of 5.005) for
33       Perl's milestone releases.
34
35       In particular, the core development team (known as the Perl Porters)
36       are a rag-tag band of highly altruistic individuals committed to
37       producing better software for free than you could hope to purchase for
38       money.  You may snoop on pending developments via the archives at
39       http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/ and
40       http://archive.develooper.com/perl5-porters@perl.org/ or the news
41       gateway nntp://nntp.perl.org/perl.perl5.porters or its web interface at
42       http://nntp.perl.org/group/perl.perl5.porters , or read the faq at
43       http://dev.perl.org/perl5/docs/p5p-faq.html , or you can subscribe to
44       the mailing list by sending perl5-porters-request@perl.org a
45       subscription request (an empty message with no subject is fine).
46
47       While the GNU project includes Perl in its distributions, there's no
48       such thing as "GNU Perl".  Perl is not produced nor maintained by the
49       Free Software Foundation.  Perl's licensing terms are also more open
50       than GNU software's tend to be.
51
52       You can get commercial support of Perl if you wish, although for most
53       users the informal support will more than suffice.  See the answer to
54       "Where can I buy a commercial version of perl?" for more information.
55
56   Which version of Perl should I use?
57       (contributed by brian d foy)
58
59       There is often a matter of opinion and taste, and there isn't any one
60       answer that fits everyone. In general, you want to use either the
61       current stable release, or the stable release immediately prior to that
62       one.  Currently, those are perl5.10.x and perl5.8.x, respectively.
63
64       Beyond that, you have to consider several things and decide which is
65       best for you.
66
67       ·   If things aren't broken, upgrading perl may break them (or at least
68           issue new warnings).
69
70       ·   The latest versions of perl have more bug fixes.
71
72       ·   The Perl community is geared toward supporting the most recent
73           releases, so you'll have an easier time finding help for those.
74
75       ·   Versions prior to perl5.004 had serious security problems with
76           buffer overflows, and in some cases have CERT advisories (for
77           instance, http://www.cert.org/advisories/CA-1997-17.html ).
78
79       ·   The latest versions are probably the least deployed and widely
80           tested, so you may want to wait a few months after their release
81           and see what problems others have if you are risk averse.
82
83       ·   The immediate, previous releases (i.e. perl5.8.x ) are usually
84           maintained for a while, although not at the same level as the
85           current releases.
86
87       ·   No one is actively supporting Perl 4.  Five years ago it was a dead
88           camel carcass (according to this document).  Now it's barely a
89           skeleton as its whitewashed bones have fractured or eroded.
90
91       ·   There is no Perl 6 release scheduled, but it will be available when
92           it's ready.  Stay tuned, but don't worry that you'll have to change
93           major versions of Perl; no one is going to take Perl 5 away from
94           you.
95
96       ·   There are really two tracks of perl development: a maintenance
97           version and an experimental version.  The maintenance versions are
98           stable, and have an even number as the minor release (i.e.
99           perl5.10.x, where 10 is the minor release).  The experimental
100           versions may include features that don't make it into the stable
101           versions, and have an odd number as the minor release (i.e.
102           perl5.9.x, where 9 is the minor release).
103
104   What are Perl 4, Perl 5, or Perl 6?
105       (contributed by brian d foy)
106
107       In short, Perl 4 is the past, Perl 5 is the present, and Perl 6 is the
108       future.
109
110       The number after perl (i.e. the 5 after Perl 5) is the major release of
111       the perl interpreter as well as the version of the language.  Each
112       major version has significant differences that earlier versions cannot
113       support.
114
115       The current major release of Perl is Perl 5, and was released in 1994.
116       It can run scripts from the previous major release, Perl 4 (March
117       1991), but has significant differences. It introduced the concept of
118       references, complex data structures, and modules.  The Perl 5
119       interpreter was a complete re-write of the previous perl sources.
120
121       Perl 6 is the next major version of Perl, but it's still in development
122       in both its syntax and design.  The work started in 2002 and is still
123       ongoing.  Many of the most interesting features have shown up in the
124       latest versions of Perl 5, and some Perl 5 modules allow you to use
125       some Perl 6 syntax in your programs.  You can learn more about Perl 6
126       at http://dev.perl.org/perl6/ .
127
128       See perlhist for a history of Perl revisions.
129
130   What was Ponie?
131       (contributed by brian d foy)
132
133       Ponie stands for "Perl On the New Internal Engine", started by Arthur
134       Bergman from Fotango in 2003, and subsequently run as a project of The
135       Perl Foundation. It was abandoned in 2006 (
136       http://www.nntp.perl.org/group/perl.ponie.dev/487 ).
137
138       Instead of using the current Perl internals, Ponie aimed to create a
139       new one that would provide a translation path from Perl 5 to Perl 6 (or
140       anything else that targets Parrot, actually). You would have been able
141       to just keep using Perl 5 with Parrot, the virtual machine which will
142       compile and run Perl 6 bytecode.
143
144   What is Perl 6?
145       At The Second O'Reilly Open Source Software Convention, Larry Wall
146       announced Perl 6 development would begin in earnest. Perl 6 was an oft
147       used term for Chip Salzenberg's project to rewrite Perl in C++ named
148       Topaz. However, Topaz provided valuable insights to the next version of
149       Perl and its implementation, but was ultimately abandoned.
150
151       If you want to learn more about Perl 6, or have a desire to help in the
152       crusade to make Perl a better place then peruse the Perl 6 developers
153       page at http://dev.perl.org/perl6/ and get involved.
154
155       Perl 6 is not scheduled for release yet, and Perl 5 will still be
156       supported for quite awhile after its release. Do not wait for Perl 6 to
157       do whatever you need to do.
158
159       "We're really serious about reinventing everything that needs
160       reinventing."  --Larry Wall
161
162   How stable is Perl?
163       Production releases, which incorporate bug fixes and new functionality,
164       are widely tested before release.  Since the 5.000 release, we have
165       averaged only about one production release per year.
166
167       Larry and the Perl development team occasionally make changes to the
168       internal core of the language, but all possible efforts are made toward
169       backward compatibility.  While not quite all Perl 4 scripts run
170       flawlessly under Perl 5, an update to perl should nearly never
171       invalidate a program written for an earlier version of perl (barring
172       accidental bug fixes and the rare new keyword).
173
174   Is Perl difficult to learn?
175       No, Perl is easy to start learning--and easy to keep learning.  It
176       looks like most programming languages you're likely to have experience
177       with, so if you've ever written a C program, an awk script, a shell
178       script, or even a BASIC program, you're already partway there.
179
180       Most tasks only require a small subset of the Perl language.  One of
181       the guiding mottos for Perl development is "there's more than one way
182       to do it" (TMTOWTDI, sometimes pronounced "tim toady").  Perl's
183       learning curve is therefore shallow (easy to learn) and long (there's a
184       whole lot you can do if you really want).
185
186       Finally, because Perl is frequently (but not always, and certainly not
187       by definition) an interpreted language, you can write your programs and
188       test them without an intermediate compilation step, allowing you to
189       experiment and test/debug quickly and easily.  This ease of
190       experimentation flattens the learning curve even more.
191
192       Things that make Perl easier to learn: Unix experience, almost any kind
193       of programming experience, an understanding of regular expressions, and
194       the ability to understand other people's code.  If there's something
195       you need to do, then it's probably already been done, and a working
196       example is usually available for free.  Don't forget Perl modules,
197       either.  They're discussed in Part 3 of this FAQ, along with CPAN,
198       which is discussed in Part 2.
199
200   How does Perl compare with other languages like Java, Python, REXX, Scheme,
201       or Tcl?
202       Favorably in some areas, unfavorably in others.  Precisely which areas
203       are good and bad is often a personal choice, so asking this question on
204       Usenet runs a strong risk of starting an unproductive Holy War.
205
206       Probably the best thing to do is try to write equivalent code to do a
207       set of tasks.  These languages have their own newsgroups in which you
208       can learn about (but hopefully not argue about) them.
209
210       Some comparison documents can be found at
211       http://www.perl.com/doc/FMTEYEWTK/versus/ if you really can't stop
212       yourself.
213
214   Can I do [task] in Perl?
215       Perl is flexible and extensible enough for you to use on virtually any
216       task, from one-line file-processing tasks to large, elaborate systems.
217       For many people, Perl serves as a great replacement for shell
218       scripting.  For others, it serves as a convenient, high-level
219       replacement for most of what they'd program in low-level languages like
220       C or C++.  It's ultimately up to you (and possibly your management)
221       which tasks you'll use Perl for and which you won't.
222
223       If you have a library that provides an API, you can make any component
224       of it available as just another Perl function or variable using a Perl
225       extension written in C or C++ and dynamically linked into your main
226       perl interpreter.  You can also go the other direction, and write your
227       main program in C or C++, and then link in some Perl code on the fly,
228       to create a powerful application.  See perlembed.
229
230       That said, there will always be small, focused, special-purpose
231       languages dedicated to a specific problem domain that are simply more
232       convenient for certain kinds of problems.  Perl tries to be all things
233       to all people, but nothing special to anyone.  Examples of specialized
234       languages that come to mind include prolog and matlab.
235
236   When shouldn't I program in Perl?
237       When your manager forbids it--but do consider replacing them :-).
238
239       Actually, one good reason is when you already have an existing
240       application written in another language that's all done (and done
241       well), or you have an application language specifically designed for a
242       certain task (e.g. prolog, make).
243
244       For various reasons, Perl is probably not well-suited for real-time
245       embedded systems, low-level operating systems development work like
246       device drivers or context-switching code, complex multi-threaded
247       shared-memory applications, or extremely large applications.  You'll
248       notice that perl is not itself written in Perl.
249
250       Perl remains fundamentally a dynamically typed language, not a
251       statically typed one.  You certainly won't be chastised if you don't
252       trust nuclear-plant or brain-surgery monitoring code to it.  And Larry
253       will sleep easier, too--Wall Street programs not withstanding. :-)
254
255   What's the difference between "perl" and "Perl"?
256       One bit.  Oh, you weren't talking ASCII? :-) Larry now uses "Perl" to
257       signify the language proper and "perl" the implementation of it, i.e.
258       the current interpreter.  Hence Tom's quip that "Nothing but perl can
259       parse Perl."
260
261       Before the first edition of Programming perl, people commonly referred
262       to the language as "perl", and its name appeared that way in the title
263       because it referred to the interpreter. In the book, Randal Schwartz
264       capitalised the language's name to make it stand out better when
265       typeset. This convention was adopted by the community, and the second
266       edition became Programming Perl, using the capitalized version of the
267       name to refer to the language.
268
269       You may or may not choose to follow this usage.  For example,
270       parallelism means "awk and perl" and "Python and Perl" look good, while
271       "awk and Perl" and "Python and perl" do not.  But never write "PERL",
272       because perl is not an acronym, apocryphal folklore and post-facto
273       expansions notwithstanding.
274
275   Is it a Perl program or a Perl script?
276       Larry doesn't really care.  He says (half in jest) that "a script is
277       what you give the actors.  A program is what you give the audience."
278
279       Originally, a script was a canned sequence of normally interactive
280       commands--that is, a chat script.  Something like a UUCP or PPP chat
281       script or an expect script fits the bill nicely, as do configuration
282       scripts run by a program at its start up, such .cshrc or .ircrc, for
283       example.  Chat scripts were just drivers for existing programs, not
284       stand-alone programs in their own right.
285
286       A computer scientist will correctly explain that all programs are
287       interpreted and that the only question is at what level.  But if you
288       ask this question of someone who isn't a computer scientist, they might
289       tell you that a program has been compiled to physical machine code once
290       and can then be run multiple times, whereas a script must be translated
291       by a program each time it's used.
292
293       Now that "script" and "scripting" are terms that have been seized by
294       unscrupulous or unknowing marketeers for their own nefarious purposes,
295       they have begun to take on strange and often pejorative meanings, like
296       "non serious" or "not real programming".  Consequently, some Perl
297       programmers prefer to avoid them altogether.
298
299   What is a JAPH?
300       (contributed by brian d foy)
301
302       JAPH stands for "Just another Perl hacker,", which Randal Schwartz used
303       to sign email and usenet messages starting in the late 1980s. He
304       previously used the phrase with many subjects ("Just another x
305       hacker,"), so to distinguish his JAPH, he started to write them as Perl
306       programs:
307
308               print "Just another Perl hacker,";
309
310       Other people picked up on this and started to write clever or
311       obfuscated programs to produce the same output, spinning things quickly
312       out of control while still providing hours of amusement for their
313       creators and readers.
314
315       CPAN has several JAPH programs at http://www.cpan.org/misc/japh .
316
317   Where can I get a list of Larry Wall witticisms?
318       (contributed by brian d foy)
319
320       Google "larry wall quotes"! You might even try the "I feel lucky"
321       button.  :)
322
323       Wikiquote has the witticisms from Larry along with their source,
324       including his usenet postings and source code comments.
325
326       If you want a plain text file, try
327       http://www.cpan.org/misc/lwall-quotes.txt.gz .
328
329   How can I convince others to use Perl?
330       (contributed by brian d foy)
331
332       Appeal to their self interest! If Perl is new (and thus scary) to them,
333       find something that Perl can do to solve one of their problems. That
334       might mean that Perl either saves them something (time, headaches,
335       money) or gives them something (flexibility, power, testability).
336
337       In general, the benefit of a language is closely related to the skill
338       of the people using that language. If you or your team can be more
339       faster, better, and stronger through Perl, you'll deliver more value.
340       Remember, people often respond better to what they get out of it. If
341       you run into resistance, figure out what those people get out of the
342       other choice and how Perl might satisfy that requirement.
343
344       You don't have to worry about finding or paying for Perl; it's freely
345       available and several popular operating systems come with Perl.
346       Community support in places such as Perlmonks (
347       http://www.perlmonks.com ) and the various Perl mailing lists (
348       http://lists.perl.org ) means that you can usually get quick answers to
349       your problems.
350
351       Finally, keep in mind that Perl might not be the right tool for every
352       job. You're a much better advocate if your claims are reasonable and
353       grounded in reality. Dogmatically advocating anything tends to make
354       people discount your message. Be honest about possible disadvantages to
355       your choice of Perl since any choice has trade-offs.
356
357       You might find these links useful:
358
359       ·   http://perltraining.com.au/whyperl.html
360
361       ·   http://www.perl.org/advocacy/whyperl.html
362

REVISION

364       Revision: $Revision$
365
366       Date: $Date$
367
368       See perlfaq for source control details and availability.
369
371       Copyright (c) 1997-2009 Tom Christiansen, Nathan Torkington, and other
372       authors as noted. All rights reserved.
373
374       This documentation is free; you can redistribute it and/or modify it
375       under the same terms as Perl itself.
376
377       Irrespective of its distribution, all code examples here are in the
378       public domain.  You are permitted and encouraged to use this code and
379       any derivatives thereof in your own programs for fun or for profit as
380       you see fit.  A simple comment in the code giving credit to the FAQ
381       would be courteous but is not required.
382
383
384
385perl v5.10.1                      2009-08-15                       PERLFAQ1(1)
Impressum