3 perlfaq - frequently asked questions about Perl ($Date: 2003/01/26 17:45:46 $)
7 The perlfaq is divided into several documents based on topics. A table
8 of contents is at the end of this document.
10 =head2 Where to get the perlfaq
12 Extracts of the perlfaq are posted regularly to
13 comp.lang.perl.misc. It is available on many web sites:
14 http://www.perldoc.com/ and http://faq.perl.org/
16 =head2 How to contribute to the perlfaq
18 You may mail corrections, additions, and suggestions to
19 perlfaq-workers@perl.org . This alias should not be used to
20 I<ask> FAQs. It's for fixing the current FAQ. Send
21 questions to the comp.lang.perl.misc newsgroup. You can
22 view the source tree at http://cvs.perl.org/cvsweb/perlfaq/
23 (which is outside of the main Perl source tree). The CVS
24 repository notes all changes to the FAQ.
26 =head2 What will happen if you mail your Perl programming problems to the authors
28 Your questions will probably go unread, unless they're
29 suggestions of new questions to add to the FAQ, in which
30 case they should have gone to the perlfaq-workers@perl.org
33 You should have read section 2 of this faq. There you would
34 have learned that comp.lang.perl.misc is the appropriate
35 place to go for free advice. If your question is really
36 important and you require a prompt and correct answer, you
37 should hire a consultant.
41 The original perlfaq was written by Tom Christiansen, then expanded
42 by collaboration between Tom and Nathan Torkington. The current
43 document is maintained by the perlfaq-workers (perlfaq-workers@perl.org).
44 Several people have contributed answers, corrections, and comments.
46 =head1 Author and Copyright Information
48 Copyright (c) 1997-2003 Tom Christiansen, Nathan Torkington, and
49 other contributors noted in the answers.
53 =head2 Bundled Distributions
55 This documentation is free; you can redistribute it and/or modify it
56 under the same terms as Perl itself.
58 Irrespective of its distribution, all code examples in these files
59 are hereby placed into the public domain. You are permitted and
60 encouraged to use this code in your own programs for fun
61 or for profit as you see fit. A simple comment in the code giving
62 credit would be courteous but is not required.
66 This information is offered in good faith and in the hope that it may
67 be of use, but is not guaranteed to be correct, up to date, or suitable
68 for any particular purpose whatsoever. The authors accept no liability
69 in respect of this information or its use.
71 =head1 Table of Contents
73 =head2 perlfaq: Structural overview of the FAQ.
77 =head2 L<perlfaq1>: General Questions About Perl
79 Very general, high-level questions about Perl.
89 Who supports Perl? Who develops it? Why is it free?
93 Which version of Perl should I use?
97 What are perl4 and perl5?
109 Is Perl difficult to learn?
113 How does Perl compare with other languages like Java, Python, REXX, Scheme, or Tcl?
117 Can I do [task] in Perl?
121 When shouldn't I program in Perl?
125 What's the difference between "perl" and "Perl"?
129 Is it a Perl program or a Perl script?
137 Where can I get a list of Larry Wall witticisms?
141 How can I convince my sysadmin/supervisor/employees to use version 5/5.6.1/Perl instead of some other language?
146 =head2 L<perlfaq2>: Obtaining and Learning about Perl
148 Where to find source and documentation for Perl, support,
155 What machines support Perl? Where do I get it?
159 How can I get a binary version of Perl?
163 I don't have a C compiler on my system. How can I compile perl?
167 I copied the Perl binary from one machine to another, but scripts don't work.
171 I grabbed the sources and tried to compile but gdbm/dynamic loading/malloc/linking/... failed. How do I make it work?
175 What modules and extensions are available for Perl? What is CPAN? What does CPAN/src/... mean?
179 Is there an ISO or ANSI certified version of Perl?
183 Where can I get information on Perl?
187 What are the Perl newsgroups on Usenet? Where do I post questions?
191 Where should I post source code?
203 Perl on the Net: FTP and WWW Access
207 What mailing lists are there for Perl?
211 Archives of comp.lang.perl.misc
215 Where can I buy a commercial version of Perl?
219 Where do I send bug reports?
223 What is perl.com? Perl Mongers? pm.org? perl.org? cpan.org?
228 =head2 L<perlfaq3>: Programming Tools
230 Programmer tools and programming support.
236 How do I do (anything)?
240 How can I use Perl interactively?
244 Is there a Perl shell?
248 How do I find which modules are installed on my system?
252 How do I debug my Perl programs?
256 How do I profile my Perl programs?
260 How do I cross-reference my Perl programs?
264 Is there a pretty-printer (formatter) for Perl?
268 Is there a ctags for Perl?
272 Is there an IDE or Windows Perl Editor?
276 Where can I get Perl macros for vi?
280 Where can I get perl-mode for emacs?
284 How can I use curses with Perl?
288 How can I use X or Tk with Perl?
292 How can I generate simple menus without using CGI or Tk?
296 How can I make my Perl program run faster?
300 How can I make my Perl program take less memory?
304 Is it safe to return a reference to local or lexical data?
308 How can I free an array or hash so my program shrinks?
312 How can I make my CGI script more efficient?
316 How can I hide the source for my Perl program?
320 How can I compile my Perl program into byte code or C?
324 How can I compile Perl into Java?
328 How can I get C<#!perl> to work on [MS-DOS,NT,...]?
332 Can I write useful Perl programs on the command line?
336 Why don't Perl one-liners work on my DOS/Mac/VMS system?
340 Where can I learn about CGI or Web programming in Perl?
344 Where can I learn about object-oriented Perl programming?
348 Where can I learn about linking C with Perl? [h2xs, xsubpp]
352 I've read perlembed, perlguts, etc., but I can't embed perl in
353 my C program; what am I doing wrong?
357 When I tried to run my script, I got this message. What does it mean?
366 =head2 L<perlfaq4>: Data Manipulation
368 Manipulating numbers, dates, strings, arrays, hashes, and
369 miscellaneous data issues.
375 Why am I getting long decimals (eg, 19.9499999999999) instead of the numbers I should be getting (eg, 19.95)?
379 Why isn't my octal data interpreted correctly?
383 Does Perl have a round() function? What about ceil() and floor()? Trig functions?
387 How do I convert between numeric representations?
391 Why doesn't & work the way I want it to?
395 How do I multiply matrices?
399 How do I perform an operation on a series of integers?
403 How can I output Roman numerals?
407 Why aren't my random numbers random?
411 How do I get a random number between X and Y?
415 How do I find the week-of-the-year/day-of-the-year?
419 How do I find the current century or millennium?
423 How can I compare two dates and find the difference?
427 How can I take a string and turn it into epoch seconds?
431 How can I find the Julian Day?
435 How do I find yesterday's date?
439 Does Perl have a Year 2000 problem? Is Perl Y2K compliant?
443 How do I validate input?
447 How do I unescape a string?
451 How do I remove consecutive pairs of characters?
455 How do I expand function calls in a string?
459 How do I find matching/nesting anything?
463 How do I reverse a string?
467 How do I expand tabs in a string?
471 How do I reformat a paragraph?
475 How can I access or change N characters of a string?
479 How do I change the Nth occurrence of something?
483 How can I count the number of occurrences of a substring within a string?
487 How do I capitalize all the words on one line?
491 How can I split a [character] delimited string except when inside [character]?
495 How do I strip blank space from the beginning/end of a string?
499 How do I pad a string with blanks or pad a number with zeroes?
503 How do I extract selected columns from a string?
507 How do I find the soundex value of a string?
511 How can I expand variables in text strings?
515 What's wrong with always quoting "$vars"?
519 Why don't my E<lt>E<lt>HERE documents work?
523 What is the difference between a list and an array?
527 What is the difference between $array[1] and @array[1]?
531 How can I remove duplicate elements from a list or array?
535 How can I tell whether a certain element is contained in a list or array?
539 How do I compute the difference of two arrays? How do I compute the intersection of two arrays?
543 How do I test whether two arrays or hashes are equal?
547 How do I find the first array element for which a condition is true?
551 How do I handle linked lists?
555 How do I handle circular lists?
559 How do I shuffle an array randomly?
563 How do I process/modify each element of an array?
567 How do I select a random element from an array?
571 How do I permute N elements of a list?
575 How do I sort an array by (anything)?
579 How do I manipulate arrays of bits?
583 Why does defined() return true on empty arrays and hashes?
587 How do I process an entire hash?
591 What happens if I add or remove keys from a hash while iterating over it?
595 How do I look up a hash element by value?
599 How can I know how many entries are in a hash?
603 How do I sort a hash (optionally by value instead of key)?
607 How can I always keep my hash sorted?
611 What's the difference between "delete" and "undef" with hashes?
615 Why don't my tied hashes make the defined/exists distinction?
619 How do I reset an each() operation part-way through?
623 How can I get the unique keys from two hashes?
627 How can I store a multidimensional array in a DBM file?
631 How can I make my hash remember the order I put elements into it?
635 Why does passing a subroutine an undefined element in a hash create it?
639 How can I make the Perl equivalent of a C structure/C++ class/hash or array of hashes or arrays?
643 How can I use a reference as a hash key?
647 How do I handle binary data correctly?
651 How do I determine whether a scalar is a number/whole/integer/float?
655 How do I keep persistent data across program calls?
659 How do I print out or copy a recursive data structure?
663 How do I define methods for every class/object?
667 How do I verify a credit card checksum?
671 How do I pack arrays of doubles or floats for XS code?
676 =head2 L<perlfaq5>: Files and Formats
678 I/O and the "f" issues: filehandles, flushing, formats, and footers.
684 How do I flush/unbuffer an output filehandle? Why must I do this?
688 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?
692 How do I count the number of lines in a file?
696 How can I use Perl's C<-i> option from within a program?
700 How do I make a temporary file name?
704 How can I manipulate fixed-record-length files?
708 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?
712 How can I use a filehandle indirectly?
716 How can I set up a footer format to be used with write()?
720 How can I write() into a string?
724 How can I output my numbers with commas added?
728 How can I translate tildes (~) in a filename?
732 How come when I open a file read-write it wipes it out?
736 Why do I sometimes get an "Argument list too long" when I use E<lt>*E<gt>?
740 Is there a leak/bug in glob()?
744 How can I open a file with a leading ">" or trailing blanks?
748 How can I reliably rename a file?
752 How can I lock a file?
756 Why can't I just open(FH, "E<gt>file.lock")?
760 I still don't get locking. I just want to increment the number in the file. How can I do this?
764 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?
768 How do I randomly update a binary file?
772 How do I get a file's timestamp in perl?
776 How do I set a file's timestamp in perl?
780 How do I print to more than one file at once?
784 How can I read in an entire file all at once?
788 How can I read in a file by paragraphs?
792 How can I read a single character from a file? From the keyboard?
796 How can I tell whether there's a character waiting on a filehandle?
800 How do I do a C<tail -f> in perl?
804 How do I dup() a filehandle in Perl?
808 How do I close a file descriptor by number?
812 Why can't I use "C:\temp\foo" in DOS paths? What doesn't `C:\temp\foo.exe` work?
816 Why doesn't glob("*.*") get all the files?
820 Why does Perl let me delete read-only files? Why does C<-i> clobber protected files? Isn't this a bug in Perl?
824 How do I select a random line from a file?
828 Why do I get weird spaces when I print an array of lines?
833 =head2 L<perlfaq6>: Regular Expressions
835 Pattern matching and regular expressions.
841 How can I hope to use regular expressions without creating illegible and unmaintainable code?
845 I'm having trouble matching over more than one line. What's wrong?
849 How can I pull out lines between two patterns that are themselves on different lines?
853 I put a regular expression into $/ but it didn't work. What's wrong?
857 How do I substitute case insensitively on the LHS while preserving case on the RHS?
861 How can I make C<\w> match national character sets?
865 How can I match a locale-smart version of C</[a-zA-Z]/>?
869 How can I quote a variable to use in a regex?
873 What is C</o> really for?
877 How do I use a regular expression to strip C style comments from a file?
881 Can I use Perl regular expressions to match balanced text?
885 What does it mean that regexes are greedy? How can I get around it?
889 How do I process each word on each line?
893 How can I print out a word-frequency or line-frequency summary?
897 How can I do approximate matching?
901 How do I efficiently match many regular expressions at once?
905 Why don't word-boundary searches with C<\b> work for me?
909 Why does using $&, $`, or $' slow my program down?
913 What good is C<\G> in a regular expression?
917 Are Perl regexes DFAs or NFAs? Are they POSIX compliant?
921 What's wrong with using grep or map in a void context?
925 How can I match strings with multibyte characters?
929 How do I match a pattern that is supplied by the user?
934 =head2 L<perlfaq7>: General Perl Language Issues
936 General Perl language issues that don't clearly fit into any of the
943 Can I get a BNF/yacc/RE for the Perl language?
947 What are all these $@%&* punctuation signs, and how do I know when to use them?
951 Do I always/never have to quote my strings or use semicolons and commas?
955 How do I skip some return values?
959 How do I temporarily block warnings?
967 Why do Perl operators have different precedence than C operators?
971 How do I declare/create a structure?
975 How do I create a module?
979 How do I create a class?
983 How can I tell if a variable is tainted?
991 What is variable suicide and how can I prevent it?
995 How can I pass/return a {Function, FileHandle, Array, Hash, Method, Regex}?
999 How do I create a static variable?
1003 What's the difference between dynamic and lexical (static) scoping? Between local() and my()?
1007 How can I access a dynamic variable while a similarly named lexical is in scope?
1011 What's the difference between deep and shallow binding?
1015 Why doesn't "my($foo) = E<lt>FILEE<gt>;" work right?
1019 How do I redefine a builtin function, operator, or method?
1023 What's the difference between calling a function as &foo and foo()?
1027 How do I create a switch or case statement?
1031 How can I catch accesses to undefined variables, functions, or methods?
1035 Why can't a method included in this same file be found?
1039 How can I find out my current package?
1043 How can I comment out a large block of perl code?
1047 How do I clear a package?
1051 How can I use a variable as a variable name?
1056 =head2 L<perlfaq8>: System Interaction
1058 Interprocess communication (IPC), control over the user-interface
1059 (keyboard, screen and pointing devices).
1065 How do I find out which operating system I'm running under?
1069 How come exec() doesn't return?
1073 How do I do fancy stuff with the keyboard/screen/mouse?
1077 How do I print something out in color?
1081 How do I read just one key without waiting for a return key?
1085 How do I check whether input is ready on the keyboard?
1089 How do I clear the screen?
1093 How do I get the screen size?
1097 How do I ask the user for a password?
1101 How do I read and write the serial port?
1105 How do I decode encrypted password files?
1109 How do I start a process in the background?
1113 How do I trap control characters/signals?
1117 How do I modify the shadow password file on a Unix system?
1121 How do I set the time and date?
1125 How can I sleep() or alarm() for under a second?
1129 How can I measure time under a second?
1133 How can I do an atexit() or setjmp()/longjmp()? (Exception handling)
1137 Why doesn't my sockets program work under System V (Solaris)? What does the error message "Protocol not supported" mean?
1141 How can I call my system's unique C functions from Perl?
1145 Where do I get the include files to do ioctl() or syscall()?
1149 Why do setuid perl scripts complain about kernel problems?
1153 How can I open a pipe both to and from a command?
1157 Why can't I get the output of a command with system()?
1161 How can I capture STDERR from an external command?
1165 Why doesn't open() return an error when a pipe open fails?
1169 What's wrong with using backticks in a void context?
1173 How can I call backticks without shell processing?
1177 Why can't my script read from STDIN after I gave it EOF (^D on Unix, ^Z on MS-DOS)?
1181 How can I convert my shell script to perl?
1185 Can I use perl to run a telnet or ftp session?
1189 How can I write expect in Perl?
1193 Is there a way to hide perl's command line from programs such as "ps"?
1197 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?
1201 How do I close a process's filehandle without waiting for it to complete?
1205 How do I fork a daemon process?
1209 How do I find out if I'm running interactively or not?
1213 How do I timeout a slow event?
1217 How do I set CPU limits?
1221 How do I avoid zombies on a Unix system?
1225 How do I use an SQL database?
1229 How do I make a system() exit on control-C?
1233 How do I open a file without blocking?
1237 How do I install a module from CPAN?
1241 What's the difference between require and use?
1245 How do I keep my own module/library directory?
1249 How do I add the directory my program lives in to the module/library search path?
1253 How do I add a directory to my include path at runtime?
1257 What is socket.ph and where do I get it?
1262 =head2 L<perlfaq9>: Networking
1264 Networking, the internet, and a few on the web.
1270 What is the correct form of response from a CGI script?
1274 My CGI script runs from the command line but not the browser. (500 Server Error)
1278 How can I get better error messages from a CGI program?
1282 How do I remove HTML from a string?
1286 How do I extract URLs?
1290 How do I download a file from the user's machine? How do I open a file on another machine?
1294 How do I make a pop-up menu in HTML?
1298 How do I fetch an HTML file?
1302 How do I automate an HTML form submission?
1306 How do I decode or create those %-encodings on the web?
1310 How do I redirect to another page?
1314 How do I put a password on my web pages?
1318 How do I edit my .htpasswd and .htgroup files with Perl?
1322 How do I make sure users can't enter values into a form that cause my CGI script to do bad things?
1326 How do I parse a mail header?
1330 How do I decode a CGI form?
1334 How do I check a valid mail address?
1338 How do I decode a MIME/BASE64 string?
1342 How do I return the user's mail address?
1350 How do I use MIME to make an attachment to a mail message?
1358 How do I find out my hostname/domainname/IP address?
1362 How do I fetch a news article or the active newsgroups?
1366 How do I fetch/put an FTP file?
1370 How can I do RPC in Perl?