3 perlfaq - frequently asked questions about Perl ($Date: 2002/03/11 21:32:23 $)
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 get a random number between X and Y?
348 How do I find the week-of-the-year/day-of-the-year?
352 How do I find the current century or millennium?
356 How can I compare two dates and find the difference?
360 How can I take a string and turn it into epoch seconds?
364 How can I find the Julian Day?
368 How do I find yesterday's date?
372 Does Perl have a Year 2000 problem? Is Perl Y2K compliant?
376 How do I validate input?
380 How do I unescape a string?
384 How do I remove consecutive pairs of characters?
388 How do I expand function calls in a string?
392 How do I find matching/nesting anything?
396 How do I reverse a string?
400 How do I expand tabs in a string?
404 How do I reformat a paragraph?
408 How can I access/change the first N letters of a string?
412 How do I change the Nth occurrence of something?
416 How can I count the number of occurrences of a substring within a string?
420 How do I capitalize all the words on one line?
424 How can I split a [character] delimited string except when inside
425 [character]? (Comma-separated files)
429 How do I strip blank space from the beginning/end of a string?
433 How do I pad a string with blanks or pad a number with zeroes?
437 How do I extract selected columns from a string?
441 How do I find the soundex value of a string?
445 How can I expand variables in text strings?
449 What's wrong with always quoting "$vars"?
453 Why don't my <<HERE documents work?
457 What is the difference between a list and an array?
461 What is the difference between $array[1] and @array[1]?
465 How can I remove duplicate elements from a list or array?
469 How can I tell whether a certain element is contained in a list or array?
473 How do I compute the difference of two arrays? How do I compute the intersection of two arrays?
477 How do I test whether two arrays or hashes are equal?
481 How do I find the first array element for which a condition is true?
485 How do I handle linked lists?
489 How do I handle circular lists?
493 How do I shuffle an array randomly?
497 How do I process/modify each element of an array?
501 How do I select a random element from an array?
505 How do I permute N elements of a list?
509 How do I sort an array by (anything)?
513 How do I manipulate arrays of bits?
517 Why does defined() return true on empty arrays and hashes?
521 How do I process an entire hash?
525 What happens if I add or remove keys from a hash while iterating over it?
529 How do I look up a hash element by value?
533 How can I know how many entries are in a hash?
537 How do I sort a hash (optionally by value instead of key)?
541 How can I always keep my hash sorted?
545 What's the difference between "delete" and "undef" with hashes?
549 Why don't my tied hashes make the defined/exists distinction?
553 How do I reset an each() operation part-way through?
557 How can I get the unique keys from two hashes?
561 How can I store a multidimensional array in a DBM file?
565 How can I make my hash remember the order I put elements into it?
569 Why does passing a subroutine an undefined element in a hash create it?
573 How can I make the Perl equivalent of a C structure/C++ class/hash or array of hashes or arrays?
577 How can I use a reference as a hash key?
581 How do I handle binary data correctly?
585 How do I determine whether a scalar is a number/whole/integer/float?
589 How do I keep persistent data across program calls?
593 How do I print out or copy a recursive data structure?
597 How do I define methods for every class/object?
601 How do I verify a credit card checksum?
605 How do I pack arrays of doubles or floats for XS code?
610 =head2 L<perlfaq5>: Files and Formats
612 I/O and the "f" issues: filehandles, flushing, formats, and footers.
618 How do I flush/unbuffer an output filehandle? Why must I do this?
622 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?
626 How do I count the number of lines in a file?
630 How do I make a temporary file name?
634 How can I manipulate fixed-record-length files?
638 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?
642 How can I use a filehandle indirectly?
646 How can I set up a footer format to be used with write()?
650 How can I write() into a string?
654 How can I output my numbers with commas added?
658 How can I translate tildes (~) in a filename?
662 How come when I open a file read-write it wipes it out?
666 Why do I sometimes get an "Argument list too long" when I use <*>?
670 Is there a leak/bug in glob()?
674 How can I open a file with a leading ">" or trailing blanks?
678 How can I reliably rename a file?
682 How can I lock a file?
686 Why can't I just open(FH, ">file.lock")?
690 I still don't get locking. I just want to increment the number in the file. How can I do this?
694 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?
698 How do I randomly update a binary file?
702 How do I get a file's timestamp in perl?
706 How do I set a file's timestamp in perl?
710 How do I print to more than one file at once?
714 How can I read in an entire file all at once?
718 How can I read in a file by paragraphs?
722 How can I read a single character from a file? From the keyboard?
726 How can I tell whether there's a character waiting on a filehandle?
730 How do I do a C<tail -f> in perl?
734 How do I dup() a filehandle in Perl?
738 How do I close a file descriptor by number?
742 Why can't I use "C:\temp\foo" in DOS paths? What doesn't `C:\temp\foo.exe` work?
746 Why doesn't glob("*.*") get all the files?
750 Why does Perl let me delete read-only files? Why does C<-i> clobber protected files? Isn't this a bug in Perl?
754 How do I select a random line from a file?
758 Why do I get weird spaces when I print an array of lines?
763 =head2 L<perlfaq6>: Regular Expressions
765 Pattern matching and regular expressions.
771 How can I hope to use regular expressions without creating illegible and unmaintainable code?
775 I'm having trouble matching over more than one line. What's wrong?
779 How can I pull out lines between two patterns that are themselves on different lines?
783 I put a regular expression into $/ but it didn't work. What's wrong?
787 How do I substitute case insensitively on the LHS while preserving case on the RHS?
791 How can I make C<\w> match national character sets?
795 How can I match a locale-smart version of C</[a-zA-Z]/>?
799 How can I quote a variable to use in a regex?
803 What is C</o> really for?
807 How do I use a regular expression to strip C style comments from a file?
811 Can I use Perl regular expressions to match balanced text?
815 What does it mean that regexes are greedy? How can I get around it?
819 How do I process each word on each line?
823 How can I print out a word-frequency or line-frequency summary?
827 How can I do approximate matching?
831 How do I efficiently match many regular expressions at once?
835 Why don't word-boundary searches with C<\b> work for me?
839 Why does using $&, $`, or $' slow my program down?
843 What good is C<\G> in a regular expression?
847 Are Perl regexes DFAs or NFAs? Are they POSIX compliant?
851 What's wrong with using grep or map in a void context?
855 How can I match strings with multibyte characters?
859 How do I match a pattern that is supplied by the user?
864 =head2 L<perlfaq7>: General Perl Language Issues
866 General Perl language issues that don't clearly fit into any of the
873 Can I get a BNF/yacc/RE for the Perl language?
877 What are all these $@%&* punctuation signs, and how do I know when to use them?
881 Do I always/never have to quote my strings or use semicolons and commas?
885 How do I skip some return values?
889 How do I temporarily block warnings?
897 Why do Perl operators have different precedence than C operators?
901 How do I declare/create a structure?
905 How do I create a module?
909 How do I create a class?
913 How can I tell if a variable is tainted?
921 What is variable suicide and how can I prevent it?
925 How can I pass/return a {Function, FileHandle, Array, Hash, Method, Regex}?
929 How do I create a static variable?
933 What's the difference between dynamic and lexical (static) scoping? Between local() and my()?
937 How can I access a dynamic variable while a similarly named lexical is in scope?
941 What's the difference between deep and shallow binding?
945 Why doesn't "my($foo) = <FILE>;" work right?
949 How do I redefine a builtin function, operator, or method?
953 What's the difference between calling a function as &foo and foo()?
957 How do I create a switch or case statement?
961 How can I catch accesses to undefined variables/functions/methods?
965 Why can't a method included in this same file be found?
969 How can I find out my current package?
973 How can I comment out a large block of perl code?
977 How do I clear a package?
981 How can I use a variable as a variable name?
986 =head2 L<perlfaq8>: System Interaction
988 Interprocess communication (IPC), control over the user-interface
989 (keyboard, screen and pointing devices).
995 How do I find out which operating system I'm running under?
999 How come exec() doesn't return?
1003 How do I do fancy stuff with the keyboard/screen/mouse?
1007 How do I print something out in color?
1011 How do I read just one key without waiting for a return key?
1015 How do I check whether input is ready on the keyboard?
1019 How do I clear the screen?
1023 How do I get the screen size?
1027 How do I ask the user for a password?
1031 How do I read and write the serial port?
1035 How do I decode encrypted password files?
1039 How do I start a process in the background?
1043 How do I trap control characters/signals?
1047 How do I modify the shadow password file on a Unix system?
1051 How do I set the time and date?
1055 How can I sleep() or alarm() for under a second?
1059 How can I measure time under a second?
1063 How can I do an atexit() or setjmp()/longjmp()? (Exception handling)
1067 Why doesn't my sockets program work under System V (Solaris)? What does the error message "Protocol not supported" mean?
1071 How can I call my system's unique C functions from Perl?
1075 Where do I get the include files to do ioctl() or syscall()?
1079 Why do setuid perl scripts complain about kernel problems?
1083 How can I open a pipe both to and from a command?
1087 Why can't I get the output of a command with system()?
1091 How can I capture STDERR from an external command?
1095 Why doesn't open() return an error when a pipe open fails?
1099 What's wrong with using backticks in a void context?
1103 How can I call backticks without shell processing?
1107 Why can't my script read from STDIN after I gave it EOF (^D on Unix, ^Z on MS-DOS)?
1111 How can I convert my shell script to perl?
1115 Can I use perl to run a telnet or ftp session?
1119 How can I write expect in Perl?
1123 Is there a way to hide perl's command line from programs such as "ps"?
1127 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?
1131 How do I close a process's filehandle without waiting for it to complete?
1135 How do I fork a daemon process?
1139 How do I find out if I'm running interactively or not?
1143 How do I timeout a slow event?
1147 How do I set CPU limits?
1151 How do I avoid zombies on a Unix system?
1155 How do I use an SQL database?
1159 How do I make a system() exit on control-C?
1163 How do I open a file without blocking?
1167 How do I install a module from CPAN?
1171 What's the difference between require and use?
1175 How do I keep my own module/library directory?
1179 How do I add the directory my program lives in to the module/library search path?
1183 How do I add a directory to my include path at runtime?
1187 What is socket.ph and where do I get it?
1192 =head2 L<perlfaq9>: Networking
1194 Networking, the internet, and a few on the web.
1200 What is the correct form of response from a CGI script?
1204 My CGI script runs from the command line but not the browser. (500 Server Error)
1208 How can I get better error messages from a CGI program?
1212 How do I remove HTML from a string?
1216 How do I extract URLs?
1220 How do I download a file from the user's machine? How do I open a file on another machine?
1224 How do I make a pop-up menu in HTML?
1228 How do I fetch an HTML file?
1232 How do I automate an HTML form submission?
1236 How do I decode or create those %-encodings on the web?
1240 How do I redirect to another page?
1244 How do I put a password on my web pages?
1248 How do I edit my .htpasswd and .htgroup files with Perl?
1252 How do I make sure users can't enter values into a form that cause my CGI script to do bad things?
1256 How do I parse a mail header?
1260 How do I decode a CGI form?
1264 How do I check a valid mail address?
1268 How do I decode a MIME/BASE64 string?
1272 How do I return the user's mail address?
1280 How do I use MIME to make an attachment to a mail message?
1288 How do I find out my hostname/domainname/IP address?
1292 How do I fetch a news article or the active newsgroups?
1296 How do I fetch/put an FTP file?
1300 How can I do RPC in Perl?
1305 =head1 About the perlfaq documents
1307 =head2 Where to get the perlfaq
1309 This document is posted regularly to comp.lang.perl.announce and
1310 several other related newsgroups. It is available on many
1311 web sites: http://www.perldoc.com/ and http://perlfaq.cpan.org/ .
1313 =head2 How to contribute to the perlfaq
1315 You may mail corrections, additions, and suggestions to
1316 perlfaq-workers@perl.org . This alias should not be
1317 used to I<ask> FAQs. It's for fixing the current FAQ.
1318 Send questions to the comp.lang.perl.misc newsgroup.
1320 =head2 What will happen if you mail your Perl programming problems to the authors
1322 Your questions will probably go unread, unless they're suggestions of
1323 new questions to add to the FAQ, in which case they should have gone
1324 to the perlfaq-workers@perl.org instead.
1326 You should have read section 2 of this faq. There you would have
1327 learned that comp.lang.perl.misc is the appropriate place to go for
1328 free advice. If your question is really important and you require a
1329 prompt and correct answer, you should hire a consultant.
1333 When I first began the Perl FAQ in the late 80s, I never realized it
1334 would have grown to over a hundred pages, nor that Perl would ever become
1335 so popular and widespread. This document could not have been written
1336 without the tremendous help provided by Larry Wall and the rest of the
1339 =head1 Author and Copyright Information
1341 Copyright (c) 1997-2002 Tom Christiansen and Nathan Torkington.
1342 All rights reserved.
1344 =head2 Bundled Distributions
1346 This documentation is free; you can redistribute it and/or modify it
1347 under the same terms as Perl itself.
1349 Irrespective of its distribution, all code examples in these files
1350 are hereby placed into the public domain. You are permitted and
1351 encouraged to use this code in your own programs for fun
1352 or for profit as you see fit. A simple comment in the code giving
1353 credit would be courteous but is not required.
1357 This information is offered in good faith and in the hope that it may
1358 be of use, but is not guaranteed to be correct, up to date, or suitable
1359 for any particular purpose whatsoever. The authors accept no liability
1360 in respect of this information or its use.
1366 =item 1/November/2000
1368 A few grammatical fixes and updates implemented by John Borwick.
1372 Extensive updates from the net in preparation for 5.6 release.
1376 More minor touch-ups. Added new question at the end
1377 of perlfaq7 on variable names within variables.
1381 Small touch ups here and there. Added all questions in this
1382 document as a sort of table of contents.
1386 Significant changes throughout in preparation for the 5.005
1391 Style and whitespace changes from Chip, new question on reading one
1392 character at a time from a terminal using POSIX from Tom.
1396 Added http://www.oasis.leo.org/perl/ to L<perlfaq2>. Style fix to
1397 L<perlfaq3>. Added floating point precision, fixed complex number
1398 arithmetic, cross-references, caveat for Text::Wrap, alternative
1399 answer for initial capitalizing, fixed incorrect regexp, added example
1400 of Tie::IxHash to L<perlfaq4>. Added example of passing and storing
1401 filehandles, added commify to L<perlfaq5>. Restored variable suicide,
1402 and added mass commenting to L<perlfaq7>. Added Net::Telnet, fixed
1403 backticks, added reader/writer pair to telnet question, added FindBin,
1404 grouped module questions together in L<perlfaq8>. Expanded caveats
1405 for the simple URL extractor, gave LWP example, added CGI security
1406 question, expanded on the mail address answer in L<perlfaq9>.
1410 Added more info to the binary distribution section of L<perlfaq2>.
1411 Added Net::Telnet to L<perlfaq6>. Fixed typos in L<perlfaq8>. Added
1412 mail sending example to L<perlfaq9>. Added Merlyn's columns to
1417 Added the DATE to the NAME section, indicating which sections have
1420 Mentioned SIGPIPE and L<perlipc> in the forking open answer in
1423 Fixed description of a regular expression in L<perlfaq4>.
1425 =item 17/March/97 Version
1427 Various typos fixed throughout.
1429 Added new question on Perl BNF on L<perlfaq7>.
1431 =item Initial Release: 11/March/97
1433 This is the initial release of version 3 of the FAQ; consequently there
1434 have been no changes since its initial release.