Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
PERLFAQ(1)	       Perl Programmers	Reference Guide		    PERLFAQ(1)

NAME
       perlfaq - frequently asked questions about Perl

VERSION
       version 5.021011

DESCRIPTION
       The perlfaq comprises several documents that answer the most commonly
       asked questions about Perl and Perl programming.	It's divided by	topic
       into nine major sections	outlined in this document.

   Where to find the perlfaq
       The perlfaq is an evolving document.  Read the latest version at
       <http://learn.perl.org/faq/>.  It is also included in the standard Perl
       distribution.

   How to use the perlfaq
       The "perldoc" command line tool is part of the standard Perl
       distribution. To	read the perlfaq:

	   $ perldoc perlfaq

       To search the perlfaq question headings:

	   $ perldoc -q	open

   How to contribute to	the perlfaq
       Review <https://github.com/perl-doc-cats/perlfaq/wiki>.	If you don't
       find your suggestion create an issue or pull request against
       <https://github.com/perl-doc-cats/perlfaq>.

       Once approved, changes are merged into
       <https://github.com/tpf/perlfaq>, the repository	which drives
       <http://learn.perl.org/faq/>, and they are distributed with the next
       Perl 5 release.

   What	if my question isn't answered in the FAQ?
       Try the resources in perlfaq2.

TABLE OF CONTENTS
       perlfaq1	- General Questions About Perl
       perlfaq2	- Obtaining and	Learning about Perl
       perlfaq3	- Programming Tools
       perlfaq4	- Data Manipulation
       perlfaq5	- Files	and Formats
       perlfaq6	- Regular Expressions
       perlfaq7	- General Perl Language	Issues
       perlfaq8	- System Interaction
       perlfaq9	- Web, Email and Networking

THE QUESTIONS
   perlfaq1: General Questions About Perl
       This section of the FAQ answers very general, high-level	questions
       about Perl.

       o   What	is Perl?

       o   Who supports	Perl? Who develops it? Why is it free?

       o   Which version of Perl should	I use?

       o   What	are Perl 4, Perl 5, or Perl 6?

       o   What	is Perl	6?

       o   How stable is Perl?

       o   How often are new versions of Perl released?

       o   Is Perl difficult to	learn?

       o   How does Perl compare with other languages like Java, Python, REXX,
	   Scheme, or Tcl?

       o   Can I do [task] in Perl?

       o   When	shouldn't I program in Perl?

       o   What's the difference between "perl"	and "Perl"?

       o   What	is a JAPH?

       o   How can I convince others to	use Perl?

   perlfaq2: Obtaining and Learning about Perl
       This section of the FAQ answers questions about where to	find source
       and documentation for Perl, support, and	related	matters.

       o   What	machines support Perl? Where do	I get it?

       o   How can I get a binary version of Perl?

       o   I don't have	a C compiler. How can I	build my own Perl interpreter?

       o   I copied the	Perl binary from one machine to	another, but scripts
	   don't work.

       o   I grabbed the sources and tried to compile but gdbm/dynamic
	   loading/malloc/linking/... failed. How do I make it work?

       o   What	modules	and extensions are available for Perl? What is CPAN?

       o   Where can I get information on Perl?

       o   What	is perl.com? Perl Mongers? pm.org? perl.org? cpan.org?

       o   Where can I post questions?

       o   Perl	Books

       o   Which magazines have	Perl content?

       o   Which Perl blogs should I read?

       o   What	mailing	lists are there	for Perl?

       o   Where can I buy a commercial	version	of Perl?

       o   Where do I send bug reports?

   perlfaq3: Programming Tools
       This section of the FAQ answers questions related to programmer tools
       and programming support.

       o   How do I do (anything)?

       o   How can I use Perl interactively?

       o   How do I find which modules are installed on	my system?

       o   How do I debug my Perl programs?

       o   How do I profile my Perl programs?

       o   How do I cross-reference my Perl programs?

       o   Is there a pretty-printer (formatter) for Perl?

       o   Is there an IDE or Windows Perl Editor?

       o   Where can I get Perl	macros for vi?

       o   Where can I get perl-mode or	cperl-mode for emacs?

       o   How can I use curses	with Perl?

       o   How can I write a GUI (X, Tk, Gtk, etc.) in Perl?

       o   How can I make my Perl program run faster?

       o   How can I make my Perl program take less memory?

       o   Is it safe to return	a reference to local or	lexical	data?

       o   How can I free an array or hash so my program shrinks?

       o   How can I make my CGI script	more efficient?

       o   How can I hide the source for my Perl program?

       o   How can I compile my	Perl program into byte code or C?

       o   How can I get "#!perl" to work on [MS-DOS,NT,...]?

       o   Can I write useful Perl programs on the command line?

       o   Why don't Perl one-liners work on my	DOS/Mac/VMS system?

       o   Where can I learn about CGI or Web programming in Perl?

       o   Where can I learn about object-oriented Perl	programming?

       o   Where can I learn about linking C with Perl?

       o   I've	read perlembed,	perlguts, etc.,	but I can't embed perl in my C
	   program; what am I doing wrong?

       o   When	I tried	to run my script, I got	this message. What does	it
	   mean?

       o   What's MakeMaker?

   perlfaq4: Data Manipulation
       This section of the FAQ answers questions related to manipulating
       numbers,	dates, strings,	arrays,	hashes,	and miscellaneous data issues.

       o   Why am I getting long decimals (eg, 19.9499999999999) instead of
	   the numbers I should	be getting (eg,	19.95)?

       o   Why is int()	broken?

       o   Why isn't my	octal data interpreted correctly?

       o   Does	Perl have a round() function? What about ceil()	and floor()?
	   Trig	functions?

       o   How do I convert between numeric representations/bases/radixes?

       o   Why doesn't & work the way I	want it	to?

       o   How do I multiply matrices?

       o   How do I perform an operation on a series of	integers?

       o   How can I output Roman numerals?

       o   Why aren't my random	numbers	random?

       o   How do I get	a random number	between	X and Y?

       o   How do I find the day or week of the	year?

       o   How do I find the current century or	millennium?

       o   How can I compare two dates and find	the difference?

       o   How can I take a string and turn it into epoch seconds?

       o   How can I find the Julian Day?

       o   How do I find yesterday's date?

       o   Does	Perl have a Year 2000 or 2038 problem? Is Perl Y2K compliant?

       o   How do I validate input?

       o   How do I unescape a string?

       o   How do I remove consecutive pairs of	characters?

       o   How do I expand function calls in a string?

       o   How do I find matching/nesting anything?

       o   How do I reverse a string?

       o   How do I expand tabs	in a string?

       o   How do I reformat a paragraph?

       o   How can I access or change N	characters of a	string?

       o   How do I change the Nth occurrence of something?

       o   How can I count the number of occurrences of	a substring within a
	   string?

       o   How do I capitalize all the words on	one line?

       o   How can I split a [character]-delimited string except when inside
	   [character]?

       o   How do I strip blank	space from the beginning/end of	a string?

       o   How do I pad	a string with blanks or	pad a number with zeroes?

       o   How do I extract selected columns from a string?

       o   How do I find the soundex value of a	string?

       o   How can I expand variables in text strings?

       o   What's wrong	with always quoting "$vars"?

       o   Why don't my	<<HERE documents work?

       o   What	is the difference between a list and an	array?

       o   What	is the difference between $array[1] and	@array[1]?

       o   How can I remove duplicate elements from a list or array?

       o   How can I tell whether a certain element is contained in a list or
	   array?

       o   How do I compute the	difference of two arrays? How do I compute the
	   intersection	of two arrays?

       o   How do I test whether two arrays or hashes are equal?

       o   How do I find the first array element for which a condition is
	   true?

       o   How do I handle linked lists?

       o   How do I handle circular lists?

       o   How do I shuffle an array randomly?

       o   How do I process/modify each	element	of an array?

       o   How do I select a random element from an array?

       o   How do I permute N elements of a list?

       o   How do I sort an array by (anything)?

       o   How do I manipulate arrays of bits?

       o   Why does defined() return true on empty arrays and hashes?

       o   How do I process an entire hash?

       o   How do I merge two hashes?

       o   What	happens	if I add or remove keys	from a hash while iterating
	   over	it?

       o   How do I look up a hash element by value?

       o   How can I know how many entries are in a hash?

       o   How do I sort a hash	(optionally by value instead of	key)?

       o   How can I always keep my hash sorted?

       o   What's the difference between "delete" and "undef" with hashes?

       o   Why don't my	tied hashes make the defined/exists distinction?

       o   How do I reset an each() operation part-way through?

       o   How can I get the unique keys from two hashes?

       o   How can I store a multidimensional array in a DBM file?

       o   How can I make my hash remember the order I put elements into it?

       o   Why does passing a subroutine an undefined element in a hash	create
	   it?

       o   How can I make the Perl equivalent of a C structure/C++ class/hash
	   or array of hashes or arrays?

       o   How can I use a reference as	a hash key?

       o   How can I check if a	key exists in a	multilevel hash?

       o   How can I prevent addition of unwanted keys into a hash?

       o   How do I handle binary data correctly?

       o   How do I determine whether a	scalar is a
	   number/whole/integer/float?

       o   How do I keep persistent data across	program	calls?

       o   How do I print out or copy a	recursive data structure?

       o   How do I define methods for every class/object?

       o   How do I verify a credit card checksum?

       o   How do I pack arrays	of doubles or floats for XS code?

   perlfaq5: Files and Formats
       This section deals with I/O and the "f" issues: filehandles, flushing,
       formats,	and footers.

       o   How do I flush/unbuffer an output filehandle? Why must I do this?

       o   How do I change, delete, or insert a	line in	a file,	or append to
	   the beginning of a file?

       o   How do I count the number of	lines in a file?

       o   How do I delete the last N lines from a file?

       o   How can I use Perl's	"-i" option from within	a program?

       o   How can I copy a file?

       o   How do I make a temporary file name?

       o   How can I manipulate	fixed-record-length files?

       o   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?

       o   How can I use a filehandle indirectly?

       o   How can I set up a footer format to be used with write()?

       o   How can I write() into a string?

       o   How can I open a filehandle to a string?

       o   How can I output my numbers with commas added?

       o   How can I translate tildes (~) in a filename?

       o   How come when I open	a file read-write it wipes it out?

       o   Why do I sometimes get an "Argument list too	long" when I use <*>?

       o   How can I open a file with a	leading	">" or trailing	blanks?

       o   How can I reliably rename a file?

       o   How can I lock a file?

       o   Why can't I just open(FH, ">file.lock")?

       o   I still don't get locking. I	just want to increment the number in
	   the file. How can I do this?

       o   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?

       o   How do I randomly update a binary file?

       o   How do I get	a file's timestamp in perl?

       o   How do I set	a file's timestamp in perl?

       o   How do I print to more than one file	at once?

       o   How can I read in an	entire file all	at once?

       o   How can I read in a file by paragraphs?

       o   How can I read a single character from a file? From the keyboard?

       o   How can I tell whether there's a character waiting on a filehandle?

       o   How do I do a "tail -f" in perl?

       o   How do I dup() a filehandle in Perl?

       o   How do I close a file descriptor by number?

       o   Why can't I use "C:\temp\foo" in DOS	paths? Why doesn't
	   `C:\temp\foo.exe` work?

       o   Why doesn't glob("*.*") get all the files?

       o   Why does Perl let me	delete read-only files?	Why does "-i" clobber
	   protected files? Isn't this a bug in	Perl?

       o   How do I select a random line from a	file?

       o   Why do I get	weird spaces when I print an array of lines?

       o   How do I traverse a directory tree?

       o   How do I delete a directory tree?

       o   How do I copy an entire directory?

   perlfaq6: Regular Expressions
       This section is surprisingly small because the rest of the FAQ is
       littered	with answers involving regular expressions. For	example,
       decoding	a URL and checking whether something is	a number can be
       handled with regular expressions, but those answers are found elsewhere
       in this document	(in perlfaq9 : "How do I decode	or create those
       %-encodings on the web" and perlfaq4 : "How do I	determine whether a
       scalar is a number/whole/integer/float",	to be precise).

       o   How can I hope to use regular expressions without creating
	   illegible and unmaintainable	code?

       o   I'm having trouble matching over more than one line.	What's wrong?

       o   How can I pull out lines between two	patterns that are themselves
	   on different	lines?

       o   How do I match XML, HTML, or	other nasty, ugly things with a	regex?

       o   I put a regular expression into $/ but it didn't work. What's
	   wrong?

       o   How do I substitute case-insensitively on the LHS while preserving
	   case	on the RHS?

       o   How can I make "\w" match national character	sets?

       o   How can I match a locale-smart version of "/[a-zA-Z]/" ?

       o   How can I quote a variable to use in	a regex?

       o   What	is "/o"	really for?

       o   How do I use	a regular expression to	strip C-style comments from a
	   file?

       o   Can I use Perl regular expressions to match balanced	text?

       o   What	does it	mean that regexes are greedy? How can I	get around it?

       o   How do I process each word on each line?

       o   How can I print out a word-frequency	or line-frequency summary?

       o   How can I do	approximate matching?

       o   How do I efficiently	match many regular expressions at once?

       o   Why don't word-boundary searches with "\b" work for me?

       o   Why does using $&, $`, or $'	slow my	program	down?

       o   What	good is	"\G" in	a regular expression?

       o   Are Perl regexes DFAs or NFAs? Are they POSIX compliant?

       o   What's wrong	with using grep	in a void context?

       o   How can I match strings with	multibyte characters?

       o   How do I match a regular expression that's in a variable?

   perlfaq7: General Perl Language Issues
       This section deals with general Perl language issues that don't clearly
       fit into	any of the other sections.

       o   Can I get a BNF/yacc/RE for the Perl	language?

       o   What	are all	these $@%&* punctuation	signs, and how do I know when
	   to use them?

       o   Do I	always/never have to quote my strings or use semicolons	and
	   commas?

       o   How do I skip some return values?

       o   How do I temporarily	block warnings?

       o   What's an extension?

       o   Why do Perl operators have different	precedence than	C operators?

       o   How do I declare/create a structure?

       o   How do I create a module?

       o   How do I adopt or take over a module	already	on CPAN?

       o   How do I create a class?

       o   How can I tell if a variable	is tainted?

       o   What's a closure?

       o   What	is variable suicide and	how can	I prevent it?

       o   How can I pass/return a {Function, FileHandle, Array, Hash, Method,
	   Regex}?

       o   How do I create a static variable?

       o   What's the difference between dynamic and lexical (static) scoping?
	   Between local() and my()?

       o   How can I access a dynamic variable while a similarly named lexical
	   is in scope?

       o   What's the difference between deep and shallow binding?

       o   Why doesn't "my($foo) = <$fh>;" work	right?

       o   How do I redefine a builtin function, operator, or method?

       o   What's the difference between calling a function as &foo and	foo()?

       o   How do I create a switch or case statement?

       o   How can I catch accesses to undefined variables, functions, or
	   methods?

       o   Why can't a method included in this same file be found?

       o   How can I find out my current or calling package?

       o   How can I comment out a large block of Perl code?

       o   How do I clear a package?

       o   How can I use a variable as a variable name?

       o   What	does "bad interpreter" mean?

       o   Do I	need to	recompile XS modules when there	is a change in the C
	   library?

   perlfaq8: System Interaction
       This section of the Perl	FAQ covers questions involving operating
       system interaction. Topics include interprocess communication (IPC),
       control over the	user-interface (keyboard, screen and pointing
       devices), and most anything else	not related to data manipulation.

       o   How do I find out which operating system I'm	running	under?

       o   How come exec() doesn't return?

       o   How do I do fancy stuff with	the keyboard/screen/mouse?

       o   How do I print something out	in color?

       o   How do I read just one key without waiting for a return key?

       o   How do I check whether input	is ready on the	keyboard?

       o   How do I clear the screen?

       o   How do I get	the screen size?

       o   How do I ask	the user for a password?

       o   How do I read and write the serial port?

       o   How do I decode encrypted password files?

       o   How do I start a process in the background?

       o   How do I trap control characters/signals?

       o   How do I modify the shadow password file on a Unix system?

       o   How do I set	the time and date?

       o   How can I sleep() or	alarm()	for under a second?

       o   How can I measure time under	a second?

       o   How can I do	an atexit() or setjmp()/longjmp()? (Exception
	   handling)

       o   Why doesn't my sockets program work under System V (Solaris)? What
	   does	the error message "Protocol not	supported" mean?

       o   How can I call my system's unique C functions from Perl?

       o   Where do I get the include files to do ioctl() or syscall()?

       o   Why do setuid perl scripts complain about kernel problems?

       o   How can I open a pipe both to and from a command?

       o   Why can't I get the output of a command with	system()?

       o   How can I capture STDERR from an external command?

       o   Why doesn't open() return an	error when a pipe open fails?

       o   What's wrong	with using backticks in	a void context?

       o   How can I call backticks without shell processing?

       o   Why can't my	script read from STDIN after I gave it EOF (^D on
	   Unix, ^Z on MS-DOS)?

       o   How can I convert my	shell script to	perl?

       o   Can I use perl to run a telnet or ftp session?

       o   How can I write expect in Perl?

       o   Is there a way to hide perl's command line from programs such as
	   "ps"?

       o   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?

       o   How do I close a process's filehandle without waiting for it	to
	   complete?

       o   How do I fork a daemon process?

       o   How do I find out if	I'm running interactively or not?

       o   How do I timeout a slow event?

       o   How do I set	CPU limits?

       o   How do I avoid zombies on a Unix system?

       o   How do I use	an SQL database?

       o   How do I make a system() exit on control-C?

       o   How do I open a file	without	blocking?

       o   How do I tell the difference	between	errors from the	shell and
	   perl?

       o   How do I install a module from CPAN?

       o   What's the difference between require and use?

       o   How do I keep my own	module/library directory?

       o   How do I add	the directory my program lives in to the
	   module/library search path?

       o   How do I add	a directory to my include path (@INC) at runtime?

       o   Where are modules installed?

       o   What	is socket.ph and where do I get	it?

   perlfaq9: Web, Email	and Networking
       This section deals with questions related to running web	sites, sending
       and receiving email as well as general networking.

       o   Should I use	a web framework?

       o   Which web framework should I	use?

       o   What	is Plack and PSGI?

       o   How do I remove HTML	from a string?

       o   How do I extract URLs?

       o   How do I fetch an HTML file?

       o   How do I automate an	HTML form submission?

       o   How do I decode or create those %-encodings on the web?

       o   How do I redirect to	another	page?

       o   How do I put	a password on my web pages?

       o   How do I make sure users can't enter	values into a form that	causes
	   my CGI script to do bad things?

       o   How do I parse a mail header?

       o   How do I check a valid mail address?

       o   How do I decode a MIME/BASE64 string?

       o   How do I find the user's mail address?

       o   How do I send email?

       o   How do I use	MIME to	make an	attachment to a	mail message?

       o   How do I read email?

       o   How do I find out my	hostname, domainname, or IP address?

       o   How do I fetch/put an (S)FTP	file?

       o   How can I do	RPC in Perl?

CREDITS
       Tom Christiansen	wrote the original perlfaq then	expanded it with the
       help of Nat Torkington. brian d foy substantially edited	and expanded
       the perlfaq. perlfaq-workers and	others have also supplied feedback,
       patches and corrections over the	years.

AUTHOR AND COPYRIGHT
       Tom Christiansen	wrote the original version of this document.  brian d
       foy "<bdfoy@cpan.org>" wrote this version. See the individual perlfaq
       documents for additional	copyright information.

       This document is	available under	the same terms as Perl itself. Code
       examples	in all the perlfaq documents are in the	public domain. Use
       them as you see fit (and	at your	own risk with no warranty from
       anyone).

perl v5.28.3			  2020-05-14			    PERLFAQ(1)

NAME | VERSION | DESCRIPTION | TABLE OF CONTENTS | THE QUESTIONS | CREDITS | AUTHOR AND COPYRIGHT

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=perlfaq&sektion=1&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help