1PERLFAQ1(1) Perl Programmers Reference Guide PERLFAQ1(1)
2
3
4
6 perlfaq1 - General Questions About Perl
7
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
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)