1=head1 NAME 2 3perl - Practical Extraction and Report Language 4 5=head1 SYNOPSIS 6 7B<perl> S<[ B<-sTuU> ]> S<[ B<-hv> ] [ B<-V>[:I<configvar>] ]> 8 S<[ B<-cw> ] [ B<-d>[:I<debugger>] ] [ B<-D>[I<number/list>] ]> 9 S<[ B<-pna> ] [ B<-F>I<pattern> ] [ B<-l>[I<octal>] ] [ B<-0>[I<octal>] ]> 10 S<[ B<-I>I<dir> ] [ B<-m>[B<->]I<module> ] [ B<-M>[B<->]I<'module...'> ]> 11 S<[ B<-P> ]> S<[ B<-S> ]> S<[ B<-x>[I<dir>] ]> 12 S<[ B<-i>[I<extension>] ]> S<[ B<-e> I<'command'> ] 13 [ B<--> ] [ I<programfile> ] [ I<argument> ]...> 14 15For ease of access, the Perl manual has been split up into several sections: 16 17 perl Perl overview (this section) 18 perlfaq Perl frequently asked questions 19 perltoc Perl documentation table of contents 20 perlbook Perl book information 21 22 perlsyn Perl syntax 23 perldata Perl data structures 24 perlop Perl operators and precedence 25 perlsub Perl subroutines 26 perlfunc Perl builtin functions 27 perlreftut Perl references short introduction 28 perldsc Perl data structures intro 29 perlrequick Perl regular expressions quick start 30 perlpod Perl plain old documentation 31 perlstyle Perl style guide 32 perltrap Perl traps for the unwary 33 34 perlrun Perl execution and options 35 perldiag Perl diagnostic messages 36 perllexwarn Perl warnings and their control 37 perldebtut Perl debugging tutorial 38 perldebug Perl debugging 39 40 perlvar Perl predefined variables 41 perllol Perl data structures: arrays of arrays 42 perlopentut Perl open() tutorial 43 perlretut Perl regular expressions tutorial 44 45 perlre Perl regular expressions, the rest of the story 46 perlref Perl references, the rest of the story 47 48 perlform Perl formats 49 50 perlboot Perl OO tutorial for beginners 51 perltoot Perl OO tutorial, part 1 52 perltootc Perl OO tutorial, part 2 53 perlobj Perl objects 54 perlbot Perl OO tricks and examples 55 perltie Perl objects hidden behind simple variables 56 57 perlipc Perl interprocess communication 58 perlfork Perl fork() information 59 perlnumber Perl number semantics 60 perlthrtut Perl threads tutorial 61 62 perlport Perl portability guide 63 perllocale Perl locale support 64 perlunicode Perl unicode support 65 perlebcdic Considerations for running Perl on EBCDIC platforms 66 67 perlsec Perl security 68 69 perlmod Perl modules: how they work 70 perlmodlib Perl modules: how to write and use 71 perlmodinstall Perl modules: how to install from CPAN 72 perlnewmod Perl modules: preparing a new module for distribution 73 74 perlfaq1 General Questions About Perl 75 perlfaq2 Obtaining and Learning about Perl 76 perlfaq3 Programming Tools 77 perlfaq4 Data Manipulation 78 perlfaq5 Files and Formats 79 perlfaq6 Regexes 80 perlfaq7 Perl Language Issues 81 perlfaq8 System Interaction 82 perlfaq9 Networking 83 84 perlcompile Perl compiler suite intro 85 86 perlembed Perl ways to embed perl in your C or C++ application 87 perldebguts Perl debugging guts and tips 88 perlxstut Perl XS tutorial 89 perlxs Perl XS application programming interface 90 perlclib Internal replacements for standard C library functions 91 perlguts Perl internal functions for those doing extensions 92 perlcall Perl calling conventions from C 93 perlutil utilities packaged with the Perl distribution 94 perlfilter Perl source filters 95 perldbmfilter Perl DBM filters 96 perlapi Perl API listing (autogenerated) 97 perlintern Perl internal functions (autogenerated) 98 perlapio Perl internal IO abstraction interface 99 perltodo Perl things to do 100 perlhack Perl hackers guide 101 102 perlhist Perl history records 103 perldelta Perl changes since previous version 104 perl5005delta Perl changes in version 5.005 105 perl5004delta Perl changes in version 5.004 106 107 perlaix Perl notes for AIX 108 perlamiga Perl notes for Amiga 109 perlbs2000 Perl notes for POSIX-BC BS2000 110 perlcygwin Perl notes for Cygwin 111 perldos Perl notes for DOS 112 perlepoc Perl notes for EPOC 113 perlhpux Perl notes for HP-UX 114 perlmachten Perl notes for Power MachTen 115 perlmacos Perl notes for Mac OS (Classic) 116 perlmpeix Perl notes for MPE/iX 117 perlos2 Perl notes for OS/2 118 perlos390 Perl notes for OS/390 119 perlsolaris Perl notes for Solaris 120 perlvmesa Perl notes for VM/ESA 121 perlvms Perl notes for VMS 122 perlvos Perl notes for Stratus VOS 123 perlwin32 Perl notes for Windows 124 125(If you're intending to read these straight through for the first time, 126the suggested order will tend to reduce the number of forward references.) 127 128By default, the manpages listed above are installed in the 129F</usr/local/man/> directory. 130 131Extensive additional documentation for Perl modules is available. The 132default configuration for perl will place this additional documentation 133in the F</usr/local/lib/perl5/man> directory (or else in the F<man> 134subdirectory of the Perl library directory). Some of this additional 135documentation is distributed standard with Perl, but you'll also find 136documentation for third-party modules there. 137 138You should be able to view Perl's documentation with your man(1) 139program by including the proper directories in the appropriate start-up 140files, or in the MANPATH environment variable. To find out where the 141configuration has installed the manpages, type: 142 143 perl -V:man.dir 144 145If the directories have a common stem, such as F</usr/local/man/man1> 146and F</usr/local/man/man3>, you need only to add that stem 147(F</usr/local/man>) to your man(1) configuration files or your MANPATH 148environment variable. If they do not share a stem, you'll have to add 149both stems. 150 151If that doesn't work for some reason, you can still use the 152supplied F<perldoc> script to view module information. You might 153also look into getting a replacement man program. 154 155If something strange has gone wrong with your program and you're not 156sure where you should look for help, try the B<-w> switch first. It 157will often point out exactly where the trouble is. 158 159=head1 DESCRIPTION 160 161Perl is a language optimized for scanning arbitrary 162text files, extracting information from those text files, and printing 163reports based on that information. It's also a good language for many 164system management tasks. The language is intended to be practical 165(easy to use, efficient, complete) rather than beautiful (tiny, 166elegant, minimal). 167 168Perl combines (in the author's opinion, anyway) some of the best 169features of C, B<sed>, B<awk>, and B<sh>, so people familiar with 170those languages should have little difficulty with it. (Language 171historians will also note some vestiges of B<csh>, Pascal, and even 172BASIC-PLUS.) Expression syntax corresponds closely to C 173expression syntax. Unlike most Unix utilities, Perl does not 174arbitrarily limit the size of your data--if you've got the memory, 175Perl can slurp in your whole file as a single string. Recursion is of 176unlimited depth. And the tables used by hashes (sometimes called 177"associative arrays") grow as necessary to prevent degraded 178performance. Perl can use sophisticated pattern matching techniques to 179scan large amounts of data quickly. Although optimized for 180scanning text, Perl can also deal with binary data, and can make dbm 181files look like hashes. Setuid Perl scripts are safer than C programs 182through a dataflow tracing mechanism that prevents many stupid 183security holes. 184 185If you have a problem that would ordinarily use B<sed> or B<awk> or 186B<sh>, but it exceeds their capabilities or must run a little faster, 187and you don't want to write the silly thing in C, then Perl may be for 188you. There are also translators to turn your B<sed> and B<awk> 189scripts into Perl scripts. 190 191But wait, there's more... 192 193Begun in 1993 (see L<perlhist>), Perl version 5 is nearly a complete 194rewrite that provides the following additional benefits: 195 196=over 4 197 198=item * 199 200modularity and reusability using innumerable modules 201 202Described in L<perlmod>, L<perlmodlib>, and L<perlmodinstall>. 203 204=item * 205 206embeddable and extensible 207 208Described in L<perlembed>, L<perlxstut>, L<perlxs>, L<perlcall>, 209L<perlguts>, and L<xsubpp>. 210 211=item * 212 213roll-your-own magic variables (including multiple simultaneous DBM implementations) 214 215Described in L<perltie> and L<AnyDBM_File>. 216 217=item * 218 219subroutines can now be overridden, autoloaded, and prototyped 220 221Described in L<perlsub>. 222 223=item * 224 225arbitrarily nested data structures and anonymous functions 226 227Described in L<perlreftut>, L<perlref>, L<perldsc>, and L<perllol>. 228 229=item * 230 231object-oriented programming 232 233Described in L<perlobj>, L<perltoot>, and L<perlbot>. 234 235=item * 236 237compilability into C code or Perl bytecode 238 239Described in L<B> and L<B::Bytecode>. 240 241=item * 242 243support for light-weight processes (threads) 244 245Described in L<perlthrtut> and L<Thread>. 246 247=item * 248 249support for internationalization, localization, and Unicode 250 251Described in L<perllocale> and L<utf8>. 252 253=item * 254 255lexical scoping 256 257Described in L<perlsub>. 258 259=item * 260 261regular expression enhancements 262 263Described in L<perlre>, with additional examples in L<perlop>. 264 265=item * 266 267enhanced debugger and interactive Perl environment, 268with integrated editor support 269 270Described in L<perldebug>. 271 272=item * 273 274POSIX 1003.1 compliant library 275 276Described in L<POSIX>. 277 278=back 279 280Okay, that's I<definitely> enough hype. 281 282=head1 AVAILABILITY 283 284Perl is available for most operating systems, including virtually 285all Unix-like platforms. See L<perlport/"Supported Platforms"> 286for a listing. 287 288=head1 ENVIRONMENT 289 290See L<perlrun>. 291 292=head1 AUTHOR 293 294Larry Wall <larry@wall.org>, with the help of oodles of other folks. 295 296If your Perl success stories and testimonials may be of help to others 297who wish to advocate the use of Perl in their applications, 298or if you wish to simply express your gratitude to Larry and the 299Perl developers, please write to perl-thanks@perl.org . 300 301=head1 FILES 302 303 "@INC" locations of perl libraries 304 305=head1 SEE ALSO 306 307 a2p awk to perl translator 308 s2p sed to perl translator 309 310 http://www.perl.com/ the Perl Home Page 311 http://www.perl.com/CPAN the Comprehensive Perl Archive 312 313=head1 DIAGNOSTICS 314 315The C<use warnings> pragma (and the B<-w> switch) produces some 316lovely diagnostics. 317 318See L<perldiag> for explanations of all Perl's diagnostics. The C<use 319diagnostics> pragma automatically turns Perl's normally terse warnings 320and errors into these longer forms. 321 322Compilation errors will tell you the line number of the error, with an 323indication of the next token or token type that was to be examined. 324(In a script passed to Perl via B<-e> switches, each 325B<-e> is counted as one line.) 326 327Setuid scripts have additional constraints that can produce error 328messages such as "Insecure dependency". See L<perlsec>. 329 330Did we mention that you should definitely consider using the B<-w> 331switch? 332 333=head1 BUGS 334 335The B<-w> switch is not mandatory. 336 337Perl is at the mercy of your machine's definitions of various 338operations such as type casting, atof(), and floating-point 339output with sprintf(). 340 341If your stdio requires a seek or eof between reads and writes on a 342particular stream, so does Perl. (This doesn't apply to sysread() 343and syswrite().) 344 345While none of the built-in data types have any arbitrary size limits 346(apart from memory size), there are still a few arbitrary limits: a 347given variable name may not be longer than 251 characters. Line numbers 348displayed by diagnostics are internally stored as short integers, 349so they are limited to a maximum of 65535 (higher numbers usually being 350affected by wraparound). 351 352You may mail your bug reports (be sure to include full configuration 353information as output by the myconfig program in the perl source 354tree, or by C<perl -V>) to perlbug@perl.org . If you've succeeded 355in compiling perl, the B<perlbug> script in the F<utils/> subdirectory 356can be used to help mail in a bug report. 357 358Perl actually stands for Pathologically Eclectic Rubbish Lister, but 359don't tell anyone I said that. 360 361=head1 NOTES 362 363The Perl motto is "There's more than one way to do it." Divining 364how many more is left as an exercise to the reader. 365 366The three principal virtues of a programmer are Laziness, 367Impatience, and Hubris. See the Camel Book for why. 368 369