diff options
Diffstat (limited to 'upstream/mageia-cauldron/man1/perlfaq1.1')
-rw-r--r-- | upstream/mageia-cauldron/man1/perlfaq1.1 | 371 |
1 files changed, 371 insertions, 0 deletions
diff --git a/upstream/mageia-cauldron/man1/perlfaq1.1 b/upstream/mageia-cauldron/man1/perlfaq1.1 new file mode 100644 index 00000000..ef17efea --- /dev/null +++ b/upstream/mageia-cauldron/man1/perlfaq1.1 @@ -0,0 +1,371 @@ +.\" -*- mode: troff; coding: utf-8 -*- +.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. +.ie n \{\ +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "PERLFAQ1 1" +.TH PERLFAQ1 1 2023-11-28 "perl v5.38.2" "Perl Programmers Reference Guide" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH NAME +perlfaq1 \- General Questions About Perl +.SH VERSION +.IX Header "VERSION" +version 5.20210520 +.SH DESCRIPTION +.IX Header "DESCRIPTION" +This section of the FAQ answers very general, high-level questions +about Perl. +.SS "What is Perl?" +.IX Subsection "What is Perl?" +Perl is a high-level programming language with an eclectic heritage +written by Larry Wall and a cast of thousands. +.PP +Perl's process, file, and text manipulation facilities make it +particularly well-suited for tasks involving quick prototyping, system +utilities, software tools, system management tasks, database access, +graphical programming, networking, and web programming. +.PP +Perl derives from the ubiquitous C programming language and to a +lesser extent from sed, awk, the Unix shell, and many other tools +and languages. +.PP +These strengths make it especially popular with web developers +and system administrators. Mathematicians, geneticists, journalists, +managers and many other people also use Perl. +.SS "Who supports Perl? Who develops it? Why is it free?" +.IX Subsection "Who supports Perl? Who develops it? Why is it free?" +The original culture of the pre-populist Internet and the deeply-held +beliefs of Perl's author, Larry Wall, gave rise to the free and open +distribution policy of Perl. Perl is supported by its users. The +core, the standard Perl library, the optional modules, and the +documentation you're reading now were all written by volunteers. +.PP +The core development team (known as the Perl Porters) +are a group 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 <http://www.nntp.perl.org/group/perl.perl5.porters/> +or you can subscribe to the mailing list by sending +perl5\-porters\-subscribe@perl.org a subscription request +(an empty message with no subject is fine). +.PP +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 +Free Software Foundation. Perl's licensing terms are also more open +than GNU software's tend to be. +.PP +You can get commercial support of Perl if you wish, although for most +users the informal support will more than suffice. See the answer to +"Where can I buy a commercial version of Perl?" for more information. +.SS "Which version of Perl should I use?" +.IX Subsection "Which version of Perl should I use?" +(contributed by brian d foy with updates from others) +.PP +There is often a matter of opinion and taste, and there isn't any one +answer that fits everyone. In general, you want to use either the current +stable release, or the stable release immediately prior to that one. +.PP +Beyond that, you have to consider several things and decide which is best +for you. +.IP \(bu 4 +If things aren't broken, upgrading perl may break them (or at least issue +new warnings). +.IP \(bu 4 +The latest versions of perl have more bug fixes. +.IP \(bu 4 +The latest versions of perl may contain performance improvements and +features not present in older versions. There have been many changes +in perl since perl5 was first introduced. +.IP \(bu 4 +The Perl community is geared toward supporting the most recent releases, +so you'll have an easier time finding help for those. +.IP \(bu 4 +Older versions of perl may have security vulnerabilities, some of which +are serious (see perlsec and search +CVEs <https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=Perl> for more +information). +.IP \(bu 4 +The latest versions are probably the least deployed and widely tested, so +you may want to wait a few months after their release and see what +problems others have if you are risk averse. +.IP \(bu 4 +The immediate, in addition to the current stable release, the previous +stable release is maintained. See +"MAINTENANCE AND SUPPORT" in perlpolicy for more information. +.IP \(bu 4 +There are really two tracks of perl development: a maintenance version +and an experimental version. The maintenance versions are stable, and +have an even number as the minor release (i.e. perl5.24.x, where 24 is the +minor release). The experimental versions may include features that +don't make it into the stable versions, and have an odd number as the +minor release (i.e. perl5.25.x, where 25 is the minor release). +.IP \(bu 4 +You can consult releases <http://dev.perl.org/perl5> to determine the +current stable release of Perl. +.SS "What are Perl 4, Perl 5, or Raku (Perl 6)?" +.IX Subsection "What are Perl 4, Perl 5, or Raku (Perl 6)?" +In short, Perl 4 is the parent to both Perl 5 and Raku (formerly known as +Perl 6). Perl 5 is the older sibling, and though they are different languages, +someone who knows one will spot many similarities in the other. +.PP +The number after Perl (i.e. the 5 after Perl 5) is the major release +of the perl interpreter as well as the version of the language. Each +major version has significant differences that earlier versions cannot +support. +.PP +The current major release of Perl is Perl 5, first released in +1994. It can run scripts from the previous major release, Perl 4 +(March 1991), but has significant differences. +.PP +Raku is a reinvention of Perl, a language in the same lineage but +not compatible. The two are complementary, not mutually exclusive. Raku is +not meant to replace Perl, and vice versa. See "What is Raku (Perl 6)?" +below to find out more. +.PP +See perlhist for a history of Perl revisions. +.SS "What is Raku (Perl 6)?" +.IX Subsection "What is Raku (Perl 6)?" +Raku (formerly known as Perl 6) was \fIoriginally\fR described as the community's +rewrite of Perl, however as the language evolved, it became clear that it is +a separate language, but in the same language family as Perl. +.PP +Raku is not intended primarily as a replacement for Perl, but as its +own thing \- and libraries exist to allow you to call Perl code from Raku +programs and vice versa. +.PP +Contrary to popular belief, Raku and Perl peacefully coexist with one +another. Raku has proven to be a fascinating source of ideas for those +using Perl (the Moose object system is a well-known example). There is +overlap in the communities, and this overlap fosters the tradition of sharing +and borrowing that have been instrumental to Perl's success. +.PP +For more about Raku see <https://www.raku.org/>. +.PP +"We're really serious about reinventing everything that needs reinventing." +\&\-\-Larry Wall +.SS "How stable is Perl?" +.IX Subsection "How stable is Perl?" +Production releases, which incorporate bug fixes and new functionality, +are widely tested before release. Since the 5.000 release, we have +averaged about one production release per year. +.PP +The Perl development team occasionally make changes to the +internal core of the language, but all possible efforts are made toward +backward compatibility. +.SS "How often are new versions of Perl released?" +.IX Subsection "How often are new versions of Perl released?" +Recently, the plan has been to release a new version of Perl roughly every +April, but getting the release right is more important than sticking rigidly to +a calendar date, so the release date is somewhat flexible. The historical +release dates can be viewed at <http://www.cpan.org/src/README.html>. +.PP +Even numbered minor versions (5.14, 5.16, 5.18) are production versions, and +odd numbered minor versions (5.15, 5.17, 5.19) are development versions. Unless +you want to try out an experimental feature, you probably never want to install +a development version of Perl. +.PP +The Perl development team are called Perl 5 Porters, and their +organization is described at <http://perldoc.perl.org/perlpolicy.html>. +The organizational rules really just boil down to one: Larry is always +right, even when he was wrong. +.SS "Is Perl difficult to learn?" +.IX Subsection "Is Perl difficult to learn?" +No, Perl is easy to start learning <http://learn.perl.org/> \-\-and easy to keep learning. It looks +like most programming languages you're likely to have experience +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. +.PP +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 +to do it" (TMTOWTDI, sometimes pronounced "tim toady"). Perl's +learning curve is therefore shallow (easy to learn) and long (there's +a whole lot you can do if you really want). +.PP +Finally, because Perl is frequently (but not always, and certainly not by +definition) an interpreted language, you can write your programs and test +them without an intermediate compilation step, allowing you to experiment +and test/debug quickly and easily. This ease of experimentation flattens +the learning curve even more. +.PP +Things that make Perl easier to learn: Unix experience, almost any kind +of programming experience, an understanding of regular expressions, and +the ability to understand other people's code. If there's something you +need to do, then it's probably already been done, and a working example is +usually available for free. Don't forget Perl modules, either. +They're discussed in Part 3 of this FAQ, along with CPAN <http://www.cpan.org/>, which is +discussed in Part 2. +.SS "How does Perl compare with other languages like Java, Python, REXX, Scheme, or Tcl?" +.IX Subsection "How does Perl compare with other languages like Java, Python, REXX, Scheme, or Tcl?" +Perl can be used for almost any coding problem, even ones which require +integrating specialist C code for extra speed. As with any tool it can +be used well or badly. Perl has many strengths, and a few weaknesses, +precisely which areas are good and bad is often a personal choice. +.PP +When choosing a language you should also be influenced by the +resources <http://www.cpan.org/>, testing culture <http://www.cpantesters.org/> +and community <http://www.perl.org/community.html> which surrounds it. +.PP +For comparisons to a specific language it is often best to create +a small project in both languages and compare the results, make sure +to use all the resources <http://www.cpan.org/> of each language, +as a language is far more than just it's syntax. +.SS "Can I do [task] in Perl?" +.IX Subsection "Can I do [task] in Perl?" +Perl is flexible and extensible enough for you to use on virtually any +task, from one-line file-processing tasks to large, elaborate systems. +.PP +For many people, Perl serves as a great replacement for shell scripting. +For others, it serves as a convenient, high-level replacement for most of +what they'd program in low-level languages like C or C++. It's ultimately +up to you (and possibly your management) which tasks you'll use Perl +for and which you won't. +.PP +If you have a library that provides an API, you can make any component +of it available as just another Perl function or variable using a Perl +extension written in C or C++ and dynamically linked into your main +perl interpreter. You can also go the other direction, and write your +main program in C or C++, and then link in some Perl code on the fly, +to create a powerful application. See perlembed. +.PP +That said, there will always be small, focused, special-purpose +languages dedicated to a specific problem domain that are simply more +convenient for certain kinds of problems. Perl tries to be all things +to all people, but nothing special to anyone. Examples of specialized +languages that come to mind include prolog and matlab. +.SS "When shouldn't I program in Perl?" +.IX Subsection "When shouldn't I program in Perl?" +One good reason is when you already have an existing +application written in another language that's all done (and done +well), or you have an application language specifically designed for a +certain task (e.g. prolog, make). +.PP +If you find that you need to speed up a specific part of a Perl +application (not something you often need) you may want to use C, +but you can access this from your Perl code with perlxs. +.SS "What's the difference between ""perl"" and ""Perl""?" +.IX Subsection "What's the difference between ""perl"" and ""Perl""?" +"Perl" is the name of the language. Only the "P" is capitalized. +The name of the interpreter (the program which runs the Perl script) +is "perl" with a lowercase "p". +.PP +You may or may not choose to follow this usage. But never write "PERL", +because perl is not an acronym. +.SS "What is a JAPH?" +.IX Subsection "What is a JAPH?" +(contributed by brian d foy) +.PP +JAPH stands for "Just another Perl hacker,", which Randal Schwartz used +to sign email and usenet messages starting in the late 1980s. He +previously used the phrase with many subjects ("Just another x hacker,"), +so to distinguish his JAPH, he started to write them as Perl programs: +.PP +.Vb 1 +\& print "Just another Perl hacker,"; +.Ve +.PP +Other people picked up on this and started to write clever or obfuscated +programs to produce the same output, spinning things quickly out of +control while still providing hours of amusement for their creators and +readers. +.PP +CPAN has several JAPH programs at <http://www.cpan.org/misc/japh>. +.SS "How can I convince others to use Perl?" +.IX Subsection "How can I convince others to use Perl?" +(contributed by brian d foy) +.PP +Appeal to their self interest! If Perl is new (and thus scary) to them, +find something that Perl can do to solve one of their problems. That +might mean that Perl either saves them something (time, headaches, money) +or gives them something (flexibility, power, testability). +.PP +In general, the benefit of a language is closely related to the skill of +the people using that language. If you or your team can be faster, +better, and stronger through Perl, you'll deliver more value. Remember, +people often respond better to what they get out of it. If you run +into resistance, figure out what those people get out of the other +choice and how Perl might satisfy that requirement. +.PP +You don't have to worry about finding or paying for Perl; it's freely +available and several popular operating systems come with Perl. Community +support in places such as Perlmonks ( <http://www.perlmonks.com> ) +and the various Perl mailing lists ( <http://lists.perl.org> ) means that +you can usually get quick answers to your problems. +.PP +Finally, keep in mind that Perl might not be the right tool for every +job. You're a much better advocate if your claims are reasonable and +grounded in reality. Dogmatically advocating anything tends to make +people discount your message. Be honest about possible disadvantages +to your choice of Perl since any choice has trade-offs. +.PP +You might find these links useful: +.IP \(bu 4 +<http://www.perl.org/about.html> +.IP \(bu 4 +<http://perltraining.com.au/whyperl.html> +.SH "AUTHOR AND COPYRIGHT" +.IX Header "AUTHOR AND COPYRIGHT" +Copyright (c) 1997\-2010 Tom Christiansen, Nathan Torkington, and +other authors as noted. All rights reserved. +.PP +This documentation is free; you can redistribute it and/or modify it +under the same terms as Perl itself. +.PP +Irrespective of its distribution, all code examples here are in the public +domain. You are permitted and encouraged to use this code and any +derivatives thereof in your own programs for fun or for profit as you +see fit. A simple comment in the code giving credit to the FAQ would +be courteous but is not required. |