home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Magazin: Amiga-CD 1996 July
/
AMIGA_1996_7.BIN
/
ausgabe_7_96
/
pd-programmierung
/
perl5_002bin.lha
/
man
/
catp
/
perl.0
next >
Wrap
Text File
|
1996-03-02
|
24KB
|
397 lines
PERL(1) User Contributed Perl Documentation PERL(1)
NNNNAAAAMMMMEEEE
perl - Practical Extraction and Report Language
SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
ppppeeeerrrrllll [ ----aaaaccccddddhhhhnnnnppppPPPPssssSSSSTTTTuuuuUUUUvvvvwwww ] [ ----0000[_o_c_t_a_l] ] [ ----DDDD_n_u_m_b_e_r_/_l_i_s_t] ]
[ ----FFFF_s_t_r_i_n_g ] [ ----iiii[_e_x_t_e_n_s_i_o_n] ] [ ----IIII_d_i_r ] [ ----llll_o_c_t_a_l ] [
----xxxx_d_i_r ] [ _p_r_o_g_r_a_m_f_i_l_e | ----eeee _c_o_m_m_a_n_d ] [ _a_r_g_u_m_e_n_t ... ]
For ease of access, the Perl manual has been split up into
a number of sections:
ppppeeeerrrrllll PPPPeeeerrrrllll oooovvvveeeerrrrvvvviiiieeeewwww ((((tttthhhhiiiissss sssseeeeccccttttiiiioooonnnn))))
ppppeeeerrrrllllttttoooocccc PPPPeeeerrrrllll ddddooooccccuuuummmmeeeennnnttttaaaattttiiiioooonnnn ttttaaaabbbblllleeee ooooffff ccccoooonnnntttteeeennnnttttssss
ppppeeeerrrrllllddddaaaattttaaaa PPPPeeeerrrrllll ddddaaaattttaaaa ssssttttrrrruuuuccccttttuuuurrrreeeessss
ppppeeeerrrrllllssssyyyynnnn PPPPeeeerrrrllll ssssyyyynnnnttttaaaaxxxx
ppppeeeerrrrlllloooopppp PPPPeeeerrrrllll ooooppppeeeerrrraaaattttoooorrrrssss aaaannnndddd pppprrrreeeecccceeeeddddeeeennnncccceeee
ppppeeeerrrrllllrrrreeee PPPPeeeerrrrllll rrrreeeegggguuuullllaaaarrrr eeeexxxxpppprrrreeeessssssssiiiioooonnnnssss
ppppeeeerrrrllllrrrruuuunnnn PPPPeeeerrrrllll eeeexxxxeeeeccccuuuuttttiiiioooonnnn aaaannnndddd ooooppppttttiiiioooonnnnssss
ppppeeeerrrrllllffffuuuunnnncccc PPPPeeeerrrrllll bbbbuuuuiiiillllttttiiiinnnn ffffuuuunnnnccccttttiiiioooonnnnssss
ppppeeeerrrrllllvvvvaaaarrrr PPPPeeeerrrrllll pppprrrreeeeddddeeeeffffiiiinnnneeeedddd vvvvaaaarrrriiiiaaaabbbblllleeeessss
ppppeeeerrrrllllssssuuuubbbb PPPPeeeerrrrllll ssssuuuubbbbrrrroooouuuuttttiiiinnnneeeessss
ppppeeeerrrrllllmmmmoooodddd PPPPeeeerrrrllll mmmmoooodddduuuulllleeeessss
ppppeeeerrrrllllrrrreeeeffff PPPPeeeerrrrllll rrrreeeeffffeeeerrrreeeennnncccceeeessss
ppppeeeerrrrllllddddsssscccc PPPPeeeerrrrllll ddddaaaattttaaaa ssssttttrrrruuuuccccttttuuuurrrreeeessss iiiinnnnttttrrrroooo
ppppeeeerrrrlllllllloooollll PPPPeeeerrrrllll ddddaaaattttaaaa ssssttttrrrruuuuccccttttuuuurrrreeeessss:::: lllliiiissssttttssss ooooffff lllliiiissssttttssss
ppppeeeerrrrlllloooobbbbjjjj PPPPeeeerrrrllll oooobbbbjjjjeeeeccccttttssss
ppppeeeerrrrllllttttiiiieeee PPPPeeeerrrrllll oooobbbbjjjjeeeeccccttttssss hhhhiiiiddddddddeeeennnn bbbbeeeehhhhiiiinnnndddd ssssiiiimmmmpppplllleeee vvvvaaaarrrriiiiaaaabbbblllleeeessss
ppppeeeerrrrllllbbbbooootttt PPPPeeeerrrrllll OOOOOOOO ttttrrrriiiicccckkkkssss aaaannnndddd eeeexxxxaaaammmmpppplllleeeessss
ppppeeeerrrrllllddddeeeebbbbuuuugggg PPPPeeeerrrrllll ddddeeeebbbbuuuuggggggggiiiinnnngggg
ppppeeeerrrrllllddddiiiiaaaagggg PPPPeeeerrrrllll ddddiiiiaaaaggggnnnnoooossssttttiiiicccc mmmmeeeessssssssaaaaggggeeeessss
ppppeeeerrrrllllffffoooorrrrmmmm PPPPeeeerrrrllll ffffoooorrrrmmmmaaaattttssss
ppppeeeerrrrlllliiiippppcccc PPPPeeeerrrrllll iiiinnnntttteeeerrrrpppprrrroooocccceeeessssssss ccccoooommmmmmmmuuuunnnniiiiccccaaaattttiiiioooonnnn
ppppeeeerrrrllllsssseeeecccc PPPPeeeerrrrllll sssseeeeccccuuuurrrriiiittttyyyy
ppppeeeerrrrllllttttrrrraaaapppp PPPPeeeerrrrllll ttttrrrraaaappppssss ffffoooorrrr tttthhhheeee uuuunnnnwwwwaaaarrrryyyy
ppppeeeerrrrllllssssttttyyyylllleeee PPPPeeeerrrrllll ssssttttyyyylllleeee gggguuuuiiiiddddeeee
ppppeeeerrrrllllxxxxssss PPPPeeeerrrrllll XXXXSSSS aaaapppppppplllliiiiccccaaaattttiiiioooonnnn pppprrrrooooggggrrrraaaammmmmmmmiiiinnnngggg iiiinnnntttteeeerrrrffffaaaacccceeee
ppppeeeerrrrllllxxxxssssttttuuuutttt PPPPeeeerrrrllll XXXXSSSS ttttuuuuttttoooorrrriiiiaaaallll
ppppeeeerrrrllllgggguuuuttttssss PPPPeeeerrrrllll iiiinnnntttteeeerrrrnnnnaaaallll ffffuuuunnnnccccttttiiiioooonnnnssss ffffoooorrrr tttthhhhoooosssseeee ddddooooiiiinnnngggg eeeexxxxtttteeeennnnssssiiiioooonnnnssss
ppppeeeerrrrllllccccaaaallllllll PPPPeeeerrrrllll ccccaaaalllllllliiiinnnngggg ccccoooonnnnvvvveeeennnnttttiiiioooonnnnssss ffffrrrroooommmm CCCC
ppppeeeerrrrlllleeeemmmmbbbbeeeedddd PPPPeeeerrrrllll hhhhoooowwww ttttoooo eeeemmmmbbbbeeeedddd ppppeeeerrrrllll iiiinnnn yyyyoooouuuurrrr CCCC oooorrrr CCCC++++++++ aaaapppppppp
ppppeeeerrrrllllppppoooodddd PPPPeeeerrrrllll ppppllllaaaaiiiinnnn oooolllldddd ddddooooccccuuuummmmeeeennnnttttaaaattttiiiioooonnnn
ppppeeeerrrrllllbbbbooooooookkkk PPPPeeeerrrrllll bbbbooooooookkkk iiiinnnnffffoooorrrrmmmmaaaattttiiiioooonnnn
(If you're intending to read these straight through for
the first time, the suggested order will tend to reduce
the number of forward references.)
Additional documentation for Perl modules is available in
the _/_u_s_r_/_l_o_c_a_l_/_m_a_n_/ directory. Some of this is
distributed standard with Perl, but you'll also find
third-party modules there. You should be able to view
this with your _m_a_n(1) program by including the proper
directories in the appropriate start-up files. To find
out where these are, type:
30/Jan/96 perl 5.002 with 1
PERL(1) User Contributed Perl Documentation PERL(1)
ppppeeeerrrrllll ----lllleeee ''''uuuusssseeee CCCCoooonnnnffffiiiigggg;;;; pppprrrriiiinnnntttt """"@@@@CCCCoooonnnnffffiiiigggg{{{{mmmmaaaannnn1111ddddiiiirrrr,,,,mmmmaaaannnn3333ddddiiiirrrr}}}}""""''''
If the directories were _/_u_s_r_/_l_o_c_a_l_/_m_a_n_/_m_a_n_1 and
_/_u_s_r_/_l_o_c_a_l_/_m_a_n_/_m_a_n_3, you would only need to add
_/_u_s_r_/_l_o_c_a_l_/_m_a_n to your MANPATH. If they are different,
you'll have to add both stems.
If that doesn't work for some reason, you can still use
the supplied _p_e_r_l_d_o_c script to view module information.
You might also look into getting a replacement man
program.
If something strange has gone wrong with your program and
you're not sure where you should look for help, try the ----wwww
switch first. It will often point out exactly where the
trouble is.
DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
Perl is an interpreted language optimized for scanning
arbitrary text files, extracting information from those
text files, and printing reports based on that
information. It's also a good language for many system
management tasks. The language is intended to be
practical (easy to use, efficient, complete) rather than
beautiful (tiny, elegant, minimal). It combines (in the
author's opinion, anyway) some of the best features of C,
sssseeeedddd, aaaawwwwkkkk, and sssshhhh, so people familiar with those languages
should have little difficulty with it. (Language
historians will also note some vestiges of ccccsssshhhh, Pascal,
and even BASIC-PLUS.) Expression syntax corresponds quite
closely to C expression syntax. Unlike most Unix
utilities, Perl does not arbitrarily limit the size of
your data--if you've got the memory, Perl can slurp in
your whole file as a single string. Recursion is of
unlimited depth. And the hash tables used by associative
arrays grow as necessary to prevent degraded performance.
Perl uses sophisticated pattern matching techniques to
scan large amounts of data very quickly. Although
optimized for scanning text, Perl can also deal with
binary data, and can make dbm files look like associative
arrays. Setuid Perl scripts are safer than C programs
through a dataflow tracing mechanism which prevents many
stupid security holes. If you have a problem that would
ordinarily use sssseeeedddd or aaaawwwwkkkk or sssshhhh, but it exceeds their
capabilities or must run a little faster, and you don't
want to write the silly thing in C, then Perl may be for
you. There are also translators to turn your sssseeeedddd and aaaawwwwkkkk
scripts into Perl scripts.
But wait, there's more...
Perl version 5 is nearly a complete rewrite, and provides
the following additional benefits:
30/Jan/96 perl 5.002 with 2
PERL(1) User Contributed Perl Documentation PERL(1)
+o Many usability enhancements
It is now possible to write much more readable Perl
code (even within regular expressions). Formerly
cryptic variable names can be replaced by mnemonic
identifiers. Error messages are more informative,
and the optional warnings will catch many of the
mistakes a novice might make. This cannot be
stressed enough. Whenever you get mysterious
behavior, try the ----wwww switch!!! Whenever you don't
get mysterious behavior, try using ----wwww anyway.
+o Simplified grammar
The new yacc grammar is one half the size of the old
one. Many of the arbitrary grammar rules have been
regularized. The number of reserved words has been
cut by 2/3. Despite this, nearly all old Perl
scripts will continue to work unchanged.
+o Lexical scoping
Perl variables may now be declared within a lexical
scope, like "auto" variables in C. Not only is this
more efficient, but it contributes to better privacy
for "programming in the large".
+o Arbitrarily nested data structures
Any scalar value, including any array element, may
now contain a reference to any other variable or
subroutine. You can easily create anonymous
variables and subroutines. Perl manages your
reference counts for you.
+o Modularity and reusability
The Perl library is now defined in terms of modules
which can be easily shared among various packages. A
package may choose to import all or a portion of a
module's published interface. Pragmas (that is,
compiler directives) are defined and used by the same
mechanism.
+o Object-oriented programming
A package can function as a class. Dynamic multiple
inheritance and virtual methods are supported in a
straightforward manner and with very little new
syntax. Filehandles may now be treated as objects.
+o Embeddable and Extensible
Perl may now be embedded easily in your C or C++
application, and can either call or be called by your
routines through a documented interface. The XS
preprocessor is provided to make it easy to glue your
C or C++ routines into Perl. Dynamic loading of
modules is supported.
30/Jan/96 perl 5.002 with 3
PERL(1) User Contributed Perl Documentation PERL(1)
+o POSIX compliant
A major new module is the POSIX module, which
provides access to all available POSIX routines and
definitions, via object classes where appropriate.
+o Package constructors and destructors
The new BEGIN and END blocks provide means to capture
control as a package is being compiled, and after the
program exits. As a degenerate case they work just
like awk's BEGIN and END when you use the ----pppp or ----nnnn
switches.
+o Multiple simultaneous DBM implementations
A Perl program may now access DBM, NDBM, SDBM, GDBM,
and Berkeley DB files from the same script
simultaneously. In fact, the old dbmopen interface
has been generalized to allow any variable to be tied
to an object class which defines its access methods.
+o Subroutine definitions may now be autoloaded
In fact, the AUTOLOAD mechanism also allows you to
define any arbitrary semantics for undefined
subroutine calls. It's not just for autoloading.
+o Regular expression enhancements
You can now specify non-greedy quantifiers. You can
now do grouping without creating a backreference.
You can now write regular expressions with embedded
whitespace and comments for readability. A
consistent extensibility mechanism has been added
that is upwardly compatible with all old regular
expressions.
Ok, that's _d_e_f_i_n_i_t_e_l_y enough hype.
EEEENNNNVVVVIIIIRRRROOOONNNNMMMMEEEENNNNTTTT
HOME Used if chdir has no argument.
LOGDIR Used if chdir has no argument and HOME is not
set.
PATH Used in executing subprocesses, and in finding
the script if ----SSSS is used.
PERL5LIB A colon-separated list of directories in which
to look for Perl library files before looking
in the standard library and the current
directory. If PERL5LIB is not defined,
PERLLIB is used. When running taint checks
(because the script was running setuid or
setgid, or the ----TTTT switch was used), neither
variable is used. The script should instead
say
30/Jan/96 perl 5.002 with 4
PERL(1) User Contributed Perl Documentation PERL(1)
uuuusssseeee lllliiiibbbb """"////mmmmyyyy////ddddiiiirrrreeeeccccttttoooorrrryyyy"""";;;;
PERL5DB The command used to get the debugger code. If
unset, uses
BBBBEEEEGGGGIIIINNNN {{{{ rrrreeeeqqqquuuuiiiirrrreeee ''''ppppeeeerrrrllll5555ddddbbbb....ppppllll'''' }}}}
PERLLIB A colon-separated list of directories in which
to look for Perl library files before looking
in the standard library and the current
directory. If PERL5LIB is defined, PERLLIB is
not used.
Apart from these, Perl uses no other environment
variables, except to make them available to the script
being executed, and to child processes. However, scripts
running setuid would do well to execute the following
lines before doing anything else, just to keep people
honest:
$$$$EEEENNNNVVVV{{{{''''PPPPAAAATTTTHHHH''''}}}} ==== ''''////bbbbiiiinnnn::::////uuuussssrrrr////bbbbiiiinnnn'''';;;; #### oooorrrr wwwwhhhhaaaatttteeeevvvveeeerrrr yyyyoooouuuu nnnneeeeeeeedddd
$$$$EEEENNNNVVVV{{{{''''SSSSHHHHEEEELLLLLLLL''''}}}} ==== ''''////bbbbiiiinnnn////sssshhhh'''' iiiiffff ddddeeeeffffiiiinnnneeeedddd $$$$EEEENNNNVVVV{{{{''''SSSSHHHHEEEELLLLLLLL''''}}}};;;;
$$$$EEEENNNNVVVV{{{{''''IIIIFFFFSSSS''''}}}} ==== '''''''' iiiiffff ddddeeeeffffiiiinnnneeeedddd $$$$EEEENNNNVVVV{{{{''''IIIIFFFFSSSS''''}}}};;;;
AAAAUUUUTTTTHHHHOOOORRRR
Larry Wall <<_l_w_a_l_l_@_s_e_m_s_._c_o_m>, with the help of oodles of
other folks.
FFFFIIIILLLLEEEESSSS
""""////ttttmmmmpppp////ppppeeeerrrrllll----eeee$$$$$$$$"""" tttteeeemmmmppppoooorrrraaaarrrryyyy ffffiiiilllleeee ffffoooorrrr ----eeee ccccoooommmmmmmmaaaannnnddddssss
""""@@@@IIIINNNNCCCC"""" llllooooccccaaaattttiiiioooonnnnssss ooooffff ppppeeeerrrrllll 5555 lllliiiibbbbrrrraaaarrrriiiieeeessss
SSSSEEEEEEEE AAAALLLLSSSSOOOO
aaaa2222pppp aaaawwwwkkkk ttttoooo ppppeeeerrrrllll ttttrrrraaaannnnssssllllaaaattttoooorrrr
ssss2222pppp sssseeeedddd ttttoooo ppppeeeerrrrllll ttttrrrraaaannnnssssllllaaaattttoooorrrr
DDDDIIIIAAAAGGGGNNNNOOOOSSSSTTTTIIIICCCCSSSS
The ----wwww switch produces some lovely diagnostics.
See the _p_e_r_l_d_i_a_g manpage for explanations of all Perl's
diagnostics.
Compilation errors will tell you the line number of the
error, with an indication of the next token or token type
that was to be examined. (In the case of a script passed
to Perl via ----eeee switches, each ----eeee is counted as one line.)
Setuid scripts have additional constraints that can
30/Jan/96 perl 5.002 with 5
PERL(1) User Contributed Perl Documentation PERL(1)
produce error messages such as "Insecure dependency". See
the _p_e_r_l_s_e_c manpage.
Did we mention that you should definitely consider using
the ----wwww switch?
BBBBUUUUGGGGSSSS
The ----wwww switch is not mandatory.
Perl is at the mercy of your machine's definitions of
various operations such as type casting, _a_t_o_f_(_) and
_s_p_r_i_n_t_f_(_). The latter can even trigger a coredump when
passed ludicrous input values.
If your stdio requires a seek or eof between reads and
writes on a particular stream, so does Perl. (This
doesn't apply to _s_y_s_r_e_a_d_(_) and _s_y_s_w_r_i_t_e_(_).)
While none of the built-in data types have any arbitrary
size limits (apart from memory size), there are still a
few arbitrary limits: a given identifier may not be
longer than 255 characters, and no component of your PATH
may be longer than 255 if you use ----SSSS. A regular
expression may not compile to more than 32767 bytes
internally.
See the perl bugs database at _h_t_t_p_:_/_/_p_e_r_l_._c_o_m_/_p_e_r_l_/_b_u_g_s_/.
You may mail your bug reports (be sure to include full
configuration information as output by the myconfig
program in the perl source tree) to _p_e_r_l_b_u_g_@_p_e_r_l_._c_o_m. If
you've succeeded in compiling perl, the perlbug script in
the utils/ subdirectory can be used to help mail in a bug
report.
Perl actually stands for Pathologically Eclectic Rubbish
Lister, but don't tell anyone I said that.
NNNNOOOOTTTTEEEESSSS
The Perl motto is "There's more than one way to do it."
Divining how many more is left as an exercise to the
reader.
The three principal virtues of a programmer are Laziness,
Impatience, and Hubris. See the Camel Book for why.
30/Jan/96 perl 5.002 with 6