3 perlfaq - frequently asked questions about Perl ($Date: 2002/01/31 04:27:54 $)
7 The perlfaq is structured into the following documents:
10 =head2 perlfaq: Structural overview of the FAQ.
14 =head2 L<perlfaq1>: General Questions About Perl
16 Very general, high-level questions about Perl.
26 Who supports Perl? Who develops it? Why is it free?
30 Which version of Perl should I use?
34 What are perl4 and perl5?
46 Is Perl difficult to learn?
50 How does Perl compare with other languages like Java, Python, REXX, Scheme, or Tcl?
54 Can I do [task] in Perl?
58 When shouldn't I program in Perl?
62 What's the difference between "perl" and "Perl"?
66 Is it a Perl program or a Perl script?
74 Where can I get a list of Larry Wall witticisms?
78 How can I convince my sysadmin/supervisor/employees to use version 5/5.6.1/Perl instead of some other language?
83 =head2 L<perlfaq2>: Obtaining and Learning about Perl
85 Where to find source and documentation for Perl, support,
92 What machines support Perl? Where do I get it?
96 How can I get a binary version of Perl?
100 I don't have a C compiler on my system. How can I compile perl?
104 I copied the Perl binary from one machine to another, but scripts don't work.
108 I grabbed the sources and tried to compile but gdbm/dynamic loading/malloc/linking/... failed. How do I make it work?
112 What modules and extensions are available for Perl? What is CPAN? What does CPAN/src/... mean?
116 Is there an ISO or ANSI certified version of Perl?
120 Where can I get information on Perl?
124 What are the Perl newsgroups on Usenet? Where do I post questions?
128 Where should I post source code?
140 Perl on the Net: FTP and WWW Access
144 What mailing lists are there for Perl?
148 Archives of comp.lang.perl.misc
152 Where can I buy a commercial version of Perl?
156 Where do I send bug reports?
160 What is perl.com? Perl Mongers? pm.org? perl.org? cpan.org?
165 =head2 L<perlfaq3>: Programming Tools
167 Programmer tools and programming support.
173 How do I do (anything)?
177 How can I use Perl interactively?
181 Is there a Perl shell?
185 How do I debug my Perl programs?
189 How do I profile my Perl programs?
193 How do I cross-reference my Perl programs?
197 Is there a pretty-printer (formatter) for Perl?
201 Is there a ctags for Perl?
205 Is there an IDE or Windows Perl Editor?
209 Where can I get Perl macros for vi?
213 Where can I get perl-mode for emacs?
217 How can I use curses with Perl?
221 How can I use X or Tk with Perl?
225 How can I generate simple menus without using CGI or Tk?
229 How can I make my Perl program run faster?
233 How can I make my Perl program take less memory?
237 Is it unsafe to return a pointer to local data?
241 How can I free an array or hash so my program shrinks?
245 How can I make my CGI script more efficient?
249 How can I hide the source for my Perl program?
253 How can I compile my Perl program into byte code or C?
257 How can I compile Perl into Java?
261 How can I get C<#!perl> to work on [MS-DOS,NT,...]?
265 Can I write useful Perl programs on the command line?
269 Why don't Perl one-liners work on my DOS/Mac/VMS system?
273 Where can I learn about CGI or Web programming in Perl?
277 Where can I learn about object-oriented Perl programming?
281 Where can I learn about linking C with Perl? [h2xs, xsubpp]
285 I've read perlembed, perlguts, etc., but I can't embed perl in
286 my C program; what am I doing wrong?
290 When I tried to run my script, I got this message. What does it mean?
299 =head2 L<perlfaq4>: Data Manipulation
301 Manipulating numbers, dates, strings, arrays, hashes, and
302 miscellaneous data issues.
308 Why am I getting long decimals (eg, 19.9499999999999) instead of the numbers I should be getting (eg, 19.95)?
312 Why isn't my octal data interpreted correctly?
316 Does Perl have a round() function? What about ceil() and floor()? Trig functions?
320 How do I convert between numeric representations?
324 Why doesn't & work the way I want it to?
328 How do I multiply matrices?
332 How do I perform an operation on a series of integers?
336 How can I output Roman numerals?
340 Why aren't my random numbers random?
344 How do I find the week-of-the-year/day-of-the-year?
348 How do I find the current century or millennium?
352 How can I compare two dates and find the difference?
356 How can I take a string and turn it into epoch seconds?
360 How can I find the Julian Day?
364 How do I find yesterday's date?
368 Does Perl have a Year 2000 problem? Is Perl Y2K compliant?
372 How do I validate input?
376 How do I unescape a string?
380 How do I remove consecutive pairs of characters?
384 How do I expand function calls in a string?
388 How do I find matching/nesting anything?
392 How do I reverse a string?
396 How do I expand tabs in a string?
400 How do I reformat a paragraph?
404 How can I access/change the first N letters of a string?
408 How do I change the Nth occurrence of something?
412 How can I count the number of occurrences of a substring within a string?
416 How do I capitalize all the words on one line?
420 How can I split a [character] delimited string except when inside
421 [character]? (Comma-separated files)
425 How do I strip blank space from the beginning/end of a string?
429 How do I pad a string with blanks or pad a number with zeroes?
433 How do I extract selected columns from a string?
437 How do I find the soundex value of a string?
441 How can I expand variables in text strings?
445 What's wrong with always quoting "$vars"?
449 Why don't my <<HERE documents work?
453 What is the difference between a list and an array?
457 What is the difference between $array[1] and @array[1]?
461 How can I remove duplicate elements from a list or array?
465 How can I tell whether a certain element is contained in a list or array?
469 How do I compute the difference of two arrays? How do I compute the intersection of two arrays?
473 How do I test whether two arrays or hashes are equal?
477 How do I find the first array element for which a condition is true?
481 How do I handle linked lists?
485 How do I handle circular lists?
489 How do I shuffle an array randomly?
493 How do I process/modify each element of an array?
497 How do I select a random element from an array?
501 How do I permute N elements of a list?
505 How do I sort an array by (anything)?
509 How do I manipulate arrays of bits?
513 Why does defined() return true on empty arrays and hashes?
517 How do I process an entire hash?
521 What happens if I add or remove keys from a hash while iterating over it?
525 How do I look up a hash element by value?
529 How can I know how many entries are in a hash?
533 How do I sort a hash (optionally by value instead of key)?
537 How can I always keep my hash sorted?
541 What's the difference between "delete" and "undef" with hashes?
545 Why don't my tied hashes make the defined/exists distinction?
549 How do I reset an each() operation part-way through?
553 How can I get the unique keys from two hashes?
557 How can I store a multidimensional array in a DBM file?
561 How can I make my hash remember the order I put elements into it?
565 Why does passing a subroutine an undefined element in a hash create it?
569 How can I make the Perl equivalent of a C structure/C++ class/hash or array of hashes or arrays?
573 How can I use a reference as a hash key?
577 How do I handle binary data correctly?
581 How do I determine whether a scalar is a number/whole/integer/float?
585 How do I keep persistent data across program calls?
589 How do I print out or copy a recursive data structure?
593 How do I define methods for every class/object?
597 How do I verify a credit card checksum?
601 How do I pack arrays of doubles or floats for XS code?
606 =head2 L<perlfaq5>: Files and Formats
608 I/O and the "f" issues: filehandles, flushing, formats, and footers.
614 How do I flush/unbuffer an output filehandle? Why must I do this?
618 How do I change one line in a file/delete a line in a file/insert a line in the middle of a file/append to the beginning of a file?
622 How do I count the number of lines in a file?
626 How do I make a temporary file name?
630 How can I manipulate fixed-record-length files?
634 How can I make a filehandle local to a subroutine? How do I pass filehandles between subroutines? How do I make an array of filehandles?
638 How can I use a filehandle indirectly?
642 How can I set up a footer format to be used with write()?
646 How can I write() into a string?
650 How can I output my numbers with commas added?
654 How can I translate tildes (~) in a filename?
658 How come when I open a file read-write it wipes it out?
662 Why do I sometimes get an "Argument list too long" when I use <*>?
666 Is there a leak/bug in glob()?
670 How can I open a file with a leading ">" or trailing blanks?
674 How can I reliably rename a file?
678 How can I lock a file?
682 Why can't I just open(FH, ">file.lock")?
686 I still don't get locking. I just want to increment the number in the file. How can I do this?
690 All I want to do is append a small amount of text to the end of a file. Do I still have to use locking?
694 How do I randomly update a binary file?
698 How do I get a file's timestamp in perl?
702 How do I set a file's timestamp in perl?
706 How do I print to more than one file at once?
710 How can I read in an entire file all at once?
714 How can I read in a file by paragraphs?
718 How can I read a single character from a file? From the keyboard?
722 How can I tell whether there's a character waiting on a filehandle?
726 How do I do a C<tail -f> in perl?
730 How do I dup() a filehandle in Perl?
734 How do I close a file descriptor by number?
738 Why can't I use "C:\temp\foo" in DOS paths? What doesn't `C:\temp\foo.exe` work?
742 Why doesn't glob("*.*") get all the files?
746 Why does Perl let me delete read-only files? Why does C<-i> clobber protected files? Isn't this a bug in Perl?
750 How do I select a random line from a file?
754 Why do I get weird spaces when I print an array of lines?
759 =head2 L<perlfaq6>: Regular Expressions
761 Pattern matching and regular expressions.
767 How can I hope to use regular expressions without creating illegible and unmaintainable code?
771 I'm having trouble matching over more than one line. What's wrong?
775 How can I pull out lines between two patterns that are themselves on different lines?
779 I put a regular expression into $/ but it didn't work. What's wrong?
783 How do I substitute case insensitively on the LHS while preserving case on the RHS?
787 How can I make C<\w> match national character sets?
791 How can I match a locale-smart version of C</[a-zA-Z]/>?
795 How can I quote a variable to use in a regex?
799 What is C</o> really for?
803 How do I use a regular expression to strip C style comments from a file?
807 Can I use Perl regular expressions to match balanced text?
811 What does it mean that regexes are greedy? How can I get around it?
815 How do I process each word on each line?
819 How can I print out a word-frequency or line-frequency summary?
823 How can I do approximate matching?
827 How do I efficiently match many regular expressions at once?
831 Why don't word-boundary searches with C<\b> work for me?
835 Why does using $&, $`, or $' slow my program down?
839 What good is C<\G> in a regular expression?
843 Are Perl regexes DFAs or NFAs? Are they POSIX compliant?
847 What's wrong with using grep or map in a void context?
851 How can I match strings with multibyte characters?
855 How do I match a pattern that is supplied by the user?
860 =head2 L<perlfaq7>: General Perl Language Issues
862 General Perl language issues that don't clearly fit into any of the
869 Can I get a BNF/yacc/RE for the Perl language?
873 What are all these $@%&* punctuation signs, and how do I know when to use them?
877 Do I always/never have to quote my strings or use semicolons and commas?
881 How do I skip some return values?
885 How do I temporarily block warnings?
893 Why do Perl operators have different precedence than C operators?
897 How do I declare/create a structure?
901 How do I create a module?
905 How do I create a class?
909 How can I tell if a variable is tainted?
917 What is variable suicide and how can I prevent it?
921 How can I pass/return a {Function, FileHandle, Array, Hash, Method, Regex}?
925 How do I create a static variable?
929 What's the difference between dynamic and lexical (static) scoping? Between local() and my()?
933 How can I access a dynamic variable while a similarly named lexical is in scope?
937 What's the difference between deep and shallow binding?
941 Why doesn't "my($foo) = <FILE>;" work right?
945 How do I redefine a builtin function, operator, or method?
949 What's the difference between calling a function as &foo and foo()?
953 How do I create a switch or case statement?
957 How can I catch accesses to undefined variables/functions/methods?
961 Why can't a method included in this same file be found?
965 How can I find out my current package?
969 How can I comment out a large block of perl code?
973 How do I clear a package?
977 How can I use a variable as a variable name?
982 =head2 L<perlfaq8>: System Interaction
984 Interprocess communication (IPC), control over the user-interface
985 (keyboard, screen and pointing devices).
991 How do I find out which operating system I'm running under?
995 How come exec() doesn't return?
999 How do I do fancy stuff with the keyboard/screen/mouse?
1003 How do I print something out in color?
1007 How do I read just one key without waiting for a return key?
1011 How do I check whether input is ready on the keyboard?
1015 How do I clear the screen?
1019 How do I get the screen size?
1023 How do I ask the user for a password?
1027 How do I read and write the serial port?
1031 How do I decode encrypted password files?
1035 How do I start a process in the background?
1039 How do I trap control characters/signals?
1043 How do I modify the shadow password file on a Unix system?
1047 How do I set the time and date?
1051 How can I sleep() or alarm() for under a second?
1055 How can I measure time under a second?
1059 How can I do an atexit() or setjmp()/longjmp()? (Exception handling)
1063 Why doesn't my sockets program work under System V (Solaris)? What does the error message "Protocol not supported" mean?
1067 How can I call my system's unique C functions from Perl?
1071 Where do I get the include files to do ioctl() or syscall()?
1075 Why do setuid perl scripts complain about kernel problems?
1079 How can I open a pipe both to and from a command?
1083 Why can't I get the output of a command with system()?
1087 How can I capture STDERR from an external command?
1091 Why doesn't open() return an error when a pipe open fails?
1095 What's wrong with using backticks in a void context?
1099 How can I call backticks without shell processing?
1103 Why can't my script read from STDIN after I gave it EOF (^D on Unix, ^Z on MS-DOS)?
1107 How can I convert my shell script to perl?
1111 Can I use perl to run a telnet or ftp session?
1115 How can I write expect in Perl?
1119 Is there a way to hide perl's command line from programs such as "ps"?
1123 I {changed directory, modified my environment} in a perl script. How come the change disappeared when I exited the script? How do I get my changes to be visible?
1127 How do I close a process's filehandle without waiting for it to complete?
1131 How do I fork a daemon process?
1135 How do I find out if I'm running interactively or not?
1139 How do I timeout a slow event?
1143 How do I set CPU limits?
1147 How do I avoid zombies on a Unix system?
1151 How do I use an SQL database?
1155 How do I make a system() exit on control-C?
1159 How do I open a file without blocking?
1163 How do I install a module from CPAN?
1167 What's the difference between require and use?
1171 How do I keep my own module/library directory?
1175 How do I add the directory my program lives in to the module/library search path?
1179 How do I add a directory to my include path at runtime?
1183 What is socket.ph and where do I get it?
1188 =head2 L<perlfaq9>: Networking
1190 Networking, the internet, and a few on the web.
1196 What is the correct form of response from a CGI script?
1200 My CGI script runs from the command line but not the browser. (500 Server Error)
1204 How can I get better error messages from a CGI program?
1208 How do I remove HTML from a string?
1212 How do I extract URLs?
1216 How do I download a file from the user's machine? How do I open a file on another machine?
1220 How do I make a pop-up menu in HTML?
1224 How do I fetch an HTML file?
1228 How do I automate an HTML form submission?
1232 How do I decode or create those %-encodings on the web?
1236 How do I redirect to another page?
1240 How do I put a password on my web pages?
1244 How do I edit my .htpasswd and .htgroup files with Perl?
1248 How do I make sure users can't enter values into a form that cause my CGI script to do bad things?
1252 How do I parse a mail header?
1256 How do I decode a CGI form?
1260 How do I check a valid mail address?
1264 How do I decode a MIME/BASE64 string?
1268 How do I return the user's mail address?
1276 How do I use MIME to make an attachment to a mail message?
1284 How do I find out my hostname/domainname/IP address?
1288 How do I fetch a news article or the active newsgroups?
1292 How do I fetch/put an FTP file?
1296 How can I do RPC in Perl?
1301 =head1 About the perlfaq documents
1303 =head2 Where to get the perlfaq
1305 This document is posted regularly to comp.lang.perl.announce and
1306 several other related newsgroups. It is available on many
1307 web sites: http://www.perldoc.com/ and http://perlfaq.cpan.org/ .
1309 =head2 How to contribute to the perlfaq
1311 You may mail corrections, additions, and suggestions to
1312 perlfaq-workers@perl.org . This alias should not be
1313 used to I<ask> FAQs. It's for fixing the current FAQ.
1314 Send questions to the comp.lang.perl.misc newsgroup.
1316 =head2 What will happen if you mail your Perl programming problems to the authors
1318 Your questions will probably go unread, unless they're suggestions of
1319 new questions to add to the FAQ, in which case they should have gone
1320 to the perlfaq-workers@perl.org instead.
1322 You should have read section 2 of this faq. There you would have
1323 learned that comp.lang.perl.misc is the appropriate place to go for
1324 free advice. If your question is really important and you require a
1325 prompt and correct answer, you should hire a consultant.
1329 When I first began the Perl FAQ in the late 80s, I never realized it
1330 would have grown to over a hundred pages, nor that Perl would ever become
1331 so popular and widespread. This document could not have been written
1332 without the tremendous help provided by Larry Wall and the rest of the
1335 =head1 Author and Copyright Information
1337 Copyright (c) 1997-2002 Tom Christiansen and Nathan Torkington.
1338 All rights reserved.
1340 =head2 Bundled Distributions
1342 This documentation is free; you can redistribute it and/or modify it
1343 under the same terms as Perl itself.
1345 Irrespective of its distribution, all code examples in these files
1346 are hereby placed into the public domain. You are permitted and
1347 encouraged to use this code in your own programs for fun
1348 or for profit as you see fit. A simple comment in the code giving
1349 credit would be courteous but is not required.
1353 This information is offered in good faith and in the hope that it may
1354 be of use, but is not guaranteed to be correct, up to date, or suitable
1355 for any particular purpose whatsoever. The authors accept no liability
1356 in respect of this information or its use.
1362 =item 1/November/2000
1364 A few grammatical fixes and updates implemented by John Borwick.
1368 Extensive updates from the net in preparation for 5.6 release.
1372 More minor touch-ups. Added new question at the end
1373 of perlfaq7 on variable names within variables.
1377 Small touch ups here and there. Added all questions in this
1378 document as a sort of table of contents.
1382 Significant changes throughout in preparation for the 5.005
1387 Style and whitespace changes from Chip, new question on reading one
1388 character at a time from a terminal using POSIX from Tom.
1392 Added http://www.oasis.leo.org/perl/ to L<perlfaq2>. Style fix to
1393 L<perlfaq3>. Added floating point precision, fixed complex number
1394 arithmetic, cross-references, caveat for Text::Wrap, alternative
1395 answer for initial capitalizing, fixed incorrect regexp, added example
1396 of Tie::IxHash to L<perlfaq4>. Added example of passing and storing
1397 filehandles, added commify to L<perlfaq5>. Restored variable suicide,
1398 and added mass commenting to L<perlfaq7>. Added Net::Telnet, fixed
1399 backticks, added reader/writer pair to telnet question, added FindBin,
1400 grouped module questions together in L<perlfaq8>. Expanded caveats
1401 for the simple URL extractor, gave LWP example, added CGI security
1402 question, expanded on the mail address answer in L<perlfaq9>.
1406 Added more info to the binary distribution section of L<perlfaq2>.
1407 Added Net::Telnet to L<perlfaq6>. Fixed typos in L<perlfaq8>. Added
1408 mail sending example to L<perlfaq9>. Added Merlyn's columns to
1413 Added the DATE to the NAME section, indicating which sections have
1416 Mentioned SIGPIPE and L<perlipc> in the forking open answer in
1419 Fixed description of a regular expression in L<perlfaq4>.
1421 =item 17/March/97 Version
1423 Various typos fixed throughout.
1425 Added new question on Perl BNF on L<perlfaq7>.
1427 =item Initial Release: 11/March/97
1429 This is the initial release of version 3 of the FAQ; consequently there
1430 have been no changes since its initial release.