SEARCH
NEW RPMS
DIRECTORIES
ABOUT
FAQ
VARIOUS
BLOG

BotDetect - Real-Time Bot Detection API
 
 

MAN page from Old RedHat 5.X perl-5.004-4.i386.rpm

PERLFAQ1

Section: Perl Programmers Reference Guide (1)
Updated: perl 5.004, patch 04
Index 

NAME

perlfaq1 - General Questions About Perl ($Revision: 1.12 $, $Date: 1997/04/24 22:43:34 $) 

DESCRIPTION

This section of the FAQ answers very general, high-level questionsabout Perl. 

What is Perl?

Perl is a high-level programming language with an eclectic heritagewritten by Larry Wall and a cast of thousands. It derives from theubiquitous C programming language and to a lesser extent from sed,awk, the Unix shell, and at least a dozen other tools and languages.Perl's process, file, and text manipulation facilities make itparticularly well-suited for tasks involving quick prototyping, systemutilities, software tools, system management tasks, database access,graphical programming, networking, and world wide web programming.These strengths make it especially popular with system administratorsand CGI script authors, but mathematicians, geneticists, journalists,and even managers also use Perl. Maybe you should, too. 

Who supports Perl? Who develops it? Why is it free?

The original culture of the pre-populist Internet and the deeply-heldbeliefs of Perl's author, Larry Wall, gave rise to the free and opendistribution policy of perl. Perl is supported by its users. Thecore, the standard Perl library, the optional modules, and thedocumentation you're reading now were all written by volunteers. Seethe personal note at the end of the README file in the perl sourcedistribution for more details.

In particular, the core development team (known as the PerlPorters) are a rag-tag band of highly altruistic individualscommitted to producing better software for free than youcould hope to purchase for money. You may snoop on pendingdevelopments via news://genetics.upenn.edu/perl.porters-gw/ andhttp://www.frii.com/~gnat/perl/porters/summary.html.

While the GNU project includes Perl in its distributions, there's nosuch thing as ``GNU Perl''. Perl is not produced nor maintained by theFree Software Foundation. Perl's licensing terms are also more openthan GNU software's tend to be.

You can get commercial support of Perl if you wish, although for mostusers the informal support will more than suffice. See the answer to``Where can I buy a commercial version of perl?'' for more information. 

Which version of Perl should I use?

You should definitely use version 5. Version 4 is old, limited, andno longer maintained; its last patch (4.036) was in 1992. The mostrecent production release is 5.004. Further references to the Perllanguage in this document refer to this production release unlessotherwise specified. There may be one or more official bug fixes for5.004 by the time you read this, and also perhaps some experimentalversions on the way to the next release. 

What are perl4 and perl5?

Perl4 and perl5 are informal names for different versions of the Perlprogramming language. It's easier to say ``perl5'' than it is to say``the 5(.004) release of Perl'', but some people have interpreted thisto mean there's a language called ``perl5'', which isn't the case.Perl5 is merely the popular name for the fifth major release (October 1994),while perl4 was the fourth major release (March 1991). There was also aperl1 (in January 1988), a perl2 (June 1988), and a perl3 (October 1989).

The 5.0 release is, essentially, a complete rewrite of the perl sourcecode from the ground up. It has been modularized, object-oriented,tweaked, trimmed, and optimized until it almost doesn't look like theold code. However, the interface is mostly the same, and compatibilitywith previous releases is very high.

To avoid the ``what language is perl5?'' confusion, some people prefer tosimply use ``perl'' to refer to the latest version of perl and avoid using``perl5'' altogether. It's not really that big a deal, though. 

How stable is Perl?

Production releases, which incorporate bug fixes and new functionality,are widely tested before release. Since the 5.000 release, we haveaveraged only about one production release per year.

Larry and the Perl development team occasionally make changes to theinternal core of the language, but all possible efforts are made towardbackward compatibility. While not quite all perl4 scripts run flawlesslyunder perl5, an update to perl should nearly never invalidate a programwritten for an earlier version of perl (barring accidental bug fixesand the rare new keyword). 

Is Perl difficult to learn?

Perl is easy to start learning -- and easy to keep learning. It lookslike most programming languages you're likely to have had experiencewith, so if you've ever written an C program, an awk script, a shellscript, or even an Excel macro, you're already part way there.

Most tasks only require a small subset of the Perl language. One ofthe guiding mottos for Perl development is ``there's more than one wayto do it'' (TMTOWTDI, sometimes pronounced ``tim toady"). Perl'slearning curve is therefore shallow (easy to learn) and long (there'sa whole lot you can do if you really want).

Finally, Perl is (frequently) an interpreted language. This meansthat you can write your programs and test them without an intermediatecompilation step, allowing you to experiment and test/debug quicklyand easily. This ease of experimentation flattens the learning curveeven more.

Things that make Perl easier to learn: Unix experience, almost any kindof programming experience, an understanding of regular expressions, andthe ability to understand other people's code. If there's something youneed to do, then it's probably already been done, and a working example isusually available for free. Don't forget the new perl modules, either.They're discussed in Part 3 of this FAQ, along with the CPAN, which isdiscussed in Part 2. 

How does Perl compare with other languages like Java, Python, REXX, Scheme, or Tcl?

Favorably in some areas, unfavorably in others. Precisely which areasare good and bad is often a personal choice, so asking this questionon Usenet runs a strong risk of starting an unproductive Holy War.

Probably the best thing to do is try to write equivalent code to do aset of tasks. These languages have their own newsgroups in which youcan learn about (but hopefully not argue about) them. 

Can I do [task] in Perl?

Perl is flexible and extensible enough for you to use on almost anytask, from one-line file-processing tasks to complex systems. Formany people, Perl serves as a great replacement for shell scripting.For others, it serves as a convenient, high-level replacement for mostof what they'd program in low-level languages like C or C++. It'sultimately up to you (and possibly your management ...) which tasksyou'll use Perl for and which you won't.

If you have a library that provides an API, you can make any componentof it available as just another Perl function or variable using a Perlextension written in C or C++ and dynamically linked into your mainperl interpreter. You can also go the other direction, and write yourmain program in C or C++, and then link in some Perl code on the fly,to create a powerful application.

That said, there will always be small, focused, special-purposelanguages dedicated to a specific problem domain that are simply moreconvenient for certain kinds of problems. Perl tries to be all thingsto all people, but nothing special to anyone. Examples of specializedlanguages that come to mind include prolog and matlab. 

When shouldn't I program in Perl?

When your manager forbids it -- but do consider replacing them :-).

Actually, one good reason is when you already have an existingapplication written in another language that's all done (and donewell), or you have an application language specifically designed for acertain task (e.g. prolog, make).

For various reasons, Perl is probably not well-suited for real-timeembedded systems, low-level operating systems development work likedevice drivers or context-switching code, complex multithreadedshared-memory applications, or extremely large applications. You'llnotice that perl is not itself written in Perl.

The new native-code compiler for Perl may reduce the limitations givenin the previous statement to some degree, but understand that Perlremains fundamentally a dynamically typed language, and not astatically typed one. You certainly won't be chastized if you don'ttrust nuclear-plant or brain-surgery monitoring code to it. AndLarry will sleep easier, too -- Wall Street programs notwithstanding. :-) 

What's the difference between perl and Perl?

One bit. Oh, you weren't talking ASCII? :-) Larry now uses ``Perl'' tosignify the language proper and ``perl'' the implementation of it,i.e. the current interpreter. Hence Tom's quip that ``Nothing but perlcan parse Perl.'' You may or may not choose to follow this usage. Forexample, parallelism means ``awk and perl'' and ``Python and Perl'' lookok, while ``awk and Perl'' and ``Python and perl'' do not. 

Is it a Perl program or a Perl script?

It doesn't matter.

In ``standard terminology'' a program has been compiled to physicalmachine code once, and can then be be run multiple times, whereas ascript must be translated by a program each time it's used. Perlprograms, however, are usually neither strictly compiled nor strictlyinterpreted. They can be compiled to a byte code form (something of aPerl virtual machine) or to completely different languages, like C orassembly language. You can't tell just by looking whether the sourceis destined for a pure interpreter, a parse-tree interpreter, a bytecode interpreter, or a native-code compiler, so it's hard to give adefinitive answer here. 

What is a JAPH?

These are the ``just another perl hacker'' signatures that some peoplesign their postings with. About 100 of the of the earlier ones areavailable from http://www.perl.com/CPAN/misc/japh . 

Where can I get a list of Larry Wall witticisms?

Over a hundred quips by Larry, from postings of his or source code,can be found at http://www.perl.com/CPAN/misc/lwall-quotes . 

How can I convince my sysadmin/supervisor/employees to use version (5/5.004/Perl instead of some other language)?

If your manager or employees are wary of unsupported software, orsoftware which doesn't officially ship with your Operating System, youmight try to appeal to their self-interest. If programmers can bemore productive using and utilizing Perl constructs, functionality,simplicity, and power, then the typical manager/supervisor/employeemay be persuaded. Regarding using Perl in general, it's alsosometimes helpful to point out that delivery times may be reducedusing Perl, as compared to other languages.

If you have a project which has a bottleneck, especially in terms oftranslation, or testing, Perl almost certainly will provide a viable,and quick solution. In conjunction with any persuasion effort, youshould not fail to point out that Perl is used, quite extensively, andwith extremely reliable and valuable results, at many large computersoftware and/or hardware companies throughout the world. In fact,many Unix vendors now ship Perl by default, and support is usuallyjust a news-posting away, if you can't find the answer in thecomprehensive documentation, including this FAQ.

If you face reluctance to upgrading from an older version of perl,then point out that version 4 is utterly unmaintained and unsupportedby the Perl Development Team. Another big sell for Perl5 is the largenumber of modules and extensions which greatly reduce development timefor any given task. Also mention that the difference between version4 and version 5 of Perl is like the difference between awk and C++.(Well, ok, maybe not quite that distinct, but you get the idea.) Ifyou want support and a reasonable guarantee that what you'redeveloping will continue to work in the future, then you have to runthe supported version. That probably means running the 5.004 release,although 5.003 isn't that bad (it's just one year and one releasebehind). Several important bugs were fixed from the 5.000 through5.002 versions, though, so try upgrading past them if possible. 

AUTHOR AND COPYRIGHT

Copyright (c) 1997 Tom Christiansen and Nathan Torkington.All rights reserved. See the perlfaq manpage for distribution information.


 

Index

NAME
DESCRIPTION
What is Perl?
Who supports Perl? Who develops it? Why is it free?
Which version of Perl should I use?
What are perl4 and perl5?
How stable is Perl?
Is Perl difficult to learn?
How does Perl compare with other languages like Java, Python, REXX, Scheme, or Tcl?
Can I do [task] in Perl?
When shouldn't I program in Perl?
What's the difference between perl and Perl?
Is it a Perl program or a Perl script?
What is a JAPH?
Where can I get a list of Larry Wall witticisms?
How can I convince my sysadmin/supervisor/employees to use version (5/5.004/Perl instead of some other language)?
AUTHOR AND COPYRIGHT

This document was created byman2html,using the manual pages.
 
ICM Bot detect detector