1=head1 NAME 2 3perlfaq1 - General Questions About Perl ($Revision: 1.14 $, $Date: 2003/11/23 08:02:29 $) 4 5=head1 DESCRIPTION 6 7This section of the FAQ answers very general, high-level questions 8about Perl. 9 10=head2 What is Perl? 11 12Perl is a high-level programming language with an eclectic heritage 13written by Larry Wall and a cast of thousands. It derives from the 14ubiquitous C programming language and to a lesser extent from sed, 15awk, the Unix shell, and at least a dozen other tools and languages. 16Perl's process, file, and text manipulation facilities make it 17particularly well-suited for tasks involving quick prototyping, system 18utilities, software tools, system management tasks, database access, 19graphical programming, networking, and world wide web programming. 20These strengths make it especially popular with system administrators 21and CGI script authors, but mathematicians, geneticists, journalists, 22and even managers also use Perl. Maybe you should, too. 23 24=head2 Who supports Perl? Who develops it? Why is it free? 25 26The original culture of the pre-populist Internet and the deeply-held 27beliefs of Perl's author, Larry Wall, gave rise to the free and open 28distribution policy of perl. Perl is supported by its users. The 29core, the standard Perl library, the optional modules, and the 30documentation you're reading now were all written by volunteers. See 31the personal note at the end of the README file in the perl source 32distribution for more details. See L<perlhist> (new as of 5.005) 33for Perl's milestone releases. 34 35In particular, the core development team (known as the Perl Porters) 36are a rag-tag band of highly altruistic individuals committed to 37producing better software for free than you could hope to purchase for 38money. You may snoop on pending developments via the archives at 39http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/ 40and http://archive.develooper.com/perl5-porters@perl.org/ 41or the news gateway nntp://nntp.perl.org/perl.perl5.porters or 42its web interface at http://nntp.perl.org/group/perl.perl5.porters , 43or read the faq at http://simon-cozens.org/writings/p5p-faq , 44or you can subscribe to the mailing list by sending 45perl5-porters-request@perl.org a subscription request 46(an empty message with no subject is fine). 47 48While the GNU project includes Perl in its distributions, there's no 49such thing as "GNU Perl". Perl is not produced nor maintained by the 50Free Software Foundation. Perl's licensing terms are also more open 51than GNU software's tend to be. 52 53You can get commercial support of Perl if you wish, although for most 54users the informal support will more than suffice. See the answer to 55"Where can I buy a commercial version of perl?" for more information. 56 57=head2 Which version of Perl should I use? 58 59You should definitely use version 5. Version 4 is old, limited, and 60no longer maintained; its last patch (4.036) was in 1992, long ago and 61far away. Sure, it's stable, but so is anything that's dead; in fact, 62perl4 had been called a dead, flea-bitten camel carcass. The most 63recent production release is 5.8.2 (although 5.005_03 and 5.6.2 are 64still supported). The most cutting-edge development release is 5.9. 65Further references to the Perl language in this document refer to the 66production release unless otherwise specified. There may be one or 67more official bug fixes by the time you read this, and also perhaps 68some experimental versions on the way to the next release. 69All releases prior to 5.004 were subject to buffer overruns, a grave 70security issue. 71 72=head2 What are perl4 and perl5? 73 74Perl4 and perl5 are informal names for different versions of the Perl 75programming language. It's easier to say "perl5" than it is to say 76"the 5(.004) release of Perl", but some people have interpreted this 77to mean there's a language called "perl5", which isn't the case. 78Perl5 is merely the popular name for the fifth major release (October 1994), 79while perl4 was the fourth major release (March 1991). There was also a 80perl1 (in January 1988), a perl2 (June 1988), and a perl3 (October 1989). 81 82The 5.0 release is, essentially, a ground-up rewrite of the original 83perl source code from releases 1 through 4. It has been modularized, 84object-oriented, tweaked, trimmed, and optimized until it almost doesn't 85look like the old code. However, the interface is mostly the same, and 86compatibility with previous releases is very high. 87See L<perltrap/"Perl4 to Perl5 Traps">. 88 89To avoid the "what language is perl5?" confusion, some people prefer to 90simply use "perl" to refer to the latest version of perl and avoid using 91"perl5" altogether. It's not really that big a deal, though. 92 93See L<perlhist> for a history of Perl revisions. 94 95=head2 What is Ponie? 96 97At The O'Reilly Open Source Software Convention in 2003, Artur 98Bergman, Fotango, and The Perl Foundation announced a project to 99run perl5 on the Parrot virtual machine named Ponie. Ponie stands for 100Perl On New Internal Engine. The Perl 5.10 language implementation 101will be used for Ponie, and there will be no language level 102differences between perl5 and ponie. Ponie is not a complete rewrite 103of perl5. 104 105For more details, see http://www.poniecode.org/ 106 107=head2 What is perl6? 108 109At The Second O'Reilly Open Source Software Convention, Larry Wall 110announced Perl6 development would begin in earnest. Perl6 was an oft 111used term for Chip Salzenberg's project to rewrite Perl in C++ named 112Topaz. However, Topaz provided valuable insights to the next version 113of Perl and its implementation, but was ultimately abandoned. 114 115If you want to learn more about Perl6, or have a desire to help in 116the crusade to make Perl a better place then peruse the Perl6 developers 117page at http://dev.perl.org/perl6/ and get involved. 118 119Perl6 is not scheduled for release yet, and Perl5 will still be supported 120for quite awhile after its release. Do not wait for Perl6 to do whatever 121you need to do. 122 123"We're really serious about reinventing everything that needs reinventing." 124--Larry Wall 125 126=head2 How stable is Perl? 127 128Production releases, which incorporate bug fixes and new functionality, 129are widely tested before release. Since the 5.000 release, we have 130averaged only about one production release per year. 131 132Larry and the Perl development team occasionally make changes to the 133internal core of the language, but all possible efforts are made toward 134backward compatibility. While not quite all perl4 scripts run flawlessly 135under perl5, an update to perl should nearly never invalidate a program 136written for an earlier version of perl (barring accidental bug fixes 137and the rare new keyword). 138 139=head2 Is Perl difficult to learn? 140 141No, Perl is easy to start learning--and easy to keep learning. It looks 142like most programming languages you're likely to have experience 143with, so if you've ever written a C program, an awk script, a shell 144script, or even a BASIC program, you're already partway there. 145 146Most tasks only require a small subset of the Perl language. One of 147the guiding mottos for Perl development is "there's more than one way 148to do it" (TMTOWTDI, sometimes pronounced "tim toady"). Perl's 149learning curve is therefore shallow (easy to learn) and long (there's 150a whole lot you can do if you really want). 151 152Finally, because Perl is frequently (but not always, and certainly not by 153definition) an interpreted language, you can write your programs and test 154them without an intermediate compilation step, allowing you to experiment 155and test/debug quickly and easily. This ease of experimentation flattens 156the learning curve even more. 157 158Things that make Perl easier to learn: Unix experience, almost any kind 159of programming experience, an understanding of regular expressions, and 160the ability to understand other people's code. If there's something you 161need to do, then it's probably already been done, and a working example is 162usually available for free. Don't forget the new perl modules, either. 163They're discussed in Part 3 of this FAQ, along with CPAN, which is 164discussed in Part 2. 165 166=head2 How does Perl compare with other languages like Java, Python, REXX, Scheme, or Tcl? 167 168Favorably in some areas, unfavorably in others. Precisely which areas 169are good and bad is often a personal choice, so asking this question 170on Usenet runs a strong risk of starting an unproductive Holy War. 171 172Probably the best thing to do is try to write equivalent code to do a 173set of tasks. These languages have their own newsgroups in which you 174can learn about (but hopefully not argue about) them. 175 176Some comparison documents can be found at http://language.perl.com/versus/ 177if you really can't stop yourself. 178 179=head2 Can I do [task] in Perl? 180 181Perl is flexible and extensible enough for you to use on virtually any 182task, from one-line file-processing tasks to large, elaborate systems. 183For many people, Perl serves as a great replacement for shell scripting. 184For others, it serves as a convenient, high-level replacement for most of 185what they'd program in low-level languages like C or C++. It's ultimately 186up to you (and possibly your management) which tasks you'll use Perl 187for and which you won't. 188 189If you have a library that provides an API, you can make any component 190of it available as just another Perl function or variable using a Perl 191extension written in C or C++ and dynamically linked into your main 192perl interpreter. You can also go the other direction, and write your 193main program in C or C++, and then link in some Perl code on the fly, 194to create a powerful application. See L<perlembed>. 195 196That said, there will always be small, focused, special-purpose 197languages dedicated to a specific problem domain that are simply more 198convenient for certain kinds of problems. Perl tries to be all things 199to all people, but nothing special to anyone. Examples of specialized 200languages that come to mind include prolog and matlab. 201 202=head2 When shouldn't I program in Perl? 203 204When your manager forbids it--but do consider replacing them :-). 205 206Actually, one good reason is when you already have an existing 207application written in another language that's all done (and done 208well), or you have an application language specifically designed for a 209certain task (e.g. prolog, make). 210 211For various reasons, Perl is probably not well-suited for real-time 212embedded systems, low-level operating systems development work like 213device drivers or context-switching code, complex multi-threaded 214shared-memory applications, or extremely large applications. You'll 215notice that perl is not itself written in Perl. 216 217The new, native-code compiler for Perl may eventually reduce the 218limitations given in the previous statement to some degree, but understand 219that Perl remains fundamentally a dynamically typed language, not 220a statically typed one. You certainly won't be chastised if you don't 221trust nuclear-plant or brain-surgery monitoring code to it. And Larry 222will sleep easier, too--Wall Street programs not withstanding. :-) 223 224=head2 What's the difference between "perl" and "Perl"? 225 226One bit. Oh, you weren't talking ASCII? :-) Larry now uses "Perl" to 227signify the language proper and "perl" the implementation of it, 228i.e. the current interpreter. Hence Tom's quip that "Nothing but perl 229can parse Perl." You may or may not choose to follow this usage. For 230example, parallelism means "awk and perl" and "Python and Perl" look 231OK, while "awk and Perl" and "Python and perl" do not. But never 232write "PERL", because perl is not an acronym, apocryphal 233folklore and post-facto expansions notwithstanding. 234 235=head2 Is it a Perl program or a Perl script? 236 237Larry doesn't really care. He says (half in jest) that "a script is 238what you give the actors. A program is what you give the audience." 239 240Originally, a script was a canned sequence of normally interactive 241commands--that is, a chat script. Something like a UUCP or PPP chat 242script or an expect script fits the bill nicely, as do configuration 243scripts run by a program at its start up, such F<.cshrc> or F<.ircrc>, 244for example. Chat scripts were just drivers for existing programs, 245not stand-alone programs in their own right. 246 247A computer scientist will correctly explain that all programs are 248interpreted and that the only question is at what level. But if you 249ask this question of someone who isn't a computer scientist, they might 250tell you that a I<program> has been compiled to physical machine code 251once and can then be run multiple times, whereas a I<script> must be 252translated by a program each time it's used. 253 254Perl programs are (usually) neither strictly compiled nor strictly 255interpreted. They can be compiled to a byte-code form (something of a 256Perl virtual machine) or to completely different languages, like C or 257assembly language. You can't tell just by looking at it whether the 258source is destined for a pure interpreter, a parse-tree interpreter, 259a byte-code interpreter, or a native-code compiler, so it's hard to give 260a definitive answer here. 261 262Now that "script" and "scripting" are terms that have been seized by 263unscrupulous or unknowing marketeers for their own nefarious purposes, 264they have begun to take on strange and often pejorative meanings, 265like "non serious" or "not real programming". Consequently, some Perl 266programmers prefer to avoid them altogether. 267 268=head2 What is a JAPH? 269 270These are the "just another perl hacker" signatures that some people 271sign their postings with. Randal Schwartz made these famous. About 272100 of the earlier ones are available from 273http://www.cpan.org/misc/japh . 274 275=head2 Where can I get a list of Larry Wall witticisms? 276 277Over a hundred quips by Larry, from postings of his or source code, 278can be found at http://www.cpan.org/misc/lwall-quotes.txt.gz . 279 280=head2 How can I convince my sysadmin/supervisor/employees to use version 5/5.6.1/Perl instead of some other language? 281 282If your manager or employees are wary of unsupported software, or 283software which doesn't officially ship with your operating system, you 284might try to appeal to their self-interest. If programmers can be 285more productive using and utilizing Perl constructs, functionality, 286simplicity, and power, then the typical manager/supervisor/employee 287may be persuaded. Regarding using Perl in general, it's also 288sometimes helpful to point out that delivery times may be reduced 289using Perl compared to other languages. 290 291If you have a project which has a bottleneck, especially in terms of 292translation or testing, Perl almost certainly will provide a viable, 293quick solution. In conjunction with any persuasion effort, you 294should not fail to point out that Perl is used, quite extensively, and 295with extremely reliable and valuable results, at many large computer 296software and hardware companies throughout the world. In fact, 297many Unix vendors now ship Perl by default. Support is usually 298just a news-posting away, if you can't find the answer in the 299I<comprehensive> documentation, including this FAQ. 300 301See http://www.perl.org/advocacy/ for more information. 302 303If you face reluctance to upgrading from an older version of perl, 304then point out that version 4 is utterly unmaintained and unsupported 305by the Perl Development Team. Another big sell for Perl5 is the large 306number of modules and extensions which greatly reduce development time 307for any given task. Also mention that the difference between version 3084 and version 5 of Perl is like the difference between awk and C++. 309(Well, OK, maybe it's not quite that distinct, but you get the idea.) 310If you want support and a reasonable guarantee that what you're 311developing will continue to work in the future, then you have to run 312the supported version. As of December 2003 that means running either 3135.8.2 (released in November 2003), or one of the older releases like 3145.6.2 (also released in November 2003; a maintenance release to let perl 3155.6 compile on newer systems as 5.6.1 was released in April 2001) or 3165.005_03 (released in March 1999), 317although 5.004_05 isn't that bad if you B<absolutely> need such an old 318version (released in April 1999) for stability reasons. 319Anything older than 5.004_05 shouldn't be used. 320 321Of particular note is the massive bug hunt for buffer overflow 322problems that went into the 5.004 release. All releases prior to 323that, including perl4, are considered insecure and should be upgraded 324as soon as possible. 325 326In August 2000 in all Linux distributions a new security problem was 327found in the optional 'suidperl' (not built or installed by default) 328in all the Perl branches 5.6, 5.005, and 5.004, see 329http://www.cpan.org/src/5.0/sperl-2000-08-05/ 330Perl maintenance releases 5.6.1 and 5.8.0 have this security hole closed. 331Most, if not all, Linux distribution have patches for this 332vulnerability available, see http://www.linuxsecurity.com/advisories/ , 333but the most recommendable way is to upgrade to at least Perl 5.6.1. 334 335=head1 AUTHOR AND COPYRIGHT 336 337Copyright (c) 1997, 1998, 1999, 2000, 2001 Tom Christiansen and Nathan 338Torkington. All rights reserved. 339 340This documentation is free; you can redistribute it and/or modify it 341under the same terms as Perl itself. 342 343Irrespective of its distribution, all code examples here are in the public 344domain. You are permitted and encouraged to use this code and any 345derivatives thereof in your own programs for fun or for profit as you 346see fit. A simple comment in the code giving credit to the FAQ would 347be courteous but is not required. 348