This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
PodParser v1.11 update (from Brad Appleton)
[perl5.git] / pod / perlfunc.pod
CommitLineData
a0d0e21e
LW
1=head1 NAME
2
3perlfunc - Perl builtin functions
4
5=head1 DESCRIPTION
6
7The functions in this section can serve as terms in an expression.
8They fall into two major categories: list operators and named unary
9operators. These differ in their precedence relationship with a
10following comma. (See the precedence table in L<perlop>.) List
11operators take more than one argument, while unary operators can never
12take more than one argument. Thus, a comma terminates the argument of
13a unary operator, but merely separates the arguments of a list
14operator. A unary operator generally provides a scalar context to its
2b5ab1e7 15argument, while a list operator may provide either scalar or list
a0d0e21e 16contexts for its arguments. If it does both, the scalar arguments will
5f05dabc 17be first, and the list argument will follow. (Note that there can ever
0f31cffe 18be only one such list argument.) For instance, splice() has three scalar
2b5ab1e7
TC
19arguments followed by a list, whereas gethostbyname() has four scalar
20arguments.
a0d0e21e
LW
21
22In the syntax descriptions that follow, list operators that expect a
23list (and provide list context for the elements of the list) are shown
24with LIST as an argument. Such a list may consist of any combination
25of scalar arguments or list values; the list values will be included
26in the list as if each individual element were interpolated at that
27point in the list, forming a longer single-dimensional list value.
28Elements of the LIST should be separated by commas.
29
30Any function in the list below may be used either with or without
31parentheses around its arguments. (The syntax descriptions omit the
5f05dabc 32parentheses.) If you use the parentheses, the simple (but occasionally
19799a22 33surprising) rule is this: It I<looks> like a function, therefore it I<is> a
a0d0e21e
LW
34function, and precedence doesn't matter. Otherwise it's a list
35operator or unary operator, and precedence does matter. And whitespace
36between the function and left parenthesis doesn't count--so you need to
37be careful sometimes:
38
68dc0745 39 print 1+2+4; # Prints 7.
40 print(1+2) + 4; # Prints 3.
41 print (1+2)+4; # Also prints 3!
42 print +(1+2)+4; # Prints 7.
43 print ((1+2)+4); # Prints 7.
a0d0e21e
LW
44
45If you run Perl with the B<-w> switch it can warn you about this. For
46example, the third line above produces:
47
48 print (...) interpreted as function at - line 1.
49 Useless use of integer addition in void context at - line 1.
50
2b5ab1e7
TC
51A few functions take no arguments at all, and therefore work as neither
52unary nor list operators. These include such functions as C<time>
53and C<endpwent>. For example, C<time+86_400> always means
54C<time() + 86_400>.
55
a0d0e21e 56For functions that can be used in either a scalar or list context,
54310121 57nonabortive failure is generally indicated in a scalar context by
a0d0e21e
LW
58returning the undefined value, and in a list context by returning the
59null list.
60
5a964f20
TC
61Remember the following important rule: There is B<no rule> that relates
62the behavior of an expression in list context to its behavior in scalar
63context, or vice versa. It might do two totally different things.
a0d0e21e 64Each operator and function decides which sort of value it would be most
2b5ab1e7 65appropriate to return in scalar context. Some operators return the
5a964f20 66length of the list that would have been returned in list context. Some
a0d0e21e
LW
67operators return the first value in the list. Some operators return the
68last value in the list. Some operators return a count of successful
69operations. In general, they do what you want, unless you want
70consistency.
71
5a964f20
TC
72An named array in scalar context is quite different from what would at
73first glance appear to be a list in scalar context. You can't get a list
74like C<(1,2,3)> into being in scalar context, because the compiler knows
75the context at compile time. It would generate the scalar comma operator
76there, not the list construction version of the comma. That means it
77was never a list to start with.
78
79In general, functions in Perl that serve as wrappers for system calls
f86cebdf 80of the same name (like chown(2), fork(2), closedir(2), etc.) all return
5a964f20
TC
81true when they succeed and C<undef> otherwise, as is usually mentioned
82in the descriptions below. This is different from the C interfaces,
19799a22
GS
83which return C<-1> on failure. Exceptions to this rule are C<wait>,
84C<waitpid>, and C<syscall>. System calls also set the special C<$!>
5a964f20
TC
85variable on failure. Other functions do not, except accidentally.
86
cb1a09d0
AD
87=head2 Perl Functions by Category
88
89Here are Perl's functions (including things that look like
5a964f20 90functions, like some keywords and named operators)
cb1a09d0
AD
91arranged by category. Some functions appear in more
92than one place.
93
94=over
95
96=item Functions for SCALARs or strings
97
22fae026 98C<chomp>, C<chop>, C<chr>, C<crypt>, C<hex>, C<index>, C<lc>, C<lcfirst>,
ab4f32c2
A
99C<length>, C<oct>, C<ord>, C<pack>, C<q/STRING/>, C<qq/STRING/>, C<reverse>,
100C<rindex>, C<sprintf>, C<substr>, C<tr///>, C<uc>, C<ucfirst>, C<y///>
cb1a09d0
AD
101
102=item Regular expressions and pattern matching
103
ab4f32c2 104C<m//>, C<pos>, C<quotemeta>, C<s///>, C<split>, C<study>, C<qr//>
cb1a09d0
AD
105
106=item Numeric functions
107
22fae026
TM
108C<abs>, C<atan2>, C<cos>, C<exp>, C<hex>, C<int>, C<log>, C<oct>, C<rand>,
109C<sin>, C<sqrt>, C<srand>
cb1a09d0
AD
110
111=item Functions for real @ARRAYs
112
22fae026 113C<pop>, C<push>, C<shift>, C<splice>, C<unshift>
cb1a09d0
AD
114
115=item Functions for list data
116
ab4f32c2 117C<grep>, C<join>, C<map>, C<qw/STRING/>, C<reverse>, C<sort>, C<unpack>
cb1a09d0
AD
118
119=item Functions for real %HASHes
120
22fae026 121C<delete>, C<each>, C<exists>, C<keys>, C<values>
cb1a09d0
AD
122
123=item Input and output functions
124
22fae026
TM
125C<binmode>, C<close>, C<closedir>, C<dbmclose>, C<dbmopen>, C<die>, C<eof>,
126C<fileno>, C<flock>, C<format>, C<getc>, C<print>, C<printf>, C<read>,
127C<readdir>, C<rewinddir>, C<seek>, C<seekdir>, C<select>, C<syscall>,
128C<sysread>, C<sysseek>, C<syswrite>, C<tell>, C<telldir>, C<truncate>,
129C<warn>, C<write>
cb1a09d0
AD
130
131=item Functions for fixed length data or records
132
22fae026 133C<pack>, C<read>, C<syscall>, C<sysread>, C<syswrite>, C<unpack>, C<vec>
cb1a09d0
AD
134
135=item Functions for filehandles, files, or directories
136
22fae026 137C<-I<X>>, C<chdir>, C<chmod>, C<chown>, C<chroot>, C<fcntl>, C<glob>,
5ff3f7a4
GS
138C<ioctl>, C<link>, C<lstat>, C<mkdir>, C<open>, C<opendir>,
139C<readlink>, C<rename>, C<rmdir>, C<stat>, C<symlink>, C<umask>,
140C<unlink>, C<utime>
cb1a09d0
AD
141
142=item Keywords related to the control flow of your perl program
143
98293880
JH
144C<caller>, C<continue>, C<die>, C<do>, C<dump>, C<eval>, C<exit>,
145C<goto>, C<last>, C<next>, C<redo>, C<return>, C<sub>, C<wantarray>
cb1a09d0 146
54310121 147=item Keywords related to scoping
cb1a09d0 148
22fae026 149C<caller>, C<import>, C<local>, C<my>, C<package>, C<use>
cb1a09d0
AD
150
151=item Miscellaneous functions
152
22fae026
TM
153C<defined>, C<dump>, C<eval>, C<formline>, C<local>, C<my>, C<reset>,
154C<scalar>, C<undef>, C<wantarray>
cb1a09d0
AD
155
156=item Functions for processes and process groups
157
22fae026 158C<alarm>, C<exec>, C<fork>, C<getpgrp>, C<getppid>, C<getpriority>, C<kill>,
ab4f32c2 159C<pipe>, C<qx/STRING/>, C<setpgrp>, C<setpriority>, C<sleep>, C<system>,
22fae026 160C<times>, C<wait>, C<waitpid>
cb1a09d0
AD
161
162=item Keywords related to perl modules
163
22fae026 164C<do>, C<import>, C<no>, C<package>, C<require>, C<use>
cb1a09d0
AD
165
166=item Keywords related to classes and object-orientedness
167
22fae026
TM
168C<bless>, C<dbmclose>, C<dbmopen>, C<package>, C<ref>, C<tie>, C<tied>,
169C<untie>, C<use>
cb1a09d0
AD
170
171=item Low-level socket functions
172
22fae026
TM
173C<accept>, C<bind>, C<connect>, C<getpeername>, C<getsockname>,
174C<getsockopt>, C<listen>, C<recv>, C<send>, C<setsockopt>, C<shutdown>,
175C<socket>, C<socketpair>
cb1a09d0
AD
176
177=item System V interprocess communication functions
178
22fae026
TM
179C<msgctl>, C<msgget>, C<msgrcv>, C<msgsnd>, C<semctl>, C<semget>, C<semop>,
180C<shmctl>, C<shmget>, C<shmread>, C<shmwrite>
cb1a09d0
AD
181
182=item Fetching user and group info
183
22fae026
TM
184C<endgrent>, C<endhostent>, C<endnetent>, C<endpwent>, C<getgrent>,
185C<getgrgid>, C<getgrnam>, C<getlogin>, C<getpwent>, C<getpwnam>,
186C<getpwuid>, C<setgrent>, C<setpwent>
cb1a09d0
AD
187
188=item Fetching network info
189
22fae026
TM
190C<endprotoent>, C<endservent>, C<gethostbyaddr>, C<gethostbyname>,
191C<gethostent>, C<getnetbyaddr>, C<getnetbyname>, C<getnetent>,
192C<getprotobyname>, C<getprotobynumber>, C<getprotoent>,
193C<getservbyname>, C<getservbyport>, C<getservent>, C<sethostent>,
194C<setnetent>, C<setprotoent>, C<setservent>
cb1a09d0
AD
195
196=item Time-related functions
197
22fae026 198C<gmtime>, C<localtime>, C<time>, C<times>
cb1a09d0 199
37798a01 200=item Functions new in perl5
201
22fae026
TM
202C<abs>, C<bless>, C<chomp>, C<chr>, C<exists>, C<formline>, C<glob>,
203C<import>, C<lc>, C<lcfirst>, C<map>, C<my>, C<no>, C<prototype>, C<qx>,
204C<qw>, C<readline>, C<readpipe>, C<ref>, C<sub*>, C<sysopen>, C<tie>,
205C<tied>, C<uc>, C<ucfirst>, C<untie>, C<use>
37798a01 206
207* - C<sub> was a keyword in perl4, but in perl5 it is an
5a964f20 208operator, which can be used in expressions.
37798a01 209
210=item Functions obsoleted in perl5
211
22fae026 212C<dbmclose>, C<dbmopen>
37798a01 213
cb1a09d0
AD
214=back
215
60f9f73c
JH
216=head2 Portability
217
2b5ab1e7
TC
218Perl was born in Unix and can therefore access all common Unix
219system calls. In non-Unix environments, the functionality of some
220Unix system calls may not be available, or details of the available
221functionality may differ slightly. The Perl functions affected
60f9f73c
JH
222by this are:
223
224C<-X>, C<binmode>, C<chmod>, C<chown>, C<chroot>, C<crypt>,
225C<dbmclose>, C<dbmopen>, C<dump>, C<endgrent>, C<endhostent>,
226C<endnetent>, C<endprotoent>, C<endpwent>, C<endservent>, C<exec>,
227C<fcntl>, C<flock>, C<fork>, C<getgrent>, C<getgrgid>, C<gethostent>,
228C<getlogin>, C<getnetbyaddr>, C<getnetbyname>, C<getnetent>,
229C<getppid>, C<getprgp>, C<getpriority>, C<getprotobynumber>,
230C<getprotoent>, C<getpwent>, C<getpwnam>, C<getpwuid>,
231C<getservbyport>, C<getservent>, C<getsockopt>, C<glob>, C<ioctl>,
232C<kill>, C<link>, C<lstat>, C<msgctl>, C<msgget>, C<msgrcv>,
2b5ab1e7 233C<msgsnd>, C<open>, C<pipe>, C<readlink>, C<rename>, C<select>, C<semctl>,
60f9f73c
JH
234C<semget>, C<semop>, C<setgrent>, C<sethostent>, C<setnetent>,
235C<setpgrp>, C<setpriority>, C<setprotoent>, C<setpwent>,
236C<setservent>, C<setsockopt>, C<shmctl>, C<shmget>, C<shmread>,
2b5ab1e7
TC
237C<shmwrite>, C<socket>, C<socketpair>, C<stat>, C<symlink>, C<syscall>,
238C<sysopen>, C<system>, C<times>, C<truncate>, C<umask>, C<unlink>,
239C<utime>, C<wait>, C<waitpid>
60f9f73c
JH
240
241For more information about the portability of these functions, see
242L<perlport> and other available platform-specific documentation.
243
cb1a09d0
AD
244=head2 Alphabetical Listing of Perl Functions
245
a0d0e21e
LW
246=over 8
247
22fae026 248=item I<-X> FILEHANDLE
a0d0e21e 249
22fae026 250=item I<-X> EXPR
a0d0e21e 251
22fae026 252=item I<-X>
a0d0e21e
LW
253
254A file test, where X is one of the letters listed below. This unary
255operator takes one argument, either a filename or a filehandle, and
256tests the associated file to see if something is true about it. If the
7660c0ab 257argument is omitted, tests C<$_>, except for C<-t>, which tests STDIN.
19799a22 258Unless otherwise documented, it returns C<1> for true and C<''> for false, or
a0d0e21e
LW
259the undefined value if the file doesn't exist. Despite the funny
260names, precedence is the same as any other named unary operator, and
261the argument may be parenthesized like any other unary operator. The
262operator may be any of:
7e778d91
IZ
263X<-r>X<-w>X<-x>X<-o>X<-R>X<-W>X<-X>X<-O>X<-e>X<-z>X<-s>X<-f>X<-d>X<-l>X<-p>
264X<-S>X<-b>X<-c>X<-t>X<-u>X<-g>X<-k>X<-T>X<-B>X<-M>X<-A>X<-C>
a0d0e21e
LW
265
266 -r File is readable by effective uid/gid.
267 -w File is writable by effective uid/gid.
268 -x File is executable by effective uid/gid.
269 -o File is owned by effective uid.
270
271 -R File is readable by real uid/gid.
272 -W File is writable by real uid/gid.
273 -X File is executable by real uid/gid.
274 -O File is owned by real uid.
275
276 -e File exists.
277 -z File has zero size.
54310121 278 -s File has nonzero size (returns size).
a0d0e21e
LW
279
280 -f File is a plain file.
281 -d File is a directory.
282 -l File is a symbolic link.
9c4d0f16 283 -p File is a named pipe (FIFO), or Filehandle is a pipe.
a0d0e21e
LW
284 -S File is a socket.
285 -b File is a block special file.
286 -c File is a character special file.
287 -t Filehandle is opened to a tty.
288
289 -u File has setuid bit set.
290 -g File has setgid bit set.
291 -k File has sticky bit set.
292
2cdbc966
JD
293 -T File is an ASCII text file.
294 -B File is a "binary" file (opposite of -T).
a0d0e21e
LW
295
296 -M Age of file in days when script started.
297 -A Same for access time.
298 -C Same for inode change time.
299
a0d0e21e
LW
300Example:
301
302 while (<>) {
303 chop;
304 next unless -f $_; # ignore specials
5a964f20 305 #...
a0d0e21e
LW
306 }
307
5ff3f7a4
GS
308The interpretation of the file permission operators C<-r>, C<-R>,
309C<-w>, C<-W>, C<-x>, and C<-X> is by default based solely on the mode
310of the file and the uids and gids of the user. There may be other
311reasons you can't actually read, write, or execute the file. Such
312reasons may be for example network filesystem access controls, ACLs
313(access control lists), read-only filesystems, and unrecognized
314executable formats.
315
2b5ab1e7
TC
316Also note that, for the superuser on the local filesystems, the C<-r>,
317C<-R>, C<-w>, and C<-W> tests always return 1, and C<-x> and C<-X> return 1
5ff3f7a4
GS
318if any execute bit is set in the mode. Scripts run by the superuser
319may thus need to do a stat() to determine the actual mode of the file,
2b5ab1e7 320or temporarily set their effective uid to something else.
5ff3f7a4
GS
321
322If you are using ACLs, there is a pragma called C<filetest> that may
323produce more accurate results than the bare stat() mode bits.
5ff3f7a4
GS
324When under the C<use filetest 'access'> the above-mentioned filetests
325will test whether the permission can (not) be granted using the
468541a8 326access() family of system calls. Also note that the C<-x> and C<-X> may
5ff3f7a4
GS
327under this pragma return true even if there are no execute permission
328bits set (nor any extra execute permission ACLs). This strangeness is
329due to the underlying system calls' definitions. Read the
330documentation for the C<filetest> pragma for more information.
331
a0d0e21e
LW
332Note that C<-s/a/b/> does not do a negated substitution. Saying
333C<-exp($foo)> still works as expected, however--only single letters
334following a minus are interpreted as file tests.
335
336The C<-T> and C<-B> switches work as follows. The first block or so of the
337file is examined for odd characters such as strange control codes or
5a964f20 338characters with the high bit set. If too many strange characters (E<gt>30%)
a0d0e21e
LW
339are found, it's a C<-B> file, otherwise it's a C<-T> file. Also, any file
340containing null in the first block is considered a binary file. If C<-T>
341or C<-B> is used on a filehandle, the current stdio buffer is examined
19799a22 342rather than the first block. Both C<-T> and C<-B> return true on a null
54310121 343file, or a file at EOF when testing a filehandle. Because you have to
4633a7c4
LW
344read a file to do the C<-T> test, on most occasions you want to use a C<-f>
345against the file first, as in C<next unless -f $file && -T $file>.
a0d0e21e 346
19799a22 347If any of the file tests (or either the C<stat> or C<lstat> operators) are given
28757baa 348the special filehandle consisting of a solitary underline, then the stat
a0d0e21e
LW
349structure of the previous file test (or stat operator) is used, saving
350a system call. (This doesn't work with C<-t>, and you need to remember
351that lstat() and C<-l> will leave values in the stat structure for the
352symbolic link, not the real file.) Example:
353
354 print "Can do.\n" if -r $a || -w _ || -x _;
355
356 stat($filename);
357 print "Readable\n" if -r _;
358 print "Writable\n" if -w _;
359 print "Executable\n" if -x _;
360 print "Setuid\n" if -u _;
361 print "Setgid\n" if -g _;
362 print "Sticky\n" if -k _;
363 print "Text\n" if -T _;
364 print "Binary\n" if -B _;
365
366=item abs VALUE
367
54310121 368=item abs
bbce6d69 369
a0d0e21e 370Returns the absolute value of its argument.
7660c0ab 371If VALUE is omitted, uses C<$_>.
a0d0e21e
LW
372
373=item accept NEWSOCKET,GENERICSOCKET
374
f86cebdf 375Accepts an incoming socket connect, just as the accept(2) system call
19799a22 376does. Returns the packed address if it succeeded, false otherwise.
2b5ab1e7 377See the example in L<perlipc/"Sockets: Client/Server Communication">.
a0d0e21e 378
8d2a6795
GS
379On systems that support a close-on-exec flag on files, the flag will
380be set for the newly opened file descriptor, as determined by the
381value of $^F. See L<perlvar/$^F>.
382
a0d0e21e
LW
383=item alarm SECONDS
384
54310121 385=item alarm
bbce6d69 386
a0d0e21e 387Arranges to have a SIGALRM delivered to this process after the
bbce6d69 388specified number of seconds have elapsed. If SECONDS is not specified,
7660c0ab 389the value stored in C<$_> is used. (On some machines,
a0d0e21e
LW
390unfortunately, the elapsed time may be up to one second less than you
391specified because of how seconds are counted.) Only one timer may be
392counting at once. Each call disables the previous timer, and an
7660c0ab 393argument of C<0> may be supplied to cancel the previous timer without
a0d0e21e
LW
394starting a new one. The returned value is the amount of time remaining
395on the previous timer.
396
4633a7c4 397For delays of finer granularity than one second, you may use Perl's
19799a22
GS
398four-argument version of select() leaving the first three arguments
399undefined, or you might be able to use the C<syscall> interface to
2b5ab1e7
TC
400access setitimer(2) if your system supports it. The Time::HiRes module
401from CPAN may also prove useful.
402
68f8bed4
JH
403It is usually a mistake to intermix C<alarm> and C<sleep> calls.
404(C<sleep> may be internally implemented in your system with C<alarm>)
a0d0e21e 405
19799a22
GS
406If you want to use C<alarm> to time out a system call you need to use an
407C<eval>/C<die> pair. You can't rely on the alarm causing the system call to
f86cebdf 408fail with C<$!> set to C<EINTR> because Perl sets up signal handlers to
19799a22 409restart system calls on some systems. Using C<eval>/C<die> always works,
5a964f20 410modulo the caveats given in L<perlipc/"Signals">.
ff68c719 411
412 eval {
f86cebdf 413 local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
36477c24 414 alarm $timeout;
ff68c719 415 $nread = sysread SOCKET, $buffer, $size;
36477c24 416 alarm 0;
ff68c719 417 };
ff68c719 418 if ($@) {
f86cebdf 419 die unless $@ eq "alarm\n"; # propagate unexpected errors
ff68c719 420 # timed out
421 }
422 else {
423 # didn't
424 }
425
a0d0e21e
LW
426=item atan2 Y,X
427
428Returns the arctangent of Y/X in the range -PI to PI.
429
ca6e1c26 430For the tangent operation, you may use the C<Math::Trig::tan>
28757baa 431function, or use the familiar relation:
432
433 sub tan { sin($_[0]) / cos($_[0]) }
434
a0d0e21e
LW
435=item bind SOCKET,NAME
436
437Binds a network address to a socket, just as the bind system call
19799a22 438does. Returns true if it succeeded, false otherwise. NAME should be a
4633a7c4
LW
439packed address of the appropriate type for the socket. See the examples in
440L<perlipc/"Sockets: Client/Server Communication">.
a0d0e21e
LW
441
442=item binmode FILEHANDLE
443
19799a22
GS
444Arranges for FILEHANDLE to be read or written in "binary" mode on
445systems whose run-time libraries force the programmer to guess
446between binary and text files. If FILEHANDLE is an expression, the
447value is taken as the name of the filehandle. binmode() should be
448called after the C<open> but before any I/O is done on the filehandle.
449The only way to reset binary mode on a filehandle is to reopen the
450file.
451
452The operating system, device drivers, C libraries, and Perl run-time
453system all conspire to let the programmer conveniently treat a
454simple, one-byte C<\n> as the line terminator, irrespective of its
455external representation. On Unix and its brethren, the native file
456representation exactly matches the internal representation, making
457everyone's lives unbelievably simpler. Consequently, L<binmode>
458has no effect under Unix, Plan9, or Mac OS, all of which use C<\n>
459to end each line. (Unix and Plan9 think C<\n> means C<\cJ> and
460C<\r> means C<\cM>, whereas the Mac goes the other way--it uses
461C<\cM> for c<\n> and C<\cJ> to mean C<\r>. But that's ok, because
462it's only one byte, and the internal and external representations
463match.)
464
465In legacy systems like MS-DOS and its embellishments, your program
466sees a C<\n> as a simple C<\cJ> (just as in Unix), but oddly enough,
467that's not what's physically stored on disk. What's worse, these
468systems refuse to help you with this; it's up to you to remember
469what to do. And you mustn't go applying binmode() with wild abandon,
470either, because if your system does care about binmode(), then using
471it when you shouldn't is just as perilous as failing to use it when
472you should.
473
474That means that on any version of Microsoft WinXX that you might
475care to name (or not), binmode() causes C<\cM\cJ> sequences on disk
476to be converted to C<\n> when read into your program, and causes
477any C<\n> in your program to be converted back to C<\cM\cJ> on
478output to disk. This sad discrepancy leads to no end of
479problems in not just the readline operator, but also when using
480seek(), tell(), and read() calls. See L<perlport> for other painful
481details. See the C<$/> and C<$\> variables in L<perlvar> for how
482to manually set your input and output line-termination sequences.
a0d0e21e 483
4633a7c4 484=item bless REF,CLASSNAME
a0d0e21e
LW
485
486=item bless REF
487
2b5ab1e7
TC
488This function tells the thingy referenced by REF that it is now an object
489in the CLASSNAME package. If CLASSNAME is omitted, the current package
19799a22 490is used. Because a C<bless> is often the last thing in a constructor,
2b5ab1e7
TC
491it returns the reference for convenience. Always use the two-argument
492version if the function doing the blessing might be inherited by a
493derived class. See L<perltoot> and L<perlobj> for more about the blessing
494(and blessings) of objects.
a0d0e21e 495
57668c4d 496Consider always blessing objects in CLASSNAMEs that are mixed case.
2b5ab1e7
TC
497Namespaces with all lowercase names are considered reserved for
498Perl pragmata. Builtin types have all uppercase names, so to prevent
499confusion, you may wish to avoid such package names as well. Make sure
500that CLASSNAME is a true value.
60ad88b8
GS
501
502See L<perlmod/"Perl Modules">.
503
a0d0e21e
LW
504=item caller EXPR
505
506=item caller
507
5a964f20 508Returns the context of the current subroutine call. In scalar context,
28757baa 509returns the caller's package name if there is a caller, that is, if
19799a22 510we're in a subroutine or C<eval> or C<require>, and the undefined value
5a964f20 511otherwise. In list context, returns
a0d0e21e 512
748a9306 513 ($package, $filename, $line) = caller;
a0d0e21e
LW
514
515With EXPR, it returns some extra information that the debugger uses to
516print a stack trace. The value of EXPR indicates how many call frames
517to go back before the current one.
518
f3aa04c2 519 ($package, $filename, $line, $subroutine, $hasargs,
e476b1b5 520 $wantarray, $evaltext, $is_require, $hints, $bitmask) = caller($i);
e7ea3e70 521
951ba7fe 522Here $subroutine may be C<(eval)> if the frame is not a subroutine
19799a22 523call, but an C<eval>. In such a case additional elements $evaltext and
7660c0ab 524C<$is_require> are set: C<$is_require> is true if the frame is created by a
19799a22 525C<require> or C<use> statement, $evaltext contains the text of the
dc848c6f 526C<eval EXPR> statement. In particular, for a C<eval BLOCK> statement,
951ba7fe 527$filename is C<(eval)>, but $evaltext is undefined. (Note also that
dc848c6f 528each C<use> statement creates a C<require> frame inside an C<eval EXPR>)
e476b1b5
GS
529frame. C<$hints> and C<$bitmask> contain pragmatic hints that the caller
530was compiled with. The C<$hints> and C<$bitmask> values are subject to
531change between versions of Perl, and are not meant for external use.
748a9306
LW
532
533Furthermore, when called from within the DB package, caller returns more
7660c0ab 534detailed information: it sets the list variable C<@DB::args> to be the
54310121 535arguments with which the subroutine was invoked.
748a9306 536
7660c0ab 537Be aware that the optimizer might have optimized call frames away before
19799a22 538C<caller> had a chance to get the information. That means that C<caller(N)>
7660c0ab 539might not return information about the call frame you expect it do, for
19799a22
GS
540C<N E<gt> 1>. In particular, C<@DB::args> might have information from the
541previous time C<caller> was called.
7660c0ab 542
a0d0e21e
LW
543=item chdir EXPR
544
2b5ab1e7 545Changes the working directory to EXPR, if possible. If EXPR is omitted,
0bfc1ec4
GS
546changes to the directory specified by C<$ENV{HOME}>, if set; if not,
547changes to the directory specified by C<$ENV{LOGDIR}>. If neither is
548set, C<chdir> does nothing. It returns true upon success, false
549otherwise. See the example under C<die>.
a0d0e21e
LW
550
551=item chmod LIST
552
553Changes the permissions of a list of files. The first element of the
4633a7c4 554list must be the numerical mode, which should probably be an octal
2f9daede
TP
555number, and which definitely should I<not> a string of octal digits:
556C<0644> is okay, C<'0644'> is not. Returns the number of files
dc848c6f 557successfully changed. See also L</oct>, if all you have is a string.
a0d0e21e
LW
558
559 $cnt = chmod 0755, 'foo', 'bar';
560 chmod 0755, @executables;
f86cebdf
GS
561 $mode = '0644'; chmod $mode, 'foo'; # !!! sets mode to
562 # --w----r-T
2f9daede
TP
563 $mode = '0644'; chmod oct($mode), 'foo'; # this is better
564 $mode = 0644; chmod $mode, 'foo'; # this is best
a0d0e21e 565
ca6e1c26
JH
566You can also import the symbolic C<S_I*> constants from the Fcntl
567module:
568
569 use Fcntl ':mode';
570
571 chmod S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH, @executables;
572 # This is identical to the chmod 0755 of the above example.
573
a0d0e21e
LW
574=item chomp VARIABLE
575
576=item chomp LIST
577
578=item chomp
579
2b5ab1e7
TC
580This safer version of L</chop> removes any trailing string
581that corresponds to the current value of C<$/> (also known as
28757baa 582$INPUT_RECORD_SEPARATOR in the C<English> module). It returns the total
583number of characters removed from all its arguments. It's often used to
584remove the newline from the end of an input record when you're worried
2b5ab1e7
TC
585that the final record may be missing its newline. When in paragraph
586mode (C<$/ = "">), it removes all trailing newlines from the string.
4c5a6083
GS
587When in slurp mode (C<$/ = undef>) or fixed-length record mode (C<$/> is
588a reference to an integer or the like, see L<perlvar>) chomp() won't
19799a22
GS
589remove anything.
590If VARIABLE is omitted, it chomps C<$_>. Example:
a0d0e21e
LW
591
592 while (<>) {
593 chomp; # avoid \n on last field
594 @array = split(/:/);
5a964f20 595 # ...
a0d0e21e
LW
596 }
597
598You can actually chomp anything that's an lvalue, including an assignment:
599
600 chomp($cwd = `pwd`);
601 chomp($answer = <STDIN>);
602
603If you chomp a list, each element is chomped, and the total number of
604characters removed is returned.
605
606=item chop VARIABLE
607
608=item chop LIST
609
610=item chop
611
612Chops off the last character of a string and returns the character
613chopped. It's used primarily to remove the newline from the end of an
614input record, but is much more efficient than C<s/\n//> because it neither
7660c0ab 615scans nor copies the string. If VARIABLE is omitted, chops C<$_>.
a0d0e21e
LW
616Example:
617
618 while (<>) {
619 chop; # avoid \n on last field
620 @array = split(/:/);
5a964f20 621 #...
a0d0e21e
LW
622 }
623
624You can actually chop anything that's an lvalue, including an assignment:
625
626 chop($cwd = `pwd`);
627 chop($answer = <STDIN>);
628
629If you chop a list, each element is chopped. Only the value of the
19799a22 630last C<chop> is returned.
a0d0e21e 631
19799a22 632Note that C<chop> returns the last character. To return all but the last
748a9306
LW
633character, use C<substr($string, 0, -1)>.
634
a0d0e21e
LW
635=item chown LIST
636
637Changes the owner (and group) of a list of files. The first two
19799a22
GS
638elements of the list must be the I<numeric> uid and gid, in that
639order. A value of -1 in either position is interpreted by most
640systems to leave that value unchanged. Returns the number of files
641successfully changed.
a0d0e21e
LW
642
643 $cnt = chown $uid, $gid, 'foo', 'bar';
644 chown $uid, $gid, @filenames;
645
54310121 646Here's an example that looks up nonnumeric uids in the passwd file:
a0d0e21e
LW
647
648 print "User: ";
19799a22 649 chomp($user = <STDIN>);
5a964f20 650 print "Files: ";
19799a22 651 chomp($pattern = <STDIN>);
a0d0e21e
LW
652
653 ($login,$pass,$uid,$gid) = getpwnam($user)
654 or die "$user not in passwd file";
655
5a964f20 656 @ary = glob($pattern); # expand filenames
a0d0e21e
LW
657 chown $uid, $gid, @ary;
658
54310121 659On most systems, you are not allowed to change the ownership of the
4633a7c4
LW
660file unless you're the superuser, although you should be able to change
661the group to any of your secondary groups. On insecure systems, these
662restrictions may be relaxed, but this is not a portable assumption.
19799a22
GS
663On POSIX systems, you can detect this condition this way:
664
665 use POSIX qw(sysconf _PC_CHOWN_RESTRICTED);
666 $can_chown_giveaway = not sysconf(_PC_CHOWN_RESTRICTED);
4633a7c4 667
a0d0e21e
LW
668=item chr NUMBER
669
54310121 670=item chr
bbce6d69 671
a0d0e21e 672Returns the character represented by that NUMBER in the character set.
a0ed51b3 673For example, C<chr(65)> is C<"A"> in either ASCII or Unicode, and
2b5ab1e7
TC
674chr(0x263a) is a Unicode smiley face (but only within the scope of
675a C<use utf8>). For the reverse, use L</ord>.
676See L<utf8> for more about Unicode.
a0d0e21e 677
7660c0ab 678If NUMBER is omitted, uses C<$_>.
bbce6d69 679
a0d0e21e
LW
680=item chroot FILENAME
681
54310121 682=item chroot
bbce6d69 683
5a964f20 684This function works like the system call by the same name: it makes the
4633a7c4 685named directory the new root directory for all further pathnames that
951ba7fe 686begin with a C</> by your process and all its children. (It doesn't
28757baa 687change your current working directory, which is unaffected.) For security
4633a7c4 688reasons, this call is restricted to the superuser. If FILENAME is
19799a22 689omitted, does a C<chroot> to C<$_>.
a0d0e21e
LW
690
691=item close FILEHANDLE
692
6a518fbc
TP
693=item close
694
19799a22 695Closes the file or pipe associated with the file handle, returning true
a0d0e21e 696only if stdio successfully flushes buffers and closes the system file
19799a22 697descriptor. Closes the currently selected filehandle if the argument
6a518fbc 698is omitted.
fb73857a 699
700You don't have to close FILEHANDLE if you are immediately going to do
19799a22
GS
701another C<open> on it, because C<open> will close it for you. (See
702C<open>.) However, an explicit C<close> on an input file resets the line
703counter (C<$.>), while the implicit close done by C<open> does not.
fb73857a 704
19799a22
GS
705If the file handle came from a piped open C<close> will additionally
706return false if one of the other system calls involved fails or if the
fb73857a 707program exits with non-zero status. (If the only problem was that the
2b5ab1e7
TC
708program exited non-zero C<$!> will be set to C<0>.) Closing a pipe
709also waits for the process executing on the pipe to complete, in case you
710want to look at the output of the pipe afterwards, and
711implicitly puts the exit status value of that command into C<$?>.
5a964f20 712
73689b13
GS
713Prematurely closing the read end of a pipe (i.e. before the process
714writing to it at the other end has closed it) will result in a
715SIGPIPE being delivered to the writer. If the other end can't
716handle that, be sure to read all the data before closing the pipe.
717
fb73857a 718Example:
a0d0e21e 719
fb73857a 720 open(OUTPUT, '|sort >foo') # pipe to sort
721 or die "Can't start sort: $!";
5a964f20 722 #... # print stuff to output
fb73857a 723 close OUTPUT # wait for sort to finish
724 or warn $! ? "Error closing sort pipe: $!"
725 : "Exit status $? from sort";
726 open(INPUT, 'foo') # get sort's results
727 or die "Can't open 'foo' for input: $!";
a0d0e21e 728
5a964f20
TC
729FILEHANDLE may be an expression whose value can be used as an indirect
730filehandle, usually the real filehandle name.
a0d0e21e
LW
731
732=item closedir DIRHANDLE
733
19799a22 734Closes a directory opened by C<opendir> and returns the success of that
5a964f20
TC
735system call.
736
737DIRHANDLE may be an expression whose value can be used as an indirect
738dirhandle, usually the real dirhandle name.
a0d0e21e
LW
739
740=item connect SOCKET,NAME
741
742Attempts to connect to a remote socket, just as the connect system call
19799a22 743does. Returns true if it succeeded, false otherwise. NAME should be a
4633a7c4
LW
744packed address of the appropriate type for the socket. See the examples in
745L<perlipc/"Sockets: Client/Server Communication">.
a0d0e21e 746
cb1a09d0
AD
747=item continue BLOCK
748
749Actually a flow control statement rather than a function. If there is a
98293880
JH
750C<continue> BLOCK attached to a BLOCK (typically in a C<while> or
751C<foreach>), it is always executed just before the conditional is about to
752be evaluated again, just like the third part of a C<for> loop in C. Thus
cb1a09d0
AD
753it can be used to increment a loop variable, even when the loop has been
754continued via the C<next> statement (which is similar to the C C<continue>
755statement).
756
98293880 757C<last>, C<next>, or C<redo> may appear within a C<continue>
19799a22
GS
758block. C<last> and C<redo> will behave as if they had been executed within
759the main block. So will C<next>, but since it will execute a C<continue>
1d2dff63
GS
760block, it may be more entertaining.
761
762 while (EXPR) {
763 ### redo always comes here
764 do_something;
765 } continue {
766 ### next always comes here
767 do_something_else;
768 # then back the top to re-check EXPR
769 }
770 ### last always comes here
771
772Omitting the C<continue> section is semantically equivalent to using an
19799a22 773empty one, logically enough. In that case, C<next> goes directly back
1d2dff63
GS
774to check the condition at the top of the loop.
775
a0d0e21e
LW
776=item cos EXPR
777
5a964f20 778Returns the cosine of EXPR (expressed in radians). If EXPR is omitted,
7660c0ab 779takes cosine of C<$_>.
a0d0e21e 780
ca6e1c26 781For the inverse cosine operation, you may use the C<Math::Trig::acos()>
28757baa 782function, or use this relation:
783
784 sub acos { atan2( sqrt(1 - $_[0] * $_[0]), $_[0] ) }
785
a0d0e21e
LW
786=item crypt PLAINTEXT,SALT
787
f86cebdf 788Encrypts a string exactly like the crypt(3) function in the C library
4633a7c4
LW
789(assuming that you actually have a version there that has not been
790extirpated as a potential munition). This can prove useful for checking
791the password file for lousy passwords, amongst other things. Only the
792guys wearing white hats should do this.
a0d0e21e 793
19799a22 794Note that C<crypt> is intended to be a one-way function, much like breaking
11155c91
CS
795eggs to make an omelette. There is no (known) corresponding decrypt
796function. As a result, this function isn't all that useful for
797cryptography. (For that, see your nearby CPAN mirror.)
2f9daede 798
e71965be
RS
799When verifying an existing encrypted string you should use the encrypted
800text as the salt (like C<crypt($plain, $crypted) eq $crypted>). This
19799a22 801allows your code to work with the standard C<crypt> and with more
e71965be
RS
802exotic implementations. When choosing a new salt create a random two
803character string whose characters come from the set C<[./0-9A-Za-z]>
804(like C<join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64]>).
805
a0d0e21e
LW
806Here's an example that makes sure that whoever runs this program knows
807their own password:
808
809 $pwd = (getpwuid($<))[1];
a0d0e21e
LW
810
811 system "stty -echo";
812 print "Password: ";
e71965be 813 chomp($word = <STDIN>);
a0d0e21e
LW
814 print "\n";
815 system "stty echo";
816
e71965be 817 if (crypt($word, $pwd) ne $pwd) {
a0d0e21e
LW
818 die "Sorry...\n";
819 } else {
820 print "ok\n";
54310121 821 }
a0d0e21e 822
9f8f0c9d 823Of course, typing in your own password to whoever asks you
748a9306 824for it is unwise.
a0d0e21e 825
19799a22
GS
826The L<crypt> function is unsuitable for encrypting large quantities
827of data, not least of all because you can't get the information
828back. Look at the F<by-module/Crypt> and F<by-module/PGP> directories
829on your favorite CPAN mirror for a slew of potentially useful
830modules.
831
aa689395 832=item dbmclose HASH
a0d0e21e 833
19799a22 834[This function has been largely superseded by the C<untie> function.]
a0d0e21e 835
aa689395 836Breaks the binding between a DBM file and a hash.
a0d0e21e 837
19799a22 838=item dbmopen HASH,DBNAME,MASK
a0d0e21e 839
19799a22 840[This function has been largely superseded by the C<tie> function.]
a0d0e21e 841
7b8d334a 842This binds a dbm(3), ndbm(3), sdbm(3), gdbm(3), or Berkeley DB file to a
19799a22
GS
843hash. HASH is the name of the hash. (Unlike normal C<open>, the first
844argument is I<not> a filehandle, even though it looks like one). DBNAME
aa689395 845is the name of the database (without the F<.dir> or F<.pag> extension if
846any). If the database does not exist, it is created with protection
19799a22
GS
847specified by MASK (as modified by the C<umask>). If your system supports
848only the older DBM functions, you may perform only one C<dbmopen> in your
aa689395 849program. In older versions of Perl, if your system had neither DBM nor
19799a22 850ndbm, calling C<dbmopen> produced a fatal error; it now falls back to
aa689395 851sdbm(3).
852
853If you don't have write access to the DBM file, you can only read hash
854variables, not set them. If you want to test whether you can write,
19799a22 855either use file tests or try setting a dummy hash entry inside an C<eval>,
aa689395 856which will trap the error.
a0d0e21e 857
19799a22
GS
858Note that functions such as C<keys> and C<values> may return huge lists
859when used on large DBM files. You may prefer to use the C<each>
a0d0e21e
LW
860function to iterate over large DBM files. Example:
861
862 # print out history file offsets
863 dbmopen(%HIST,'/usr/lib/news/history',0666);
864 while (($key,$val) = each %HIST) {
865 print $key, ' = ', unpack('L',$val), "\n";
866 }
867 dbmclose(%HIST);
868
cb1a09d0 869See also L<AnyDBM_File> for a more general description of the pros and
184e9718 870cons of the various dbm approaches, as well as L<DB_File> for a particularly
cb1a09d0 871rich implementation.
4633a7c4 872
2b5ab1e7
TC
873You can control which DBM library you use by loading that library
874before you call dbmopen():
875
876 use DB_File;
877 dbmopen(%NS_Hist, "$ENV{HOME}/.netscape/history.db")
878 or die "Can't open netscape history file: $!";
879
a0d0e21e
LW
880=item defined EXPR
881
54310121 882=item defined
bbce6d69 883
2f9daede
TP
884Returns a Boolean value telling whether EXPR has a value other than
885the undefined value C<undef>. If EXPR is not present, C<$_> will be
886checked.
887
888Many operations return C<undef> to indicate failure, end of file,
889system error, uninitialized variable, and other exceptional
890conditions. This function allows you to distinguish C<undef> from
891other values. (A simple Boolean test will not distinguish among
7660c0ab 892C<undef>, zero, the empty string, and C<"0">, which are all equally
2f9daede 893false.) Note that since C<undef> is a valid scalar, its presence
19799a22 894doesn't I<necessarily> indicate an exceptional condition: C<pop>
2f9daede
TP
895returns C<undef> when its argument is an empty array, I<or> when the
896element to return happens to be C<undef>.
897
f10b0346
GS
898You may also use C<defined(&func)> to check whether subroutine C<&func>
899has ever been defined. The return value is unaffected by any forward
900declarations of C<&foo>.
901
902Use of C<defined> on aggregates (hashes and arrays) is deprecated. It
903used to report whether memory for that aggregate has ever been
904allocated. This behavior may disappear in future versions of Perl.
905You should instead use a simple test for size:
906
907 if (@an_array) { print "has array elements\n" }
908 if (%a_hash) { print "has hash members\n" }
2f9daede
TP
909
910When used on a hash element, it tells you whether the value is defined,
dc848c6f 911not whether the key exists in the hash. Use L</exists> for the latter
2f9daede 912purpose.
a0d0e21e
LW
913
914Examples:
915
916 print if defined $switch{'D'};
917 print "$val\n" while defined($val = pop(@ary));
918 die "Can't readlink $sym: $!"
919 unless defined($value = readlink $sym);
a0d0e21e 920 sub foo { defined &$bar ? &$bar(@_) : die "No bar"; }
2f9daede 921 $debugging = 0 unless defined $debugging;
a0d0e21e 922
19799a22 923Note: Many folks tend to overuse C<defined>, and then are surprised to
7660c0ab 924discover that the number C<0> and C<""> (the zero-length string) are, in fact,
2f9daede 925defined values. For example, if you say
a5f75d66
AD
926
927 "ab" =~ /a(.*)b/;
928
7660c0ab 929The pattern match succeeds, and C<$1> is defined, despite the fact that it
a5f75d66 930matched "nothing". But it didn't really match nothing--rather, it
2b5ab1e7 931matched something that happened to be zero characters long. This is all
a5f75d66 932very above-board and honest. When a function returns an undefined value,
2f9daede 933it's an admission that it couldn't give you an honest answer. So you
19799a22 934should use C<defined> only when you're questioning the integrity of what
7660c0ab 935you're trying to do. At other times, a simple comparison to C<0> or C<""> is
2f9daede
TP
936what you want.
937
dc848c6f 938See also L</undef>, L</exists>, L</ref>.
2f9daede 939
a0d0e21e
LW
940=item delete EXPR
941
01020589
GS
942Given an expression that specifies a hash element, array element, hash slice,
943or array slice, deletes the specified element(s) from the hash or array.
8216c1fd
GS
944In the case of an array, if the array elements happen to be at the end,
945the size of the array will shrink to the highest element that tests
946true for exists() (or 0 if no such element exists).
a0d0e21e 947
01020589
GS
948Returns each element so deleted or the undefined value if there was no such
949element. Deleting from C<$ENV{}> modifies the environment. Deleting from
950a hash tied to a DBM file deletes the entry from the DBM file. Deleting
951from a C<tie>d hash or array may not necessarily return anything.
952
8ea97a1e
GS
953Deleting an array element effectively returns that position of the array
954to its initial, uninitialized state. Subsequently testing for the same
8216c1fd
GS
955element with exists() will return false. Note that deleting array
956elements in the middle of an array will not shift the index of the ones
957after them down--use splice() for that. See L</exists>.
8ea97a1e 958
01020589 959The following (inefficiently) deletes all the values of %HASH and @ARRAY:
a0d0e21e 960
5f05dabc 961 foreach $key (keys %HASH) {
962 delete $HASH{$key};
a0d0e21e
LW
963 }
964
01020589
GS
965 foreach $index (0 .. $#ARRAY) {
966 delete $ARRAY[$index];
967 }
968
969And so do these:
5f05dabc 970
01020589
GS
971 delete @HASH{keys %HASH};
972
9740c838 973 delete @ARRAY[0 .. $#ARRAY];
5f05dabc 974
2b5ab1e7 975But both of these are slower than just assigning the empty list
01020589
GS
976or undefining %HASH or @ARRAY:
977
978 %HASH = (); # completely empty %HASH
979 undef %HASH; # forget %HASH ever existed
2b5ab1e7 980
01020589
GS
981 @ARRAY = (); # completely empty @ARRAY
982 undef @ARRAY; # forget @ARRAY ever existed
2b5ab1e7
TC
983
984Note that the EXPR can be arbitrarily complicated as long as the final
01020589
GS
985operation is a hash element, array element, hash slice, or array slice
986lookup:
a0d0e21e
LW
987
988 delete $ref->[$x][$y]{$key};
5f05dabc 989 delete @{$ref->[$x][$y]}{$key1, $key2, @morekeys};
a0d0e21e 990
01020589
GS
991 delete $ref->[$x][$y][$index];
992 delete @{$ref->[$x][$y]}[$index1, $index2, @moreindices];
993
a0d0e21e
LW
994=item die LIST
995
19799a22
GS
996Outside an C<eval>, prints the value of LIST to C<STDERR> and
997exits with the current value of C<$!> (errno). If C<$!> is C<0>,
998exits with the value of C<($? E<gt>E<gt> 8)> (backtick `command`
999status). If C<($? E<gt>E<gt> 8)> is C<0>, exits with C<255>. Inside
1000an C<eval(),> the error message is stuffed into C<$@> and the
1001C<eval> is terminated with the undefined value. This makes
1002C<die> the way to raise an exception.
a0d0e21e
LW
1003
1004Equivalent examples:
1005
1006 die "Can't cd to spool: $!\n" unless chdir '/usr/spool/news';
54310121 1007 chdir '/usr/spool/news' or die "Can't cd to spool: $!\n"
a0d0e21e
LW
1008
1009If the value of EXPR does not end in a newline, the current script line
1010number and input line number (if any) are also printed, and a newline
883faa13
GS
1011is supplied. Note that the "input line number" (also known as "chunk")
1012is subject to whatever notion of "line" happens to be currently in
1013effect, and is also available as the special variable C<$.>.
1014See L<perlvar/"$/"> and L<perlvar/"$.">.
1015
1016Hint: sometimes appending C<", stopped"> to your message
7660c0ab 1017will cause it to make better sense when the string C<"at foo line 123"> is
a0d0e21e
LW
1018appended. Suppose you are running script "canasta".
1019
1020 die "/etc/games is no good";
1021 die "/etc/games is no good, stopped";
1022
1023produce, respectively
1024
1025 /etc/games is no good at canasta line 123.
1026 /etc/games is no good, stopped at canasta line 123.
1027
2b5ab1e7 1028See also exit(), warn(), and the Carp module.
a0d0e21e 1029
7660c0ab
A
1030If LIST is empty and C<$@> already contains a value (typically from a
1031previous eval) that value is reused after appending C<"\t...propagated">.
fb73857a 1032This is useful for propagating exceptions:
1033
1034 eval { ... };
1035 die unless $@ =~ /Expected exception/;
1036
7660c0ab 1037If C<$@> is empty then the string C<"Died"> is used.
fb73857a 1038
52531d10
GS
1039die() can also be called with a reference argument. If this happens to be
1040trapped within an eval(), $@ contains the reference. This behavior permits
1041a more elaborate exception handling implementation using objects that
1042maintain arbitary state about the nature of the exception. Such a scheme
1043is sometimes preferable to matching particular string values of $@ using
1044regular expressions. Here's an example:
1045
1046 eval { ... ; die Some::Module::Exception->new( FOO => "bar" ) };
1047 if ($@) {
1048 if (ref($@) && UNIVERSAL::isa($@,"Some::Module::Exception")) {
1049 # handle Some::Module::Exception
1050 }
1051 else {
1052 # handle all other possible exceptions
1053 }
1054 }
1055
19799a22 1056Because perl will stringify uncaught exception messages before displaying
52531d10
GS
1057them, you may want to overload stringification operations on such custom
1058exception objects. See L<overload> for details about that.
1059
19799a22
GS
1060You can arrange for a callback to be run just before the C<die>
1061does its deed, by setting the C<$SIG{__DIE__}> hook. The associated
1062handler will be called with the error text and can change the error
1063message, if it sees fit, by calling C<die> again. See
1064L<perlvar/$SIG{expr}> for details on setting C<%SIG> entries, and
1065L<"eval BLOCK"> for some examples. Although this feature was meant
1066to be run only right before your program was to exit, this is not
1067currently the case--the C<$SIG{__DIE__}> hook is currently called
1068even inside eval()ed blocks/strings! If one wants the hook to do
1069nothing in such situations, put
fb73857a 1070
1071 die @_ if $^S;
1072
19799a22
GS
1073as the first line of the handler (see L<perlvar/$^S>). Because
1074this promotes strange action at a distance, this counterintuitive
1075behavior may be fixed in a future release.
774d564b 1076
a0d0e21e
LW
1077=item do BLOCK
1078
1079Not really a function. Returns the value of the last command in the
1080sequence of commands indicated by BLOCK. When modified by a loop
98293880
JH
1081modifier, executes the BLOCK once before testing the loop condition.
1082(On other statements the loop modifiers test the conditional first.)
a0d0e21e 1083
4968c1e4 1084C<do BLOCK> does I<not> count as a loop, so the loop control statements
2b5ab1e7
TC
1085C<next>, C<last>, or C<redo> cannot be used to leave or restart the block.
1086See L<perlsyn> for alternative strategies.
4968c1e4 1087
a0d0e21e
LW
1088=item do SUBROUTINE(LIST)
1089
1090A deprecated form of subroutine call. See L<perlsub>.
1091
1092=item do EXPR
1093
1094Uses the value of EXPR as a filename and executes the contents of the
1095file as a Perl script. Its primary use is to include subroutines
1096from a Perl subroutine library.
1097
1098 do 'stat.pl';
1099
1100is just like
1101
fb73857a 1102 scalar eval `cat stat.pl`;
a0d0e21e 1103
2b5ab1e7
TC
1104except that it's more efficient and concise, keeps track of the current
1105filename for error messages, searches the @INC libraries, and updates
1106C<%INC> if the file is found. See L<perlvar/Predefined Names> for these
1107variables. It also differs in that code evaluated with C<do FILENAME>
1108cannot see lexicals in the enclosing scope; C<eval STRING> does. It's the
1109same, however, in that it does reparse the file every time you call it,
1110so you probably don't want to do this inside a loop.
a0d0e21e 1111
8e30cc93 1112If C<do> cannot read the file, it returns undef and sets C<$!> to the
2b5ab1e7 1113error. If C<do> can read the file but cannot compile it, it
8e30cc93
MG
1114returns undef and sets an error message in C<$@>. If the file is
1115successfully compiled, C<do> returns the value of the last expression
1116evaluated.
1117
a0d0e21e 1118Note that inclusion of library modules is better done with the
19799a22 1119C<use> and C<require> operators, which also do automatic error checking
4633a7c4 1120and raise an exception if there's a problem.
a0d0e21e 1121
5a964f20
TC
1122You might like to use C<do> to read in a program configuration
1123file. Manual error checking can be done this way:
1124
1125 # read in config files: system first, then user
f86cebdf 1126 for $file ("/share/prog/defaults.rc",
2b5ab1e7
TC
1127 "$ENV{HOME}/.someprogrc")
1128 {
5a964f20 1129 unless ($return = do $file) {
f86cebdf
GS
1130 warn "couldn't parse $file: $@" if $@;
1131 warn "couldn't do $file: $!" unless defined $return;
1132 warn "couldn't run $file" unless $return;
5a964f20
TC
1133 }
1134 }
1135
a0d0e21e
LW
1136=item dump LABEL
1137
1614b0e3
JD
1138=item dump
1139
19799a22
GS
1140This function causes an immediate core dump. See also the B<-u>
1141command-line switch in L<perlrun>, which does the same thing.
1142Primarily this is so that you can use the B<undump> program (not
1143supplied) to turn your core dump into an executable binary after
1144having initialized all your variables at the beginning of the
1145program. When the new binary is executed it will begin by executing
1146a C<goto LABEL> (with all the restrictions that C<goto> suffers).
1147Think of it as a goto with an intervening core dump and reincarnation.
1148If C<LABEL> is omitted, restarts the program from the top.
1149
1150B<WARNING>: Any files opened at the time of the dump will I<not>
1151be open any more when the program is reincarnated, with possible
1152resulting confusion on the part of Perl.
1153
1154This function is now largely obsolete, partly because it's very
1155hard to convert a core file into an executable, and because the
1156real compiler backends for generating portable bytecode and compilable
1157C code have superseded it.
1158
1159If you're looking to use L<dump> to speed up your program, consider
1160generating bytecode or native C code as described in L<perlcc>. If
1161you're just trying to accelerate a CGI script, consider using the
1162C<mod_perl> extension to B<Apache>, or the CPAN module, Fast::CGI.
1163You might also consider autoloading or selfloading, which at least
1164make your program I<appear> to run faster.
5a964f20 1165
aa689395 1166=item each HASH
1167
5a964f20 1168When called in list context, returns a 2-element list consisting of the
aa689395 1169key and value for the next element of a hash, so that you can iterate over
5a964f20 1170it. When called in scalar context, returns the key for only the "next"
e902a979 1171element in the hash.
2f9daede 1172
ab192400
GS
1173Entries are returned in an apparently random order. The actual random
1174order is subject to change in future versions of perl, but it is guaranteed
19799a22 1175to be in the same order as either the C<keys> or C<values> function
ab192400
GS
1176would produce on the same (unmodified) hash.
1177
1178When the hash is entirely read, a null array is returned in list context
19799a22
GS
1179(which when assigned produces a false (C<0>) value), and C<undef> in
1180scalar context. The next call to C<each> after that will start iterating
1181again. There is a single iterator for each hash, shared by all C<each>,
1182C<keys>, and C<values> function calls in the program; it can be reset by
2f9daede
TP
1183reading all the elements from the hash, or by evaluating C<keys HASH> or
1184C<values HASH>. If you add or delete elements of a hash while you're
1185iterating over it, you may get entries skipped or duplicated, so don't.
aa689395 1186
f86cebdf 1187The following prints out your environment like the printenv(1) program,
aa689395 1188only in a different order:
a0d0e21e
LW
1189
1190 while (($key,$value) = each %ENV) {
1191 print "$key=$value\n";
1192 }
1193
19799a22 1194See also C<keys>, C<values> and C<sort>.
a0d0e21e
LW
1195
1196=item eof FILEHANDLE
1197
4633a7c4
LW
1198=item eof ()
1199
a0d0e21e
LW
1200=item eof
1201
1202Returns 1 if the next read on FILEHANDLE will return end of file, or if
1203FILEHANDLE is not open. FILEHANDLE may be an expression whose value
5a964f20 1204gives the real filehandle. (Note that this function actually
19799a22 1205reads a character and then C<ungetc>s it, so isn't very useful in an
748a9306 1206interactive context.) Do not read from a terminal file (or call
19799a22 1207C<eof(FILEHANDLE)> on it) after end-of-file is reached. File types such
748a9306
LW
1208as terminals may lose the end-of-file condition if you do.
1209
820475bd
GS
1210An C<eof> without an argument uses the last file read. Using C<eof()>
1211with empty parentheses is very different. It refers to the pseudo file
1212formed from the files listed on the command line and accessed via the
1213C<E<lt>E<gt>> operator. Since C<E<lt>E<gt>> isn't explicitly opened,
1214as a normal filehandle is, an C<eof()> before C<E<lt>E<gt>> has been
1215used will cause C<@ARGV> to be examined to determine if input is
1216available.
1217
1218In a C<while (E<lt>E<gt>)> loop, C<eof> or C<eof(ARGV)> can be used to
1219detect the end of each file, C<eof()> will only detect the end of the
1220last file. Examples:
a0d0e21e 1221
748a9306
LW
1222 # reset line numbering on each input file
1223 while (<>) {
5a964f20 1224 next if /^\s*#/; # skip comments
748a9306 1225 print "$.\t$_";
5a964f20
TC
1226 } continue {
1227 close ARGV if eof; # Not eof()!
748a9306
LW
1228 }
1229
a0d0e21e
LW
1230 # insert dashes just before last line of last file
1231 while (<>) {
5a964f20 1232 if (eof()) { # check for end of current file
a0d0e21e 1233 print "--------------\n";
2b5ab1e7 1234 close(ARGV); # close or last; is needed if we
748a9306 1235 # are reading from the terminal
a0d0e21e
LW
1236 }
1237 print;
1238 }
1239
a0d0e21e 1240Practical hint: you almost never need to use C<eof> in Perl, because the
3ce0d271
GS
1241input operators typically return C<undef> when they run out of data, or if
1242there was an error.
a0d0e21e
LW
1243
1244=item eval EXPR
1245
1246=item eval BLOCK
1247
c7cc6f1c
GS
1248In the first form, the return value of EXPR is parsed and executed as if it
1249were a little Perl program. The value of the expression (which is itself
5a964f20 1250determined within scalar context) is first parsed, and if there weren't any
c7cc6f1c 1251errors, executed in the context of the current Perl program, so that any
5f05dabc 1252variable settings or subroutine and format definitions remain afterwards.
c7cc6f1c
GS
1253Note that the value is parsed every time the eval executes. If EXPR is
1254omitted, evaluates C<$_>. This form is typically used to delay parsing
1255and subsequent execution of the text of EXPR until run time.
1256
1257In the second form, the code within the BLOCK is parsed only once--at the
1258same time the code surrounding the eval itself was parsed--and executed
1259within the context of the current Perl program. This form is typically
1260used to trap exceptions more efficiently than the first (see below), while
1261also providing the benefit of checking the code within BLOCK at compile
1262time.
1263
1264The final semicolon, if any, may be omitted from the value of EXPR or within
1265the BLOCK.
1266
1267In both forms, the value returned is the value of the last expression
5a964f20 1268evaluated inside the mini-program; a return statement may be also used, just
c7cc6f1c 1269as with subroutines. The expression providing the return value is evaluated
5a964f20 1270in void, scalar, or list context, depending on the context of the eval itself.
c7cc6f1c 1271See L</wantarray> for more on how the evaluation context can be determined.
a0d0e21e 1272
19799a22
GS
1273If there is a syntax error or runtime error, or a C<die> statement is
1274executed, an undefined value is returned by C<eval>, and C<$@> is set to the
a0d0e21e 1275error message. If there was no error, C<$@> is guaranteed to be a null
19799a22 1276string. Beware that using C<eval> neither silences perl from printing
c7cc6f1c
GS
1277warnings to STDERR, nor does it stuff the text of warning messages into C<$@>.
1278To do either of those, you have to use the C<$SIG{__WARN__}> facility. See
1279L</warn> and L<perlvar>.
a0d0e21e 1280
19799a22
GS
1281Note that, because C<eval> traps otherwise-fatal errors, it is useful for
1282determining whether a particular feature (such as C<socket> or C<symlink>)
a0d0e21e
LW
1283is implemented. It is also Perl's exception trapping mechanism, where
1284the die operator is used to raise exceptions.
1285
1286If the code to be executed doesn't vary, you may use the eval-BLOCK
1287form to trap run-time errors without incurring the penalty of
1288recompiling each time. The error, if any, is still returned in C<$@>.
1289Examples:
1290
54310121 1291 # make divide-by-zero nonfatal
a0d0e21e
LW
1292 eval { $answer = $a / $b; }; warn $@ if $@;
1293
1294 # same thing, but less efficient
1295 eval '$answer = $a / $b'; warn $@ if $@;
1296
1297 # a compile-time error
5a964f20 1298 eval { $answer = }; # WRONG
a0d0e21e
LW
1299
1300 # a run-time error
1301 eval '$answer ='; # sets $@
1302
2b5ab1e7
TC
1303Due to the current arguably broken state of C<__DIE__> hooks, when using
1304the C<eval{}> form as an exception trap in libraries, you may wish not
1305to trigger any C<__DIE__> hooks that user code may have installed.
1306You can use the C<local $SIG{__DIE__}> construct for this purpose,
1307as shown in this example:
774d564b 1308
1309 # a very private exception trap for divide-by-zero
f86cebdf
GS
1310 eval { local $SIG{'__DIE__'}; $answer = $a / $b; };
1311 warn $@ if $@;
774d564b 1312
1313This is especially significant, given that C<__DIE__> hooks can call
19799a22 1314C<die> again, which has the effect of changing their error messages:
774d564b 1315
1316 # __DIE__ hooks may modify error messages
1317 {
f86cebdf
GS
1318 local $SIG{'__DIE__'} =
1319 sub { (my $x = $_[0]) =~ s/foo/bar/g; die $x };
c7cc6f1c
GS
1320 eval { die "foo lives here" };
1321 print $@ if $@; # prints "bar lives here"
774d564b 1322 }
1323
19799a22 1324Because this promotes action at a distance, this counterintuitive behavior
2b5ab1e7
TC
1325may be fixed in a future release.
1326
19799a22 1327With an C<eval>, you should be especially careful to remember what's
a0d0e21e
LW
1328being looked at when:
1329
1330 eval $x; # CASE 1
1331 eval "$x"; # CASE 2
1332
1333 eval '$x'; # CASE 3
1334 eval { $x }; # CASE 4
1335
5a964f20 1336 eval "\$$x++"; # CASE 5
a0d0e21e
LW
1337 $$x++; # CASE 6
1338
2f9daede 1339Cases 1 and 2 above behave identically: they run the code contained in
19799a22 1340the variable $x. (Although case 2 has misleading double quotes making
2f9daede 1341the reader wonder what else might be happening (nothing is).) Cases 3
7660c0ab 1342and 4 likewise behave in the same way: they run the code C<'$x'>, which
19799a22 1343does nothing but return the value of $x. (Case 4 is preferred for
2f9daede
TP
1344purely visual reasons, but it also has the advantage of compiling at
1345compile-time instead of at run-time.) Case 5 is a place where
19799a22 1346normally you I<would> like to use double quotes, except that in this
2f9daede
TP
1347particular situation, you can just use symbolic references instead, as
1348in case 6.
a0d0e21e 1349
4968c1e4 1350C<eval BLOCK> does I<not> count as a loop, so the loop control statements
2b5ab1e7 1351C<next>, C<last>, or C<redo> cannot be used to leave or restart the block.
4968c1e4 1352
a0d0e21e
LW
1353=item exec LIST
1354
8bf3b016
GS
1355=item exec PROGRAM LIST
1356
19799a22
GS
1357The C<exec> function executes a system command I<and never returns>--
1358use C<system> instead of C<exec> if you want it to return. It fails and
1359returns false only if the command does not exist I<and> it is executed
fb73857a 1360directly instead of via your system's command shell (see below).
a0d0e21e 1361
19799a22
GS
1362Since it's a common mistake to use C<exec> instead of C<system>, Perl
1363warns you if there is a following statement which isn't C<die>, C<warn>,
1364or C<exit> (if C<-w> is set - but you always do that). If you
1365I<really> want to follow an C<exec> with some other statement, you
55d729e4
GS
1366can use one of these styles to avoid the warning:
1367
5a964f20
TC
1368 exec ('foo') or print STDERR "couldn't exec foo: $!";
1369 { exec ('foo') }; print STDERR "couldn't exec foo: $!";
55d729e4 1370
5a964f20 1371If there is more than one argument in LIST, or if LIST is an array
f86cebdf 1372with more than one value, calls execvp(3) with the arguments in LIST.
5a964f20
TC
1373If there is only one scalar argument or an array with one element in it,
1374the argument is checked for shell metacharacters, and if there are any,
1375the entire argument is passed to the system's command shell for parsing
1376(this is C</bin/sh -c> on Unix platforms, but varies on other platforms).
1377If there are no shell metacharacters in the argument, it is split into
19799a22
GS
1378words and passed directly to C<execvp>, which is more efficient.
1379Examples:
a0d0e21e 1380
19799a22
GS
1381 exec '/bin/echo', 'Your arguments are: ', @ARGV;
1382 exec "sort $outfile | uniq";
a0d0e21e
LW
1383
1384If you don't really want to execute the first argument, but want to lie
1385to the program you are executing about its own name, you can specify
1386the program you actually want to run as an "indirect object" (without a
1387comma) in front of the LIST. (This always forces interpretation of the
54310121 1388LIST as a multivalued list, even if there is only a single scalar in
a0d0e21e
LW
1389the list.) Example:
1390
1391 $shell = '/bin/csh';
1392 exec $shell '-sh'; # pretend it's a login shell
1393
1394or, more directly,
1395
1396 exec {'/bin/csh'} '-sh'; # pretend it's a login shell
1397
bb32b41a
GS
1398When the arguments get executed via the system shell, results will
1399be subject to its quirks and capabilities. See L<perlop/"`STRING`">
1400for details.
1401
19799a22
GS
1402Using an indirect object with C<exec> or C<system> is also more
1403secure. This usage (which also works fine with system()) forces
1404interpretation of the arguments as a multivalued list, even if the
1405list had just one argument. That way you're safe from the shell
1406expanding wildcards or splitting up words with whitespace in them.
5a964f20
TC
1407
1408 @args = ( "echo surprise" );
1409
2b5ab1e7 1410 exec @args; # subject to shell escapes
f86cebdf 1411 # if @args == 1
2b5ab1e7 1412 exec { $args[0] } @args; # safe even with one-arg list
5a964f20
TC
1413
1414The first version, the one without the indirect object, ran the I<echo>
1415program, passing it C<"surprise"> an argument. The second version
1416didn't--it tried to run a program literally called I<"echo surprise">,
1417didn't find it, and set C<$?> to a non-zero value indicating failure.
1418
19799a22 1419Note that C<exec> will not call your C<END> blocks, nor will it call
7660c0ab
A
1420any C<DESTROY> methods in your objects.
1421
a0d0e21e
LW
1422=item exists EXPR
1423
01020589 1424Given an expression that specifies a hash element or array element,
8ea97a1e
GS
1425returns true if the specified element in the hash or array has ever
1426been initialized, even if the corresponding value is undefined. The
1427element is not autovivified if it doesn't exist.
a0d0e21e 1428
01020589
GS
1429 print "Exists\n" if exists $hash{$key};
1430 print "Defined\n" if defined $hash{$key};
1431 print "True\n" if $hash{$key};
1432
1433 print "Exists\n" if exists $array[$index];
1434 print "Defined\n" if defined $array[$index];
1435 print "True\n" if $array[$index];
a0d0e21e 1436
8ea97a1e 1437A hash or array element can be true only if it's defined, and defined if
a0d0e21e
LW
1438it exists, but the reverse doesn't necessarily hold true.
1439
afebc493
GS
1440Given an expression that specifies the name of a subroutine,
1441returns true if the specified subroutine has ever been declared, even
1442if it is undefined. Mentioning a subroutine name for exists or defined
1443does not count as declaring it.
1444
1445 print "Exists\n" if exists &subroutine;
1446 print "Defined\n" if defined &subroutine;
1447
a0d0e21e 1448Note that the EXPR can be arbitrarily complicated as long as the final
afebc493 1449operation is a hash or array key lookup or subroutine name:
a0d0e21e 1450
2b5ab1e7
TC
1451 if (exists $ref->{A}->{B}->{$key}) { }
1452 if (exists $hash{A}{B}{$key}) { }
1453
01020589
GS
1454 if (exists $ref->{A}->{B}->[$ix]) { }
1455 if (exists $hash{A}{B}[$ix]) { }
1456
afebc493
GS
1457 if (exists &{$ref->{A}{B}{$key}}) { }
1458
01020589
GS
1459Although the deepest nested array or hash will not spring into existence
1460just because its existence was tested, any intervening ones will.
1461Thus C<$ref-E<gt>{"A"}> and C<$ref-E<gt>{"A"}-E<gt>{"B"}> will spring
1462into existence due to the existence test for the $key element above.
1463This happens anywhere the arrow operator is used, including even:
5a964f20 1464
2b5ab1e7
TC
1465 undef $ref;
1466 if (exists $ref->{"Some key"}) { }
1467 print $ref; # prints HASH(0x80d3d5c)
1468
1469This surprising autovivification in what does not at first--or even
1470second--glance appear to be an lvalue context may be fixed in a future
5a964f20 1471release.
a0d0e21e 1472
e0478e5a
MS
1473See L<perlref/"Pseudo-hashes"> for specifics on how exists() acts when
1474used on a pseudo-hash.
1475
afebc493
GS
1476Use of a subroutine call, rather than a subroutine name, as an argument
1477to exists() is an error.
1478
1479 exists &sub; # OK
1480 exists &sub(); # Error
1481
a0d0e21e
LW
1482=item exit EXPR
1483
2b5ab1e7 1484Evaluates EXPR and exits immediately with that value. Example:
a0d0e21e
LW
1485
1486 $ans = <STDIN>;
1487 exit 0 if $ans =~ /^[Xx]/;
1488
19799a22 1489See also C<die>. If EXPR is omitted, exits with C<0> status. The only
2b5ab1e7
TC
1490universally recognized values for EXPR are C<0> for success and C<1>
1491for error; other values are subject to interpretation depending on the
1492environment in which the Perl program is running. For example, exiting
149369 (EX_UNAVAILABLE) from a I<sendmail> incoming-mail filter will cause
1494the mailer to return the item undelivered, but that's not true everywhere.
a0d0e21e 1495
19799a22
GS
1496Don't use C<exit> to abort a subroutine if there's any chance that
1497someone might want to trap whatever error happened. Use C<die> instead,
1498which can be trapped by an C<eval>.
28757baa 1499
19799a22 1500The exit() function does not always exit immediately. It calls any
2b5ab1e7 1501defined C<END> routines first, but these C<END> routines may not
19799a22 1502themselves abort the exit. Likewise any object destructors that need to
2b5ab1e7
TC
1503be called are called before the real exit. If this is a problem, you
1504can call C<POSIX:_exit($status)> to avoid END and destructor processing.
87275199 1505See L<perlmod> for details.
5a964f20 1506
a0d0e21e
LW
1507=item exp EXPR
1508
54310121 1509=item exp
bbce6d69 1510
2b5ab1e7 1511Returns I<e> (the natural logarithm base) to the power of EXPR.
a0d0e21e
LW
1512If EXPR is omitted, gives C<exp($_)>.
1513
1514=item fcntl FILEHANDLE,FUNCTION,SCALAR
1515
f86cebdf 1516Implements the fcntl(2) function. You'll probably have to say
a0d0e21e
LW
1517
1518 use Fcntl;
1519
0ade1984 1520first to get the correct constant definitions. Argument processing and
19799a22 1521value return works just like C<ioctl> below.
a0d0e21e
LW
1522For example:
1523
1524 use Fcntl;
5a964f20
TC
1525 fcntl($filehandle, F_GETFL, $packed_return_buffer)
1526 or die "can't fcntl F_GETFL: $!";
1527
19799a22 1528You don't have to check for C<defined> on the return from C<fnctl>.
951ba7fe
GS
1529Like C<ioctl>, it maps a C<0> return from the system call into
1530C<"0 but true"> in Perl. This string is true in boolean context and C<0>
2b5ab1e7
TC
1531in numeric context. It is also exempt from the normal B<-w> warnings
1532on improper numeric conversions.
5a964f20 1533
19799a22 1534Note that C<fcntl> will produce a fatal error if used on a machine that
2b5ab1e7
TC
1535doesn't implement fcntl(2). See the Fcntl module or your fcntl(2)
1536manpage to learn what functions are available on your system.
a0d0e21e
LW
1537
1538=item fileno FILEHANDLE
1539
2b5ab1e7
TC
1540Returns the file descriptor for a filehandle, or undefined if the
1541filehandle is not open. This is mainly useful for constructing
19799a22 1542bitmaps for C<select> and low-level POSIX tty-handling operations.
2b5ab1e7
TC
1543If FILEHANDLE is an expression, the value is taken as an indirect
1544filehandle, generally its name.
5a964f20
TC
1545
1546You can use this to find out whether two handles refer to the
1547same underlying descriptor:
1548
1549 if (fileno(THIS) == fileno(THAT)) {
1550 print "THIS and THAT are dups\n";
1551 }
a0d0e21e
LW
1552
1553=item flock FILEHANDLE,OPERATION
1554
19799a22
GS
1555Calls flock(2), or an emulation of it, on FILEHANDLE. Returns true
1556for success, false on failure. Produces a fatal error if used on a
2b5ab1e7 1557machine that doesn't implement flock(2), fcntl(2) locking, or lockf(3).
19799a22 1558C<flock> is Perl's portable file locking interface, although it locks
2b5ab1e7
TC
1559only entire files, not records.
1560
1561Two potentially non-obvious but traditional C<flock> semantics are
1562that it waits indefinitely until the lock is granted, and that its locks
1563B<merely advisory>. Such discretionary locks are more flexible, but offer
19799a22
GS
1564fewer guarantees. This means that files locked with C<flock> may be
1565modified by programs that do not also use C<flock>. See L<perlport>,
2b5ab1e7
TC
1566your port's specific documentation, or your system-specific local manpages
1567for details. It's best to assume traditional behavior if you're writing
1568portable programs. (But if you're not, you should as always feel perfectly
1569free to write for your own system's idiosyncrasies (sometimes called
1570"features"). Slavish adherence to portability concerns shouldn't get
1571in the way of your getting your job done.)
a3cb178b 1572
8ebc5c01 1573OPERATION is one of LOCK_SH, LOCK_EX, or LOCK_UN, possibly combined with
1574LOCK_NB. These constants are traditionally valued 1, 2, 8 and 4, but
ea3105be 1575you can use the symbolic names if you import them from the Fcntl module,
68dc0745 1576either individually, or as a group using the ':flock' tag. LOCK_SH
1577requests a shared lock, LOCK_EX requests an exclusive lock, and LOCK_UN
ea3105be
GS
1578releases a previously requested lock. If LOCK_NB is bitwise-or'ed with
1579LOCK_SH or LOCK_EX then C<flock> will return immediately rather than blocking
68dc0745 1580waiting for the lock (check the return status to see if you got it).
1581
2b5ab1e7
TC
1582To avoid the possibility of miscoordination, Perl now flushes FILEHANDLE
1583before locking or unlocking it.
8ebc5c01 1584
f86cebdf 1585Note that the emulation built with lockf(3) doesn't provide shared
8ebc5c01 1586locks, and it requires that FILEHANDLE be open with write intent. These
2b5ab1e7 1587are the semantics that lockf(3) implements. Most if not all systems
f86cebdf 1588implement lockf(3) in terms of fcntl(2) locking, though, so the
8ebc5c01 1589differing semantics shouldn't bite too many people.
1590
19799a22
GS
1591Note also that some versions of C<flock> cannot lock things over the
1592network; you would need to use the more system-specific C<fcntl> for
f86cebdf
GS
1593that. If you like you can force Perl to ignore your system's flock(2)
1594function, and so provide its own fcntl(2)-based emulation, by passing
8ebc5c01 1595the switch C<-Ud_flock> to the F<Configure> program when you configure
1596perl.
4633a7c4
LW
1597
1598Here's a mailbox appender for BSD systems.
a0d0e21e 1599
7e1af8bc 1600 use Fcntl ':flock'; # import LOCK_* constants
a0d0e21e
LW
1601
1602 sub lock {
7e1af8bc 1603 flock(MBOX,LOCK_EX);
a0d0e21e
LW
1604 # and, in case someone appended
1605 # while we were waiting...
1606 seek(MBOX, 0, 2);
1607 }
1608
1609 sub unlock {
7e1af8bc 1610 flock(MBOX,LOCK_UN);
a0d0e21e
LW
1611 }
1612
1613 open(MBOX, ">>/usr/spool/mail/$ENV{'USER'}")
1614 or die "Can't open mailbox: $!";
1615
1616 lock();
1617 print MBOX $msg,"\n\n";
1618 unlock();
1619
2b5ab1e7
TC
1620On systems that support a real flock(), locks are inherited across fork()
1621calls, whereas those that must resort to the more capricious fcntl()
1622function lose the locks, making it harder to write servers.
1623
cb1a09d0 1624See also L<DB_File> for other flock() examples.
a0d0e21e
LW
1625
1626=item fork
1627
2b5ab1e7
TC
1628Does a fork(2) system call to create a new process running the
1629same program at the same point. It returns the child pid to the
1630parent process, C<0> to the child process, or C<undef> if the fork is
1631unsuccessful. File descriptors (and sometimes locks on those descriptors)
1632are shared, while everything else is copied. On most systems supporting
1633fork(), great care has gone into making it extremely efficient (for
1634example, using copy-on-write technology on data pages), making it the
1635dominant paradigm for multitasking over the last few decades.
5a964f20 1636
45bc9206 1637All files opened for output are flushed before forking the child process.
a0d0e21e 1638
19799a22 1639If you C<fork> without ever waiting on your children, you will
2b5ab1e7
TC
1640accumulate zombies. On some systems, you can avoid this by setting
1641C<$SIG{CHLD}> to C<"IGNORE">. See also L<perlipc> for more examples of
1642forking and reaping moribund children.
cb1a09d0 1643
28757baa 1644Note that if your forked child inherits system file descriptors like
1645STDIN and STDOUT that are actually connected by a pipe or socket, even
2b5ab1e7 1646if you exit, then the remote server (such as, say, a CGI script or a
19799a22 1647backgrounded job launched from a remote shell) won't think you're done.
2b5ab1e7 1648You should reopen those to F</dev/null> if it's any issue.
28757baa 1649
cb1a09d0
AD
1650=item format
1651
19799a22 1652Declare a picture format for use by the C<write> function. For
cb1a09d0
AD
1653example:
1654
54310121 1655 format Something =
cb1a09d0
AD
1656 Test: @<<<<<<<< @||||| @>>>>>
1657 $str, $%, '$' . int($num)
1658 .
1659
1660 $str = "widget";
184e9718 1661 $num = $cost/$quantity;
cb1a09d0
AD
1662 $~ = 'Something';
1663 write;
1664
1665See L<perlform> for many details and examples.
1666
8903cb82 1667=item formline PICTURE,LIST
a0d0e21e 1668
5a964f20 1669This is an internal function used by C<format>s, though you may call it,
a0d0e21e
LW
1670too. It formats (see L<perlform>) a list of values according to the
1671contents of PICTURE, placing the output into the format output
7660c0ab 1672accumulator, C<$^A> (or C<$ACCUMULATOR> in English).
19799a22 1673Eventually, when a C<write> is done, the contents of
a0d0e21e 1674C<$^A> are written to some filehandle, but you could also read C<$^A>
7660c0ab 1675yourself and then set C<$^A> back to C<"">. Note that a format typically
19799a22 1676does one C<formline> per line of form, but the C<formline> function itself
748a9306 1677doesn't care how many newlines are embedded in the PICTURE. This means
4633a7c4 1678that the C<~> and C<~~> tokens will treat the entire PICTURE as a single line.
748a9306
LW
1679You may therefore need to use multiple formlines to implement a single
1680record format, just like the format compiler.
1681
19799a22 1682Be careful if you put double quotes around the picture, because an C<@>
748a9306 1683character may be taken to mean the beginning of an array name.
19799a22 1684C<formline> always returns true. See L<perlform> for other examples.
a0d0e21e
LW
1685
1686=item getc FILEHANDLE
1687
1688=item getc
1689
1690Returns the next character from the input file attached to FILEHANDLE,
2b5ab1e7
TC
1691or the undefined value at end of file, or if there was an error.
1692If FILEHANDLE is omitted, reads from STDIN. This is not particularly
1693efficient. However, it cannot be used by itself to fetch single
1694characters without waiting for the user to hit enter. For that, try
1695something more like:
4633a7c4
LW
1696
1697 if ($BSD_STYLE) {
1698 system "stty cbreak </dev/tty >/dev/tty 2>&1";
1699 }
1700 else {
54310121 1701 system "stty", '-icanon', 'eol', "\001";
4633a7c4
LW
1702 }
1703
1704 $key = getc(STDIN);
1705
1706 if ($BSD_STYLE) {
1707 system "stty -cbreak </dev/tty >/dev/tty 2>&1";
1708 }
1709 else {
5f05dabc 1710 system "stty", 'icanon', 'eol', '^@'; # ASCII null
4633a7c4
LW
1711 }
1712 print "\n";
1713
54310121 1714Determination of whether $BSD_STYLE should be set
1715is left as an exercise to the reader.
cb1a09d0 1716
19799a22 1717The C<POSIX::getattr> function can do this more portably on
2b5ab1e7
TC
1718systems purporting POSIX compliance. See also the C<Term::ReadKey>
1719module from your nearest CPAN site; details on CPAN can be found on
1720L<perlmodlib/CPAN>.
a0d0e21e
LW
1721
1722=item getlogin
1723
5a964f20
TC
1724Implements the C library function of the same name, which on most
1725systems returns the current login from F</etc/utmp>, if any. If null,
19799a22 1726use C<getpwuid>.
a0d0e21e 1727
f86702cc 1728 $login = getlogin || getpwuid($<) || "Kilroy";
a0d0e21e 1729
19799a22
GS
1730Do not consider C<getlogin> for authentication: it is not as
1731secure as C<getpwuid>.
4633a7c4 1732
a0d0e21e
LW
1733=item getpeername SOCKET
1734
1735Returns the packed sockaddr address of other end of the SOCKET connection.
1736
4633a7c4
LW
1737 use Socket;
1738 $hersockaddr = getpeername(SOCK);
19799a22 1739 ($port, $iaddr) = sockaddr_in($hersockaddr);
4633a7c4
LW
1740 $herhostname = gethostbyaddr($iaddr, AF_INET);
1741 $herstraddr = inet_ntoa($iaddr);
a0d0e21e
LW
1742
1743=item getpgrp PID
1744
47e29363 1745Returns the current process group for the specified PID. Use
7660c0ab 1746a PID of C<0> to get the current process group for the
4633a7c4 1747current process. Will raise an exception if used on a machine that
f86cebdf 1748doesn't implement getpgrp(2). If PID is omitted, returns process
19799a22 1749group of current process. Note that the POSIX version of C<getpgrp>
7660c0ab 1750does not accept a PID argument, so only C<PID==0> is truly portable.
a0d0e21e
LW
1751
1752=item getppid
1753
1754Returns the process id of the parent process.
1755
1756=item getpriority WHICH,WHO
1757
4633a7c4
LW
1758Returns the current priority for a process, a process group, or a user.
1759(See L<getpriority(2)>.) Will raise a fatal exception if used on a
f86cebdf 1760machine that doesn't implement getpriority(2).
a0d0e21e
LW
1761
1762=item getpwnam NAME
1763
1764=item getgrnam NAME
1765
1766=item gethostbyname NAME
1767
1768=item getnetbyname NAME
1769
1770=item getprotobyname NAME
1771
1772=item getpwuid UID
1773
1774=item getgrgid GID
1775
1776=item getservbyname NAME,PROTO
1777
1778=item gethostbyaddr ADDR,ADDRTYPE
1779
1780=item getnetbyaddr ADDR,ADDRTYPE
1781
1782=item getprotobynumber NUMBER
1783
1784=item getservbyport PORT,PROTO
1785
1786=item getpwent
1787
1788=item getgrent
1789
1790=item gethostent
1791
1792=item getnetent
1793
1794=item getprotoent
1795
1796=item getservent
1797
1798=item setpwent
1799
1800=item setgrent
1801
1802=item sethostent STAYOPEN
1803
1804=item setnetent STAYOPEN
1805
1806=item setprotoent STAYOPEN
1807
1808=item setservent STAYOPEN
1809
1810=item endpwent
1811
1812=item endgrent
1813
1814=item endhostent
1815
1816=item endnetent
1817
1818=item endprotoent
1819
1820=item endservent
1821
1822These routines perform the same functions as their counterparts in the
5a964f20 1823system library. In list context, the return values from the
a0d0e21e
LW
1824various get routines are as follows:
1825
1826 ($name,$passwd,$uid,$gid,
6ee623d5 1827 $quota,$comment,$gcos,$dir,$shell,$expire) = getpw*
a0d0e21e
LW
1828 ($name,$passwd,$gid,$members) = getgr*
1829 ($name,$aliases,$addrtype,$length,@addrs) = gethost*
1830 ($name,$aliases,$addrtype,$net) = getnet*
1831 ($name,$aliases,$proto) = getproto*
1832 ($name,$aliases,$port,$proto) = getserv*
1833
1834(If the entry doesn't exist you get a null list.)
1835
5a964f20 1836In scalar context, you get the name, unless the function was a
a0d0e21e
LW
1837lookup by name, in which case you get the other thing, whatever it is.
1838(If the entry doesn't exist you get the undefined value.) For example:
1839
5a964f20
TC
1840 $uid = getpwnam($name);
1841 $name = getpwuid($num);
1842 $name = getpwent();
1843 $gid = getgrnam($name);
1844 $name = getgrgid($num;
1845 $name = getgrent();
1846 #etc.
a0d0e21e 1847
19799a22 1848In I<getpw*()> the fields $quota, $comment, and $expire are
2b5ab1e7 1849special cases in the sense that in many systems they are unsupported.
19799a22
GS
1850If the $quota is unsupported, it is an empty scalar. If it is
1851supported, it usually encodes the disk quota. If the $comment
2b5ab1e7
TC
1852field is unsupported, it is an empty scalar. If it is supported it
1853usually encodes some administrative comment about the user. In some
19799a22
GS
1854systems the $quota field may be $change or $age, fields that have
1855to do with password aging. In some systems the $comment field may
1856be $class. The $expire field, if present, encodes the expiration
2b5ab1e7
TC
1857period of the account or the password. For the availability and the
1858exact meaning of these fields in your system, please consult your
1859getpwnam(3) documentation and your F<pwd.h> file. You can also find
19799a22
GS
1860out from within Perl what your $quota and $comment fields mean
1861and whether you have the $expire field by using the C<Config> module
2b5ab1e7
TC
1862and the values C<d_pwquota>, C<d_pwage>, C<d_pwchange>, C<d_pwcomment>,
1863and C<d_pwexpire>. Shadow password files are only supported if your
1864vendor has implemented them in the intuitive fashion that calling the
1865regular C library routines gets the shadow versions if you're running
1866under privilege. Those that incorrectly implement a separate library
1867call are not supported.
6ee623d5 1868
19799a22 1869The $members value returned by I<getgr*()> is a space separated list of
a0d0e21e
LW
1870the login names of the members of the group.
1871
1872For the I<gethost*()> functions, if the C<h_errno> variable is supported in
1873C, it will be returned to you via C<$?> if the function call fails. The
7660c0ab 1874C<@addrs> value returned by a successful call is a list of the raw
a0d0e21e
LW
1875addresses returned by the corresponding system library call. In the
1876Internet domain, each address is four bytes long and you can unpack it
1877by saying something like:
1878
1879 ($a,$b,$c,$d) = unpack('C4',$addr[0]);
1880
2b5ab1e7
TC
1881The Socket library makes this slightly easier:
1882
1883 use Socket;
1884 $iaddr = inet_aton("127.1"); # or whatever address
1885 $name = gethostbyaddr($iaddr, AF_INET);
1886
1887 # or going the other way
19799a22 1888 $straddr = inet_ntoa($iaddr);
2b5ab1e7 1889
19799a22
GS
1890If you get tired of remembering which element of the return list
1891contains which return value, by-name interfaces are provided
1892in standard modules: C<File::stat>, C<Net::hostent>, C<Net::netent>,
1893C<Net::protoent>, C<Net::servent>, C<Time::gmtime>, C<Time::localtime>,
1894and C<User::grent>. These override the normal built-ins, supplying
1895versions that return objects with the appropriate names
1896for each field. For example:
5a964f20
TC
1897
1898 use File::stat;
1899 use User::pwent;
1900 $is_his = (stat($filename)->uid == pwent($whoever)->uid);
1901
1902Even though it looks like they're the same method calls (uid),
19799a22
GS
1903they aren't, because a C<File::stat> object is different from
1904a C<User::pwent> object.
5a964f20 1905
a0d0e21e
LW
1906=item getsockname SOCKET
1907
19799a22
GS
1908Returns the packed sockaddr address of this end of the SOCKET connection,
1909in case you don't know the address because you have several different
1910IPs that the connection might have come in on.
a0d0e21e 1911
4633a7c4
LW
1912 use Socket;
1913 $mysockaddr = getsockname(SOCK);
19799a22
GS
1914 ($port, $myaddr) = sockaddr_in($mysockaddr);
1915 printf "Connect to %s [%s]\n",
1916 scalar gethostbyaddr($myaddr, AF_INET),
1917 inet_ntoa($myaddr);
a0d0e21e
LW
1918
1919=item getsockopt SOCKET,LEVEL,OPTNAME
1920
5a964f20 1921Returns the socket option requested, or undef if there is an error.
a0d0e21e
LW
1922
1923=item glob EXPR
1924
0a753a76 1925=item glob
1926
2b5ab1e7
TC
1927Returns the value of EXPR with filename expansions such as the
1928standard Unix shell F</bin/csh> would do. This is the internal function
1929implementing the C<E<lt>*.cE<gt>> operator, but you can use it directly.
1930If EXPR is omitted, C<$_> is used. The C<E<lt>*.cE<gt>> operator is
1931discussed in more detail in L<perlop/"I/O Operators">.
a0d0e21e
LW
1932
1933=item gmtime EXPR
1934
19799a22 1935Converts a time as returned by the time function to a 9-element list
54310121 1936with the time localized for the standard Greenwich time zone.
4633a7c4 1937Typically used as follows:
a0d0e21e 1938
54310121 1939 # 0 1 2 3 4 5 6 7 8
a0d0e21e
LW
1940 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
1941 gmtime(time);
1942
19799a22
GS
1943All list elements are numeric, and come straight out of a struct tm.
1944In particular this means that $mon has the range C<0..11> and $wday
1945has the range C<0..6> with sunday as day C<0>. Also, $year is the
1946number of years since 1900, that is, $year is C<123> in year 2023,
2b5ab1e7
TC
1947I<not> simply the last two digits of the year. If you assume it is,
1948then you create non-Y2K-compliant programs--and you wouldn't want to do
1949that, would you?
2f9daede 1950
abd75f24
GS
1951The proper way to get a complete 4-digit year is simply:
1952
1953 $year += 1900;
1954
1955And to get the last two digits of the year (e.g., '01' in 2001) do:
1956
1957 $year = sprintf("%02d", $year % 100);
1958
2f9daede 1959If EXPR is omitted, does C<gmtime(time())>.
a0d0e21e 1960
f86cebdf 1961In scalar context, returns the ctime(3) value:
0a753a76 1962
1963 $now_string = gmtime; # e.g., "Thu Oct 13 04:54:34 1994"
1964
19799a22 1965Also see the C<timegm> function provided by the C<Time::Local> module,
f86cebdf 1966and the strftime(3) function available via the POSIX module.
7660c0ab 1967
2b5ab1e7
TC
1968This scalar value is B<not> locale dependent (see L<perllocale>), but
1969is instead a Perl builtin. Also see the C<Time::Local> module, and the
1970strftime(3) and mktime(3) functions available via the POSIX module. To
7660c0ab
A
1971get somewhat similar but locale dependent date strings, set up your
1972locale environment variables appropriately (please see L<perllocale>)
1973and try for example:
1974
1975 use POSIX qw(strftime);
2b5ab1e7 1976 $now_string = strftime "%a %b %e %H:%M:%S %Y", gmtime;
7660c0ab 1977
2b5ab1e7
TC
1978Note that the C<%a> and C<%b> escapes, which represent the short forms
1979of the day of the week and the month of the year, may not necessarily
1980be three characters wide in all locales.
0a753a76 1981
a0d0e21e
LW
1982=item goto LABEL
1983
748a9306
LW
1984=item goto EXPR
1985
a0d0e21e
LW
1986=item goto &NAME
1987
7660c0ab 1988The C<goto-LABEL> form finds the statement labeled with LABEL and resumes
a0d0e21e 1989execution there. It may not be used to go into any construct that
7660c0ab 1990requires initialization, such as a subroutine or a C<foreach> loop. It
0a753a76 1991also can't be used to go into a construct that is optimized away,
19799a22 1992or to get out of a block or subroutine given to C<sort>.
0a753a76 1993It can be used to go almost anywhere else within the dynamic scope,
a0d0e21e 1994including out of subroutines, but it's usually better to use some other
19799a22 1995construct such as C<last> or C<die>. The author of Perl has never felt the
7660c0ab 1996need to use this form of C<goto> (in Perl, that is--C is another matter).
a0d0e21e 1997
7660c0ab
A
1998The C<goto-EXPR> form expects a label name, whose scope will be resolved
1999dynamically. This allows for computed C<goto>s per FORTRAN, but isn't
748a9306
LW
2000necessarily recommended if you're optimizing for maintainability:
2001
2002 goto ("FOO", "BAR", "GLARCH")[$i];
2003
6cb9131c
GS
2004The C<goto-&NAME> form is quite different from the other forms of C<goto>.
2005In fact, it isn't a goto in the normal sense at all, and doesn't have
2006the stigma associated with other gotos. Instead, it
2007substitutes a call to the named subroutine for the currently running
2008subroutine. This is used by C<AUTOLOAD> subroutines that wish to load
2009another subroutine and then pretend that the other subroutine had been
2010called in the first place (except that any modifications to C<@_>
2011in the current subroutine are propagated to the other subroutine.)
2012After the C<goto>, not even C<caller> will be able to tell that this
2013routine was called first.
2014
2015NAME needn't be the name of a subroutine; it can be a scalar variable
2016containing a code reference, or a block which evaluates to a code
2017reference.
a0d0e21e
LW
2018
2019=item grep BLOCK LIST
2020
2021=item grep EXPR,LIST
2022
2b5ab1e7
TC
2023This is similar in spirit to, but not the same as, grep(1) and its
2024relatives. In particular, it is not limited to using regular expressions.
2f9daede 2025
a0d0e21e 2026Evaluates the BLOCK or EXPR for each element of LIST (locally setting
7660c0ab 2027C<$_> to each element) and returns the list value consisting of those
19799a22
GS
2028elements for which the expression evaluated to true. In scalar
2029context, returns the number of times the expression was true.
a0d0e21e
LW
2030
2031 @foo = grep(!/^#/, @bar); # weed out comments
2032
2033or equivalently,
2034
2035 @foo = grep {!/^#/} @bar; # weed out comments
2036
2b5ab1e7
TC
2037Note that, because C<$_> is a reference into the list value, it can
2038be used to modify the elements of the array. While this is useful and
2039supported, it can cause bizarre results if the LIST is not a named array.
2040Similarly, grep returns aliases into the original list, much as a for
2041loop's index variable aliases the list elements. That is, modifying an
19799a22
GS
2042element of a list returned by grep (for example, in a C<foreach>, C<map>
2043or another C<grep>) actually modifies the element in the original list.
2b5ab1e7 2044This is usually something to be avoided when writing clear code.
a0d0e21e 2045
19799a22 2046See also L</map> for a list composed of the results of the BLOCK or EXPR.
38325410 2047
a0d0e21e
LW
2048=item hex EXPR
2049
54310121 2050=item hex
bbce6d69 2051
2b5ab1e7
TC
2052Interprets EXPR as a hex string and returns the corresponding value.
2053(To convert strings that might start with either 0, 0x, or 0b, see
2054L</oct>.) If EXPR is omitted, uses C<$_>.
2f9daede
TP
2055
2056 print hex '0xAf'; # prints '175'
2057 print hex 'aF'; # same
a0d0e21e 2058
19799a22 2059Hex strings may only represent integers. Strings that would cause
c6edd1b7 2060integer overflow trigger a warning.
19799a22 2061
a0d0e21e
LW
2062=item import
2063
19799a22 2064There is no builtin C<import> function. It is just an ordinary
4633a7c4 2065method (subroutine) defined (or inherited) by modules that wish to export
19799a22 2066names to another module. The C<use> function calls the C<import> method
54310121 2067for the package used. See also L</use()>, L<perlmod>, and L<Exporter>.
a0d0e21e
LW
2068
2069=item index STR,SUBSTR,POSITION
2070
2071=item index STR,SUBSTR
2072
2b5ab1e7
TC
2073The index function searches for one string within another, but without
2074the wildcard-like behavior of a full regular-expression pattern match.
2075It returns the position of the first occurrence of SUBSTR in STR at
2076or after POSITION. If POSITION is omitted, starts searching from the
2077beginning of the string. The return value is based at C<0> (or whatever
2078you've set the C<$[> variable to--but don't do that). If the substring
2079is not found, returns one less than the base, ordinarily C<-1>.
a0d0e21e
LW
2080
2081=item int EXPR
2082
54310121 2083=item int
bbce6d69 2084
7660c0ab 2085Returns the integer portion of EXPR. If EXPR is omitted, uses C<$_>.
2b5ab1e7
TC
2086You should not use this function for rounding: one because it truncates
2087towards C<0>, and two because machine representations of floating point
2088numbers can sometimes produce counterintuitive results. For example,
2089C<int(-6.725/0.025)> produces -268 rather than the correct -269; that's
2090because it's really more like -268.99999999999994315658 instead. Usually,
19799a22 2091the C<sprintf>, C<printf>, or the C<POSIX::floor> and C<POSIX::ceil>
2b5ab1e7 2092functions will serve you better than will int().
a0d0e21e
LW
2093
2094=item ioctl FILEHANDLE,FUNCTION,SCALAR
2095
2b5ab1e7 2096Implements the ioctl(2) function. You'll probably first have to say
a0d0e21e 2097
4633a7c4 2098 require "ioctl.ph"; # probably in /usr/local/lib/perl/ioctl.ph
a0d0e21e 2099
2b5ab1e7 2100to get the correct function definitions. If F<ioctl.ph> doesn't
a0d0e21e 2101exist or doesn't have the correct definitions you'll have to roll your
4633a7c4 2102own, based on your C header files such as F<E<lt>sys/ioctl.hE<gt>>.
5a964f20 2103(There is a Perl script called B<h2ph> that comes with the Perl kit that
54310121 2104may help you in this, but it's nontrivial.) SCALAR will be read and/or
4633a7c4 2105written depending on the FUNCTION--a pointer to the string value of SCALAR
19799a22 2106will be passed as the third argument of the actual C<ioctl> call. (If SCALAR
4633a7c4
LW
2107has no string value but does have a numeric value, that value will be
2108passed rather than a pointer to the string value. To guarantee this to be
19799a22
GS
2109true, add a C<0> to the scalar before using it.) The C<pack> and C<unpack>
2110functions may be needed to manipulate the values of structures used by
2111C<ioctl>.
a0d0e21e 2112
19799a22 2113The return value of C<ioctl> (and C<fcntl>) is as follows:
a0d0e21e
LW
2114
2115 if OS returns: then Perl returns:
2116 -1 undefined value
2117 0 string "0 but true"
2118 anything else that number
2119
19799a22 2120Thus Perl returns true on success and false on failure, yet you can
a0d0e21e
LW
2121still easily determine the actual value returned by the operating
2122system:
2123
2b5ab1e7 2124 $retval = ioctl(...) || -1;
a0d0e21e
LW
2125 printf "System returned %d\n", $retval;
2126
c2611fb3 2127The special string "C<0> but true" is exempt from B<-w> complaints
5a964f20
TC
2128about improper numeric conversions.
2129
19799a22
GS
2130Here's an example of setting a filehandle named C<REMOTE> to be
2131non-blocking at the system level. You'll have to negotiate C<$|>
2132on your own, though.
2133
2134 use Fcntl qw(F_GETFL F_SETFL O_NONBLOCK);
2135
2136 $flags = fcntl(REMOTE, F_GETFL, 0)
2137 or die "Can't get flags for the socket: $!\n";
2138
2139 $flags = fcntl(REMOTE, F_SETFL, $flags | O_NONBLOCK)
2140 or die "Can't set flags for the socket: $!\n";
2141
a0d0e21e
LW
2142=item join EXPR,LIST
2143
2b5ab1e7
TC
2144Joins the separate strings of LIST into a single string with fields
2145separated by the value of EXPR, and returns that new string. Example:
a0d0e21e 2146
2b5ab1e7 2147 $rec = join(':', $login,$passwd,$uid,$gid,$gcos,$home,$shell);
a0d0e21e 2148
eb6e2d6f
GS
2149Beware that unlike C<split>, C<join> doesn't take a pattern as its
2150first argument. Compare L</split>.
a0d0e21e 2151
aa689395 2152=item keys HASH
2153
19799a22 2154Returns a list consisting of all the keys of the named hash. (In
1d2dff63 2155scalar context, returns the number of keys.) The keys are returned in
ab192400
GS
2156an apparently random order. The actual random order is subject to
2157change in future versions of perl, but it is guaranteed to be the same
19799a22 2158order as either the C<values> or C<each> function produces (given
ab192400
GS
2159that the hash has not been modified). As a side effect, it resets
2160HASH's iterator.
a0d0e21e 2161
aa689395 2162Here is yet another way to print your environment:
a0d0e21e
LW
2163
2164 @keys = keys %ENV;
2165 @values = values %ENV;
19799a22 2166 while (@keys) {
a0d0e21e
LW
2167 print pop(@keys), '=', pop(@values), "\n";
2168 }
2169
2170or how about sorted by key:
2171
2172 foreach $key (sort(keys %ENV)) {
2173 print $key, '=', $ENV{$key}, "\n";
2174 }
2175
19799a22 2176To sort a hash by value, you'll need to use a C<sort> function.
aa689395 2177Here's a descending numeric sort of a hash by its values:
4633a7c4 2178
5a964f20 2179 foreach $key (sort { $hash{$b} <=> $hash{$a} } keys %hash) {
4633a7c4
LW
2180 printf "%4d %s\n", $hash{$key}, $key;
2181 }
2182
19799a22 2183As an lvalue C<keys> allows you to increase the number of hash buckets
aa689395 2184allocated for the given hash. This can gain you a measure of efficiency if
2185you know the hash is going to get big. (This is similar to pre-extending
2186an array by assigning a larger number to $#array.) If you say
55497cff 2187
2188 keys %hash = 200;
2189
ab192400
GS
2190then C<%hash> will have at least 200 buckets allocated for it--256 of them,
2191in fact, since it rounds up to the next power of two. These
55497cff 2192buckets will be retained even if you do C<%hash = ()>, use C<undef
2193%hash> if you want to free the storage while C<%hash> is still in scope.
2194You can't shrink the number of buckets allocated for the hash using
19799a22 2195C<keys> in this way (but you needn't worry about doing this by accident,
55497cff 2196as trying has no effect).
2197
19799a22 2198See also C<each>, C<values> and C<sort>.
ab192400 2199
b350dd2f 2200=item kill SIGNAL, LIST
a0d0e21e 2201
b350dd2f 2202Sends a signal to a list of processes. Returns the number of
517db077
GS
2203processes successfully signaled (which is not necessarily the
2204same as the number actually killed).
a0d0e21e
LW
2205
2206 $cnt = kill 1, $child1, $child2;
2207 kill 9, @goners;
2208
b350dd2f
GS
2209If SIGNAL is zero, no signal is sent to the process. This is a
2210useful way to check that the process is alive and hasn't changed
2211its UID. See L<perlport> for notes on the portability of this
2212construct.
2213
2214Unlike in the shell, if SIGNAL is negative, it kills
4633a7c4
LW
2215process groups instead of processes. (On System V, a negative I<PROCESS>
2216number will also kill process groups, but that's not portable.) That
2217means you usually want to use positive not negative signals. You may also
da0045b7 2218use a signal name in quotes. See L<perlipc/"Signals"> for details.
a0d0e21e
LW
2219
2220=item last LABEL
2221
2222=item last
2223
2224The C<last> command is like the C<break> statement in C (as used in
2225loops); it immediately exits the loop in question. If the LABEL is
2226omitted, the command refers to the innermost enclosing loop. The
2227C<continue> block, if any, is not executed:
2228
4633a7c4
LW
2229 LINE: while (<STDIN>) {
2230 last LINE if /^$/; # exit when done with header
5a964f20 2231 #...
a0d0e21e
LW
2232 }
2233
4968c1e4 2234C<last> cannot be used to exit a block which returns a value such as
2b5ab1e7
TC
2235C<eval {}>, C<sub {}> or C<do {}>, and should not be used to exit
2236a grep() or map() operation.
4968c1e4 2237
6c1372ed
GS
2238Note that a block by itself is semantically identical to a loop
2239that executes once. Thus C<last> can be used to effect an early
2240exit out of such a block.
2241
98293880
JH
2242See also L</continue> for an illustration of how C<last>, C<next>, and
2243C<redo> work.
1d2dff63 2244
a0d0e21e
LW
2245=item lc EXPR
2246
54310121 2247=item lc
bbce6d69 2248
a0d0e21e 2249Returns an lowercased version of EXPR. This is the internal function
7660c0ab 2250implementing the C<\L> escape in double-quoted strings.
19799a22
GS
2251Respects current LC_CTYPE locale if C<use locale> in force. See L<perllocale>
2252and L<utf8>.
a0d0e21e 2253
7660c0ab 2254If EXPR is omitted, uses C<$_>.
bbce6d69 2255
a0d0e21e
LW
2256=item lcfirst EXPR
2257
54310121 2258=item lcfirst
bbce6d69 2259
a0d0e21e 2260Returns the value of EXPR with the first character lowercased. This is
7660c0ab 2261the internal function implementing the C<\l> escape in double-quoted strings.
a0ed51b3 2262Respects current LC_CTYPE locale if C<use locale> in force. See L<perllocale>.
a0d0e21e 2263
7660c0ab 2264If EXPR is omitted, uses C<$_>.
bbce6d69 2265
a0d0e21e
LW
2266=item length EXPR
2267
54310121 2268=item length
bbce6d69 2269
a0ed51b3 2270Returns the length in characters of the value of EXPR. If EXPR is
2b5ab1e7
TC
2271omitted, returns length of C<$_>. Note that this cannot be used on
2272an entire array or hash to find out how many elements these have.
2273For that, use C<scalar @array> and C<scalar keys %hash> respectively.
a0d0e21e
LW
2274
2275=item link OLDFILE,NEWFILE
2276
19799a22
GS
2277Creates a new filename linked to the old filename. Returns true for
2278success, false otherwise.
a0d0e21e
LW
2279
2280=item listen SOCKET,QUEUESIZE
2281
19799a22
GS
2282Does the same thing that the listen system call does. Returns true if
2283it succeeded, false otherwise. See the example in L<perlipc/"Sockets: Client/Server Communication">.
a0d0e21e
LW
2284
2285=item local EXPR
2286
19799a22 2287You really probably want to be using C<my> instead, because C<local> isn't
2b5ab1e7
TC
2288what most people think of as "local". See L<perlsub/"Private Variables
2289via my()"> for details.
2290
5a964f20
TC
2291A local modifies the listed variables to be local to the enclosing
2292block, file, or eval. If more than one value is listed, the list must
2293be placed in parentheses. See L<perlsub/"Temporary Values via local()">
2294for details, including issues with tied arrays and hashes.
a0d0e21e 2295
a0d0e21e
LW
2296=item localtime EXPR
2297
19799a22 2298Converts a time as returned by the time function to a 9-element list
5f05dabc 2299with the time analyzed for the local time zone. Typically used as
a0d0e21e
LW
2300follows:
2301
54310121 2302 # 0 1 2 3 4 5 6 7 8
a0d0e21e
LW
2303 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
2304 localtime(time);
2305
19799a22
GS
2306All list elements are numeric, and come straight out of a struct tm.
2307In particular this means that $mon has the range C<0..11> and $wday
2308has the range C<0..6> with sunday as day C<0>. Also, $year is the
2309number of years since 1900, that is, $year is C<123> in year 2023,
2b5ab1e7
TC
2310and I<not> simply the last two digits of the year. If you assume it is,
2311then you create non-Y2K-compliant programs--and you wouldn't want to do
2312that, would you?
54310121 2313
abd75f24
GS
2314The proper way to get a complete 4-digit year is simply:
2315
2316 $year += 1900;
2317
2318And to get the last two digits of the year (e.g., '01' in 2001) do:
2319
2320 $year = sprintf("%02d", $year % 100);
2321
54310121 2322If EXPR is omitted, uses the current time (C<localtime(time)>).
a0d0e21e 2323
f86cebdf 2324In scalar context, returns the ctime(3) value:
a0d0e21e 2325
5f05dabc 2326 $now_string = localtime; # e.g., "Thu Oct 13 04:54:34 1994"
a0d0e21e 2327
a3cb178b 2328This scalar value is B<not> locale dependent, see L<perllocale>, but
68f8bed4
JH
2329instead a Perl builtin. Also see the C<Time::Local> module
2330(to convert the second, minutes, hours, ... back to seconds since the
2331stroke of midnight the 1st of January 1970, the value returned by
ca6e1c26 2332time()), and the strftime(3) and mktime(3) functions available via the
68f8bed4
JH
2333POSIX module. To get somewhat similar but locale dependent date
2334strings, set up your locale environment variables appropriately
2335(please see L<perllocale>) and try for example:
a3cb178b 2336
5a964f20 2337 use POSIX qw(strftime);
2b5ab1e7 2338 $now_string = strftime "%a %b %e %H:%M:%S %Y", localtime;
a3cb178b
GS
2339
2340Note that the C<%a> and C<%b>, the short forms of the day of the week
2341and the month of the year, may not necessarily be three characters wide.
a0d0e21e 2342
19799a22
GS
2343=item lock
2344
2345 lock I<THING>
2346
2347This function places an advisory lock on a variable, subroutine,
2348or referenced object contained in I<THING> until the lock goes out
2349of scope. This is a built-in function only if your version of Perl
2350was built with threading enabled, and if you've said C<use Threads>.
2351Otherwise a user-defined function by this name will be called. See
2352L<Thread>.
2353
a0d0e21e
LW
2354=item log EXPR
2355
54310121 2356=item log
bbce6d69 2357
2b5ab1e7
TC
2358Returns the natural logarithm (base I<e>) of EXPR. If EXPR is omitted,
2359returns log of C<$_>. To get the log of another base, use basic algebra:
19799a22 2360The base-N log of a number is equal to the natural log of that number
2b5ab1e7
TC
2361divided by the natural log of N. For example:
2362
2363 sub log10 {
2364 my $n = shift;
2365 return log($n)/log(10);
2366 }
2367
2368See also L</exp> for the inverse operation.
a0d0e21e
LW
2369
2370=item lstat FILEHANDLE
2371
2372=item lstat EXPR
2373
54310121 2374=item lstat
bbce6d69 2375
19799a22 2376Does the same thing as the C<stat> function (including setting the
5a964f20
TC
2377special C<_> filehandle) but stats a symbolic link instead of the file
2378the symbolic link points to. If symbolic links are unimplemented on
19799a22 2379your system, a normal C<stat> is done.
a0d0e21e 2380
7660c0ab 2381If EXPR is omitted, stats C<$_>.
bbce6d69 2382
a0d0e21e
LW
2383=item m//
2384
2385The match operator. See L<perlop>.
2386
2387=item map BLOCK LIST
2388
2389=item map EXPR,LIST
2390
19799a22
GS
2391Evaluates the BLOCK or EXPR for each element of LIST (locally setting
2392C<$_> to each element) and returns the list value composed of the
2393results of each such evaluation. In scalar context, returns the
2394total number of elements so generated. Evaluates BLOCK or EXPR in
2395list context, so each element of LIST may produce zero, one, or
2396more elements in the returned value.
dd99ebda 2397
a0d0e21e
LW
2398 @chars = map(chr, @nums);
2399
2400translates a list of numbers to the corresponding characters. And
2401
4633a7c4 2402 %hash = map { getkey($_) => $_ } @array;
a0d0e21e
LW
2403
2404is just a funny way to write
2405
2406 %hash = ();
2407 foreach $_ (@array) {
4633a7c4 2408 $hash{getkey($_)} = $_;
a0d0e21e
LW
2409 }
2410
2b5ab1e7
TC
2411Note that, because C<$_> is a reference into the list value, it can
2412be used to modify the elements of the array. While this is useful and
2413supported, it can cause bizarre results if the LIST is not a named array.
2414Using a regular C<foreach> loop for this purpose would be clearer in
2415most cases. See also L</grep> for an array composed of those items of
2416the original list for which the BLOCK or EXPR evaluates to true.
fb73857a 2417
19799a22 2418=item mkdir FILENAME,MASK
a0d0e21e 2419
5a211162
GS
2420=item mkdir FILENAME
2421
0591cd52 2422Creates the directory specified by FILENAME, with permissions
19799a22
GS
2423specified by MASK (as modified by C<umask>). If it succeeds it
2424returns true, otherwise it returns false and sets C<$!> (errno).
5a211162 2425If omitted, MASK defaults to 0777.
0591cd52 2426
19799a22 2427In general, it is better to create directories with permissive MASK,
0591cd52 2428and let the user modify that with their C<umask>, than it is to supply
19799a22 2429a restrictive MASK and give the user no way to be more permissive.
0591cd52
NT
2430The exceptions to this rule are when the file or directory should be
2431kept private (mail files, for instance). The perlfunc(1) entry on
19799a22 2432C<umask> discusses the choice of MASK in more detail.
a0d0e21e
LW
2433
2434=item msgctl ID,CMD,ARG
2435
f86cebdf 2436Calls the System V IPC function msgctl(2). You'll probably have to say
0ade1984
JH
2437
2438 use IPC::SysV;
2439
7660c0ab
A
2440first to get the correct constant definitions. If CMD is C<IPC_STAT>,
2441then ARG must be a variable which will hold the returned C<msqid_ds>
951ba7fe
GS
2442structure. Returns like C<ioctl>: the undefined value for error,
2443C<"0 but true"> for zero, or the actual return value otherwise. See also
19799a22 2444C<IPC::SysV> and C<IPC::Semaphore> documentation.
a0d0e21e
LW
2445
2446=item msgget KEY,FLAGS
2447
f86cebdf 2448Calls the System V IPC function msgget(2). Returns the message queue
7660c0ab 2449id, or the undefined value if there is an error. See also C<IPC::SysV>
19799a22 2450and C<IPC::Msg> documentation.
a0d0e21e
LW
2451
2452=item msgsnd ID,MSG,FLAGS
2453
2454Calls the System V IPC function msgsnd to send the message MSG to the
2455message queue ID. MSG must begin with the long integer message type,
19799a22
GS
2456which may be created with C<pack("l", $type)>. Returns true if
2457successful, or false if there is an error. See also C<IPC::SysV>
7660c0ab 2458and C<IPC::SysV::Msg> documentation.
a0d0e21e
LW
2459
2460=item msgrcv ID,VAR,SIZE,TYPE,FLAGS
2461
2462Calls the System V IPC function msgrcv to receive a message from
2463message queue ID into variable VAR with a maximum message size of
0ade1984
JH
2464SIZE. Note that if a message is received, the message type will be
2465the first thing in VAR, and the maximum length of VAR is SIZE plus the
19799a22 2466size of the message type. Returns true if successful, or false if
7660c0ab 2467there is an error. See also C<IPC::SysV> and C<IPC::SysV::Msg> documentation.
a0d0e21e
LW
2468
2469=item my EXPR
2470
09bef843
SB
2471=item my EXPR : ATTRIBUTES
2472
19799a22
GS
2473A C<my> declares the listed variables to be local (lexically) to the
2474enclosing block, file, or C<eval>. If
5f05dabc 2475more than one value is listed, the list must be placed in parentheses. See
cb1a09d0 2476L<perlsub/"Private Variables via my()"> for details.
4633a7c4 2477
a0d0e21e
LW
2478=item next LABEL
2479
2480=item next
2481
2482The C<next> command is like the C<continue> statement in C; it starts
2483the next iteration of the loop:
2484
4633a7c4
LW
2485 LINE: while (<STDIN>) {
2486 next LINE if /^#/; # discard comments
5a964f20 2487 #...
a0d0e21e
LW
2488 }
2489
2490Note that if there were a C<continue> block on the above, it would get
2491executed even on discarded lines. If the LABEL is omitted, the command
2492refers to the innermost enclosing loop.
2493
4968c1e4 2494C<next> cannot be used to exit a block which returns a value such as
2b5ab1e7
TC
2495C<eval {}>, C<sub {}> or C<do {}>, and should not be used to exit
2496a grep() or map() operation.
4968c1e4 2497
6c1372ed
GS
2498Note that a block by itself is semantically identical to a loop
2499that executes once. Thus C<next> will exit such a block early.
2500
98293880
JH
2501See also L</continue> for an illustration of how C<last>, C<next>, and
2502C<redo> work.
1d2dff63 2503
a0d0e21e
LW
2504=item no Module LIST
2505
7660c0ab 2506See the L</use> function, which C<no> is the opposite of.
a0d0e21e
LW
2507
2508=item oct EXPR
2509
54310121 2510=item oct
bbce6d69 2511
4633a7c4 2512Interprets EXPR as an octal string and returns the corresponding
4f19785b
WSI
2513value. (If EXPR happens to start off with C<0x>, interprets it as a
2514hex string. If EXPR starts off with C<0b>, it is interpreted as a
2515binary string.) The following will handle decimal, binary, octal, and
4633a7c4 2516hex in the standard Perl or C notation:
a0d0e21e
LW
2517
2518 $val = oct($val) if $val =~ /^0/;
2519
19799a22
GS
2520If EXPR is omitted, uses C<$_>. To go the other way (produce a number
2521in octal), use sprintf() or printf():
2522
2523 $perms = (stat("filename"))[2] & 07777;
2524 $oct_perms = sprintf "%lo", $perms;
2525
2526The oct() function is commonly used when a string such as C<644> needs
2527to be converted into a file mode, for example. (Although perl will
2528automatically convert strings into numbers as needed, this automatic
2529conversion assumes base 10.)
a0d0e21e 2530
6170680b
IZ
2531=item open FILEHANDLE,MODE,EXPR
2532
a0d0e21e
LW
2533=item open FILEHANDLE,EXPR
2534
2535=item open FILEHANDLE
2536
2537Opens the file whose filename is given by EXPR, and associates it with
5f05dabc 2538FILEHANDLE. If FILEHANDLE is an expression, its value is used as the
2539name of the real filehandle wanted. If EXPR is omitted, the scalar
2540variable of the same name as the FILEHANDLE contains the filename.
19799a22
GS
2541(Note that lexical variables--those declared with C<my>--will not work
2542for this purpose; so if you're using C<my>, specify EXPR in your call
2b5ab1e7
TC
2543to open.) See L<perlopentut> for a kinder, gentler explanation of opening
2544files.
5f05dabc 2545
6170680b
IZ
2546If MODE is C<'E<lt>'> or nothing, the file is opened for input.
2547If MODE is C<'E<gt>'>, the file is truncated and opened for
2548output, being created if necessary. If MODE is C<'E<gt>E<gt>'>,
fbb426e4 2549the file is opened for appending, again being created if necessary.
7660c0ab
A
2550You can put a C<'+'> in front of the C<'E<gt>'> or C<'E<lt>'> to indicate that
2551you want both read and write access to the file; thus C<'+E<lt>'> is almost
2552always preferred for read/write updates--the C<'+E<gt>'> mode would clobber the
5a964f20
TC
2553file first. You can't usually use either read-write mode for updating
2554textfiles, since they have variable length records. See the B<-i>
0591cd52
NT
2555switch in L<perlrun> for a better approach. The file is created with
2556permissions of C<0666> modified by the process' C<umask> value.
5a964f20 2557
f86cebdf 2558These various prefixes correspond to the fopen(3) modes of C<'r'>, C<'r+'>, C<'w'>,
7660c0ab 2559C<'w+'>, C<'a'>, and C<'a+'>.
5f05dabc 2560
6170680b
IZ
2561In the 2-arguments (and 1-argument) form of the call the mode and
2562filename should be concatenated (in this order), possibly separated by
2563spaces. It is possible to omit the mode if the mode is C<'E<lt>'>.
2564
7660c0ab 2565If the filename begins with C<'|'>, the filename is interpreted as a
5a964f20 2566command to which output is to be piped, and if the filename ends with a
f244e06d
GS
2567C<'|'>, the filename is interpreted as a command which pipes output to
2568us. See L<perlipc/"Using open() for IPC">
19799a22 2569for more examples of this. (You are not allowed to C<open> to a command
5a964f20
TC
2570that pipes both in I<and> out, but see L<IPC::Open2>, L<IPC::Open3>,
2571and L<perlipc/"Bidirectional Communication"> for alternatives.)
cb1a09d0 2572
6170680b
IZ
2573If MODE is C<'|-'>, the filename is interpreted as a
2574command to which output is to be piped, and if MODE is
2575C<'-|'>, the filename is interpreted as a command which pipes output to
2576us. In the 2-arguments (and 1-argument) form one should replace dash
2577(C<'-'>) with the command. See L<perlipc/"Using open() for IPC">
2578for more examples of this. (You are not allowed to C<open> to a command
2579that pipes both in I<and> out, but see L<IPC::Open2>, L<IPC::Open3>,
2580and L<perlipc/"Bidirectional Communication"> for alternatives.)
2581
2582In the 2-arguments (and 1-argument) form opening C<'-'> opens STDIN
2583and opening C<'E<gt>-'> opens STDOUT.
2584
2585Open returns
19799a22 2586nonzero upon success, the undefined value otherwise. If the C<open>
4633a7c4 2587involved a pipe, the return value happens to be the pid of the
54310121 2588subprocess.
cb1a09d0
AD
2589
2590If you're unfortunate enough to be running Perl on a system that
2591distinguishes between text files and binary files (modern operating
2592systems don't care), then you should check out L</binmode> for tips for
19799a22 2593dealing with this. The key distinction between systems that need C<binmode>
5a964f20
TC
2594and those that don't is their text file formats. Systems like Unix, MacOS, and
2595Plan9, which delimit lines with a single character, and which encode that
19799a22 2596character in C as C<"\n">, do not need C<binmode>. The rest need it.
cb1a09d0 2597
fb73857a 2598When opening a file, it's usually a bad idea to continue normal execution
19799a22
GS
2599if the request failed, so C<open> is frequently used in connection with
2600C<die>. Even if C<die> won't do what you want (say, in a CGI script,
fb73857a 2601where you want to make a nicely formatted error message (but there are
5a964f20 2602modules that can help with that problem)) you should always check
19799a22 2603the return value from opening a file. The infrequent exception is when
fb73857a 2604working with an unopened filehandle is actually what you want to do.
2605
cb1a09d0 2606Examples:
a0d0e21e
LW
2607
2608 $ARTICLE = 100;
2609 open ARTICLE or die "Can't find article $ARTICLE: $!\n";
2610 while (<ARTICLE>) {...
2611
6170680b 2612 open(LOG, '>>/usr/spool/news/twitlog'); # (log is reserved)
fb73857a 2613 # if the open fails, output is discarded
a0d0e21e 2614
6170680b 2615 open(DBASE, '+<', 'dbase.mine') # open for update
fb73857a 2616 or die "Can't open 'dbase.mine' for update: $!";
cb1a09d0 2617
6170680b
IZ
2618 open(DBASE, '+<dbase.mine') # ditto
2619 or die "Can't open 'dbase.mine' for update: $!";
2620
2621 open(ARTICLE, '-|', "caesar <$article") # decrypt article
fb73857a 2622 or die "Can't start caesar: $!";
a0d0e21e 2623
6170680b
IZ
2624 open(ARTICLE, "caesar <$article |") # ditto
2625 or die "Can't start caesar: $!";
2626
2627 open(EXTRACT, "|sort >/tmp/Tmp$$") # $$ is our process id
fb73857a 2628 or die "Can't start sort: $!";
a0d0e21e
LW
2629
2630 # process argument list of files along with any includes
2631
2632 foreach $file (@ARGV) {
2633 process($file, 'fh00');
2634 }
2635
2636 sub process {
5a964f20 2637 my($filename, $input) = @_;
a0d0e21e
LW
2638 $input++; # this is a string increment
2639 unless (open($input, $filename)) {
2640 print STDERR "Can't open $filename: $!\n";
2641 return;
2642 }
2643
5a964f20 2644 local $_;
a0d0e21e
LW
2645 while (<$input>) { # note use of indirection
2646 if (/^#include "(.*)"/) {
2647 process($1, $input);
2648 next;
2649 }
5a964f20 2650 #... # whatever
a0d0e21e
LW
2651 }
2652 }
2653
2654You may also, in the Bourne shell tradition, specify an EXPR beginning
7660c0ab 2655with C<'E<gt>&'>, in which case the rest of the string is interpreted as the
5a964f20 2656name of a filehandle (or file descriptor, if numeric) to be
6170680b
IZ
2657duped and opened. You may use C<&> after C<E<gt>>, C<E<gt>E<gt>>,
2658C<E<lt>>, C<+E<gt>>, C<+E<gt>E<gt>>, and C<+E<lt>>. The
a0d0e21e 2659mode you specify should match the mode of the original filehandle.
184e9718 2660(Duping a filehandle does not take into account any existing contents of
6170680b
IZ
2661stdio buffers.) Duping file handles is not yet supported for 3-argument
2662open().
2663
a0d0e21e
LW
2664Here is a script that saves, redirects, and restores STDOUT and
2665STDERR:
2666
2667 #!/usr/bin/perl
5a964f20
TC
2668 open(OLDOUT, ">&STDOUT");
2669 open(OLDERR, ">&STDERR");
a0d0e21e 2670
6170680b
IZ
2671 open(STDOUT, '>', "foo.out") || die "Can't redirect stdout";
2672 open(STDERR, ">&STDOUT") || die "Can't dup stdout";
a0d0e21e
LW
2673
2674 select(STDERR); $| = 1; # make unbuffered
2675 select(STDOUT); $| = 1; # make unbuffered
2676
2677 print STDOUT "stdout 1\n"; # this works for
2678 print STDERR "stderr 1\n"; # subprocesses too
2679
2680 close(STDOUT);
2681 close(STDERR);
2682
5a964f20
TC
2683 open(STDOUT, ">&OLDOUT");
2684 open(STDERR, ">&OLDERR");
a0d0e21e
LW
2685
2686 print STDOUT "stdout 2\n";
2687 print STDERR "stderr 2\n";
2688
7660c0ab 2689If you specify C<'E<lt>&=N'>, where C<N> is a number, then Perl will do an
19799a22 2690equivalent of C's C<fdopen> of that file descriptor; this is more
4633a7c4 2691parsimonious of file descriptors. For example:
a0d0e21e
LW
2692
2693 open(FILEHANDLE, "<&=$fd")
2694
4af147f6
CS
2695Note that this feature depends on the fdopen() C library function.
2696On many UNIX systems, fdopen() is known to fail when file descriptors
2697exceed a certain value, typically 255. If you need more file
2698descriptors than that, consider rebuilding Perl to use the C<sfio>
2699library.
2700
6170680b
IZ
2701If you open a pipe on the command C<'-'>, i.e., either C<'|-'> or C<'-|'>
2702with 2-arguments (or 1-argument) form of open(), then
a0d0e21e 2703there is an implicit fork done, and the return value of open is the pid
7660c0ab 2704of the child within the parent process, and C<0> within the child
184e9718 2705process. (Use C<defined($pid)> to determine whether the open was successful.)
a0d0e21e
LW
2706The filehandle behaves normally for the parent, but i/o to that
2707filehandle is piped from/to the STDOUT/STDIN of the child process.
2708In the child process the filehandle isn't opened--i/o happens from/to
2709the new STDOUT or STDIN. Typically this is used like the normal
2710piped open when you want to exercise more control over just how the
2711pipe command gets executed, such as when you are running setuid, and
54310121 2712don't want to have to scan shell commands for metacharacters.
6170680b 2713The following triples are more or less equivalent:
a0d0e21e
LW
2714
2715 open(FOO, "|tr '[a-z]' '[A-Z]'");
6170680b
IZ
2716 open(FOO, '|-', "tr '[a-z]' '[A-Z]'");
2717 open(FOO, '|-') || exec 'tr', '[a-z]', '[A-Z]';
a0d0e21e
LW
2718
2719 open(FOO, "cat -n '$file'|");
6170680b
IZ
2720 open(FOO, '-|', "cat -n '$file'");
2721 open(FOO, '-|') || exec 'cat', '-n', $file;
a0d0e21e 2722
4633a7c4
LW
2723See L<perlipc/"Safe Pipe Opens"> for more examples of this.
2724
45bc9206
GS
2725NOTE: On any operation that may do a fork, all files opened for output
2726are flushed before the fork is attempted. On systems that support a
2727close-on-exec flag on files, the flag will be set for the newly opened
2728file descriptor as determined by the value of $^F. See L<perlvar/$^F>.
a0d0e21e 2729
0dccf244
CS
2730Closing any piped filehandle causes the parent process to wait for the
2731child to finish, and returns the status value in C<$?>.
2732
6170680b
IZ
2733The filename passed to 2-argument (or 1-argument) form of open()
2734will have leading and trailing
f86cebdf 2735whitespace deleted, and the normal redirection characters
5a964f20
TC
2736honored. This property, known as "magic open",
2737can often be used to good effect. A user could specify a filename of
7660c0ab 2738F<"rsh cat file |">, or you could change certain filenames as needed:
5a964f20
TC
2739
2740 $filename =~ s/(.*\.gz)\s*$/gzip -dc < $1|/;
2741 open(FH, $filename) or die "Can't open $filename: $!";
2742
6170680b
IZ
2743Use 3-argument form to open a file with arbitrary weird characters in it,
2744
2745 open(FOO, '<', $file);
2746
2747otherwise it's necessary to protect any leading and trailing whitespace:
5a964f20
TC
2748
2749 $file =~ s#^(\s)#./$1#;
2750 open(FOO, "< $file\0");
2751
6170680b
IZ
2752(this may not work on some bizzare filesystems). One should
2753conscientiously choose between the the I<magic> and 3-arguments form
2754of open():
2755
2756 open IN, $ARGV[0];
2757
2758will allow the user to specify an argument of the form C<"rsh cat file |">,
2759but will not work on a filename which happens to have a trailing space, while
2760
2761 open IN, '<', $ARGV[0];
2762
2763will have exactly the opposite restrictions.
2764
19799a22 2765If you want a "real" C C<open> (see L<open(2)> on your system), then you
6170680b
IZ
2766should use the C<sysopen> function, which involves no such magic (but
2767may use subtly different filemodes than Perl open(), which is mapped
2768to C fopen()). This is
5a964f20
TC
2769another way to protect your filenames from interpretation. For example:
2770
2771 use IO::Handle;
2772 sysopen(HANDLE, $path, O_RDWR|O_CREAT|O_EXCL)
2773 or die "sysopen $path: $!";
2774 $oldfh = select(HANDLE); $| = 1; select($oldfh);
2775 print HANDLE "stuff $$\n");
2776 seek(HANDLE, 0, 0);
2777 print "File contains: ", <HANDLE>;
2778
7660c0ab
A
2779Using the constructor from the C<IO::Handle> package (or one of its
2780subclasses, such as C<IO::File> or C<IO::Socket>), you can generate anonymous
5a964f20
TC
2781filehandles that have the scope of whatever variables hold references to
2782them, and automatically close whenever and however you leave that scope:
c07a80fd 2783
5f05dabc 2784 use IO::File;
5a964f20 2785 #...
c07a80fd 2786 sub read_myfile_munged {
2787 my $ALL = shift;
5f05dabc 2788 my $handle = new IO::File;
c07a80fd 2789 open($handle, "myfile") or die "myfile: $!";
2790 $first = <$handle>
2791 or return (); # Automatically closed here.
2792 mung $first or die "mung failed"; # Or here.
2793 return $first, <$handle> if $ALL; # Or here.
2794 $first; # Or here.
2795 }
2796
b687b08b 2797See L</seek> for some details about mixing reading and writing.
a0d0e21e
LW
2798
2799=item opendir DIRHANDLE,EXPR
2800
19799a22
GS
2801Opens a directory named EXPR for processing by C<readdir>, C<telldir>,
2802C<seekdir>, C<rewinddir>, and C<closedir>. Returns true if successful.
a0d0e21e
LW
2803DIRHANDLEs have their own namespace separate from FILEHANDLEs.
2804
2805=item ord EXPR
2806
54310121 2807=item ord
bbce6d69 2808
a0ed51b3 2809Returns the numeric (ASCII or Unicode) value of the first character of EXPR. If
7660c0ab 2810EXPR is omitted, uses C<$_>. For the reverse, see L</chr>.
2b5ab1e7 2811See L<utf8> for more about Unicode.
a0d0e21e 2812
77ca0c92
LW
2813=item our EXPR
2814
2815An C<our> declares the listed variables to be valid globals within
2816the enclosing block, file, or C<eval>. That is, it has the same
2817scoping rules as a "my" declaration, but does not create a local
2818variable. If more than one value is listed, the list must be placed
2819in parentheses. The C<our> declaration has no semantic effect unless
2820"use strict vars" is in effect, in which case it lets you use the
2821declared global variable without qualifying it with a package name.
2822(But only within the lexical scope of the C<our> declaration. In this
2823it differs from "use vars", which is package scoped.)
2824
f472eb5c
GS
2825An C<our> declaration declares a global variable that will be visible
2826across its entire lexical scope, even across package boundaries. The
2827package in which the variable is entered is determined at the point
2828of the declaration, not at the point of use. This means the following
2829behavior holds:
2830
2831 package Foo;
2832 our $bar; # declares $Foo::bar for rest of lexical scope
2833 $bar = 20;
2834
2835 package Bar;
2836 print $bar; # prints 20
2837
2838Multiple C<our> declarations in the same lexical scope are allowed
2839if they are in different packages. If they happened to be in the same
2840package, Perl will emit warnings if you have asked for them.
2841
2842 use warnings;
2843 package Foo;
2844 our $bar; # declares $Foo::bar for rest of lexical scope
2845 $bar = 20;
2846
2847 package Bar;
2848 our $bar = 30; # declares $Bar::bar for rest of lexical scope
2849 print $bar; # prints 30
2850
2851 our $bar; # emits warning
2852
a0d0e21e
LW
2853=item pack TEMPLATE,LIST
2854
2b6c5635
GS
2855Takes a LIST of values and converts it into a string using the rules
2856given by the TEMPLATE. The resulting string is the concatenation of
2857the converted values. Typically, each converted value looks
2858like its machine-level representation. For example, on 32-bit machines
2859a converted integer may be represented by a sequence of 4 bytes.
2860
2861The TEMPLATE is a
a0d0e21e
LW
2862sequence of characters that give the order and type of values, as
2863follows:
2864
5a929a98 2865 a A string with arbitrary binary data, will be null padded.
a0d0e21e 2866 A An ascii string, will be space padded.
5a929a98
VU
2867 Z A null terminated (asciz) string, will be null padded.
2868
2b6c5635
GS
2869 b A bit string (ascending bit order inside each byte, like vec()).
2870 B A bit string (descending bit order inside each byte).
a0d0e21e
LW
2871 h A hex string (low nybble first).
2872 H A hex string (high nybble first).
2873
2874 c A signed char value.
a0ed51b3 2875 C An unsigned char value. Only does bytes. See U for Unicode.
96e4d5b1 2876
a0d0e21e
LW
2877 s A signed short value.
2878 S An unsigned short value.
96e4d5b1 2879 (This 'short' is _exactly_ 16 bits, which may differ from
851646ae
JH
2880 what a local C compiler calls 'short'. If you want
2881 native-length shorts, use the '!' suffix.)
96e4d5b1 2882
a0d0e21e
LW
2883 i A signed integer value.
2884 I An unsigned integer value.
19799a22 2885 (This 'integer' is _at_least_ 32 bits wide. Its exact
f86cebdf
GS
2886 size depends on what a local C compiler calls 'int',
2887 and may even be larger than the 'long' described in
2888 the next item.)
96e4d5b1 2889
a0d0e21e
LW
2890 l A signed long value.
2891 L An unsigned long value.
96e4d5b1 2892 (This 'long' is _exactly_ 32 bits, which may differ from
851646ae
JH
2893 what a local C compiler calls 'long'. If you want
2894 native-length longs, use the '!' suffix.)
a0d0e21e 2895
5d11dd56
MG
2896 n An unsigned short in "network" (big-endian) order.
2897 N An unsigned long in "network" (big-endian) order.
2898 v An unsigned short in "VAX" (little-endian) order.
2899 V An unsigned long in "VAX" (little-endian) order.
96e4d5b1 2900 (These 'shorts' and 'longs' are _exactly_ 16 bits and
2901 _exactly_ 32 bits, respectively.)
a0d0e21e 2902
dae0da7a
JH
2903 q A signed quad (64-bit) value.
2904 Q An unsigned quad value.
851646ae
JH
2905 (Quads are available only if your system supports 64-bit
2906 integer values _and_ if Perl has been compiled to support those.
dae0da7a
JH
2907 Causes a fatal error otherwise.)
2908
a0d0e21e
LW
2909 f A single-precision float in the native format.
2910 d A double-precision float in the native format.
2911
2912 p A pointer to a null-terminated string.
2913 P A pointer to a structure (fixed-length string).
2914
2915 u A uuencoded string.
a0ed51b3
LW
2916 U A Unicode character number. Encodes to UTF-8 internally.
2917 Works even if C<use utf8> is not in effect.
a0d0e21e 2918
96e4d5b1 2919 w A BER compressed integer. Its bytes represent an unsigned
f86cebdf
GS
2920 integer in base 128, most significant digit first, with as
2921 few digits as possible. Bit eight (the high bit) is set
2922 on each byte except the last.
def98dd4 2923
a0d0e21e
LW
2924 x A null byte.
2925 X Back up a byte.
2926 @ Null fill to absolute position.
2927
5a929a98
VU
2928The following rules apply:
2929
2930=over 8
2931
2932=item *
2933
5a964f20 2934Each letter may optionally be followed by a number giving a repeat
951ba7fe
GS
2935count. With all types except C<a>, C<A>, C<Z>, C<b>, C<B>, C<h>,
2936C<H>, and C<P> the pack function will gobble up that many values from
5a929a98 2937the LIST. A C<*> for the repeat count means to use however many items are
951ba7fe
GS
2938left, except for C<@>, C<x>, C<X>, where it is equivalent
2939to C<0>, and C<u>, where it is equivalent to 1 (or 45, what is the
2b6c5635
GS
2940same).
2941
951ba7fe 2942When used with C<Z>, C<*> results in the addition of a trailing null
2b6c5635
GS
2943byte (so the packed result will be one longer than the byte C<length>
2944of the item).
2945
951ba7fe 2946The repeat count for C<u> is interpreted as the maximal number of bytes
2b6c5635 2947to encode per line of output, with 0 and 1 replaced by 45.
5a929a98
VU
2948
2949=item *
2950
951ba7fe 2951The C<a>, C<A>, and C<Z> types gobble just one value, but pack it as a
5a929a98 2952string of length count, padding with nulls or spaces as necessary. When
951ba7fe
GS
2953unpacking, C<A> strips trailing spaces and nulls, C<Z> strips everything
2954after the first null, and C<a> returns data verbatim. When packing,
2955C<a>, and C<Z> are equivalent.
2b6c5635
GS
2956
2957If the value-to-pack is too long, it is truncated. If too long and an
951ba7fe
GS
2958explicit count is provided, C<Z> packs only C<$count-1> bytes, followed
2959by a null byte. Thus C<Z> always packs a trailing null byte under
2b6c5635 2960all circumstances.
5a929a98
VU
2961
2962=item *
2963
951ba7fe 2964Likewise, the C<b> and C<B> fields pack a string that many bits long.
c73032f5
IZ
2965Each byte of the input field of pack() generates 1 bit of the result.
2966Each result bit is based on the least-significant bit of the corresponding
2967input byte, i.e., on C<ord($byte)%2>. In particular, bytes C<"0"> and
2968C<"1"> generate bits 0 and 1, as do bytes C<"\0"> and C<"\1">.
2969
2970Starting from the beginning of the input string of pack(), each 8-tuple
951ba7fe 2971of bytes is converted to 1 byte of output. With format C<b>
c73032f5 2972the first byte of the 8-tuple determines the least-significant bit of a
951ba7fe 2973byte, and with format C<B> it determines the most-significant bit of
c73032f5
IZ
2974a byte.
2975
2976If the length of the input string is not exactly divisible by 8, the
2977remainder is packed as if the input string were padded by null bytes
2978at the end. Similarly, during unpack()ing the "extra" bits are ignored.
2979
2980If the input string of pack() is longer than needed, extra bytes are ignored.
2b6c5635
GS
2981A C<*> for the repeat count of pack() means to use all the bytes of
2982the input field. On unpack()ing the bits are converted to a string
2983of C<"0">s and C<"1">s.
5a929a98
VU
2984
2985=item *
2986
951ba7fe 2987The C<h> and C<H> fields pack a string that many nybbles (4-bit groups,
851646ae 2988representable as hexadecimal digits, 0-9a-f) long.
5a929a98 2989
c73032f5
IZ
2990Each byte of the input field of pack() generates 4 bits of the result.
2991For non-alphabetical bytes the result is based on the 4 least-significant
2992bits of the input byte, i.e., on C<ord($byte)%16>. In particular,
2993bytes C<"0"> and C<"1"> generate nybbles 0 and 1, as do bytes
2994C<"\0"> and C<"\1">. For bytes C<"a".."f"> and C<"A".."F"> the result
2995is compatible with the usual hexadecimal digits, so that C<"a"> and
2996C<"A"> both generate the nybble C<0xa==10>. The result for bytes
2997C<"g".."z"> and C<"G".."Z"> is not well-defined.
2998
2999Starting from the beginning of the input string of pack(), each pair
951ba7fe 3000of bytes is converted to 1 byte of output. With format C<h> the
c73032f5 3001first byte of the pair determines the least-significant nybble of the
951ba7fe 3002output byte, and with format C<H> it determines the most-significant
c73032f5
IZ
3003nybble.
3004
3005If the length of the input string is not even, it behaves as if padded
3006by a null byte at the end. Similarly, during unpack()ing the "extra"
3007nybbles are ignored.
3008
3009If the input string of pack() is longer than needed, extra bytes are ignored.
3010A C<*> for the repeat count of pack() means to use all the bytes of
3011the input field. On unpack()ing the bits are converted to a string
3012of hexadecimal digits.
3013
5a929a98
VU
3014=item *
3015
951ba7fe 3016The C<p> type packs a pointer to a null-terminated string. You are
5a929a98
VU
3017responsible for ensuring the string is not a temporary value (which can
3018potentially get deallocated before you get around to using the packed result).
951ba7fe
GS
3019The C<P> type packs a pointer to a structure of the size indicated by the
3020length. A NULL pointer is created if the corresponding value for C<p> or
3021C<P> is C<undef>, similarly for unpack().
5a929a98
VU
3022
3023=item *
3024
951ba7fe
GS
3025The C</> template character allows packing and unpacking of strings where
3026the packed structure contains a byte count followed by the string itself.
17f4a12d 3027You write I<length-item>C</>I<string-item>.
43192e07
IP
3028
3029The I<length-item> can be any C<pack> template letter,
3030and describes how the length value is packed.
3031The ones likely to be of most use are integer-packing ones like
951ba7fe
GS
3032C<n> (for Java strings), C<w> (for ASN.1 or SNMP)
3033and C<N> (for Sun XDR).
43192e07
IP
3034
3035The I<string-item> must, at present, be C<"A*">, C<"a*"> or C<"Z*">.
3036For C<unpack> the length of the string is obtained from the I<length-item>,
3037but if you put in the '*' it will be ignored.
3038
17f4a12d
IZ
3039 unpack 'C/a', "\04Gurusamy"; gives 'Guru'
3040 unpack 'a3/A* A*', '007 Bond J '; gives (' Bond','J')
3041 pack 'n/a* w/a*','hello,','world'; gives "\000\006hello,\005world"
43192e07
IP
3042
3043The I<length-item> is not returned explicitly from C<unpack>.
3044
951ba7fe
GS
3045Adding a count to the I<length-item> letter is unlikely to do anything
3046useful, unless that letter is C<A>, C<a> or C<Z>. Packing with a
3047I<length-item> of C<a> or C<Z> may introduce C<"\000"> characters,
43192e07
IP
3048which Perl does not regard as legal in numeric strings.
3049
3050=item *
3051
951ba7fe
GS
3052The integer types C<s>, C<S>, C<l>, and C<L> may be
3053immediately followed by a C<!> suffix to signify native shorts or
3054longs--as you can see from above for example a bare C<l> does mean
851646ae
JH
3055exactly 32 bits, the native C<long> (as seen by the local C compiler)
3056may be larger. This is an issue mainly in 64-bit platforms. You can
951ba7fe 3057see whether using C<!> makes any difference by
726ea183 3058
4d0c1c44
GS
3059 print length(pack("s")), " ", length(pack("s!")), "\n";
3060 print length(pack("l")), " ", length(pack("l!")), "\n";
ef54e1a4 3061
951ba7fe
GS
3062C<i!> and C<I!> also work but only because of completeness;
3063they are identical to C<i> and C<I>.
ef54e1a4 3064
19799a22
GS
3065The actual sizes (in bytes) of native shorts, ints, longs, and long
3066longs on the platform where Perl was built are also available via
3067L<Config>:
3068
3069 use Config;
3070 print $Config{shortsize}, "\n";
3071 print $Config{intsize}, "\n";
3072 print $Config{longsize}, "\n";
3073 print $Config{longlongsize}, "\n";
ef54e1a4 3074
5074e145 3075(The C<$Config{longlongsize}> will be undefine if your system does
851646ae
JH
3076not support long longs.)
3077
ef54e1a4
JH
3078=item *
3079
951ba7fe 3080The integer formats C<s>, C<S>, C<i>, C<I>, C<l>, and C<L>
ef54e1a4
JH
3081are inherently non-portable between processors and operating systems
3082because they obey the native byteorder and endianness. For example a
140cb37e 30834-byte integer 0x12345678 (305419896 decimal) be ordered natively
ef54e1a4
JH
3084(arranged in and handled by the CPU registers) into bytes as
3085
719a3cf5
JH
3086 0x12 0x34 0x56 0x78 # little-endian
3087 0x78 0x56 0x34 0x12 # big-endian
ef54e1a4 3088
5d11dd56 3089Basically, the Intel, Alpha, and VAX CPUs are little-endian, while
719a3cf5
JH
3090everybody else, for example Motorola m68k/88k, PPC, Sparc, HP PA,
3091Power, and Cray are big-endian. MIPS can be either: Digital used it
19799a22 3092in little-endian mode; SGI uses it in big-endian mode.
719a3cf5 3093
19799a22 3094The names `big-endian' and `little-endian' are comic references to
ef54e1a4
JH
3095the classic "Gulliver's Travels" (via the paper "On Holy Wars and a
3096Plea for Peace" by Danny Cohen, USC/ISI IEN 137, April 1, 1980) and
19799a22 3097the egg-eating habits of the Lilliputians.
ef54e1a4 3098
140cb37e 3099Some systems may have even weirder byte orders such as
ef54e1a4
JH
3100
3101 0x56 0x78 0x12 0x34
3102 0x34 0x12 0x78 0x56
3103
3104You can see your system's preference with
3105
3106 print join(" ", map { sprintf "%#02x", $_ }
3107 unpack("C*",pack("L",0x12345678))), "\n";
3108
d99ad34e 3109The byteorder on the platform where Perl was built is also available
726ea183 3110via L<Config>:
ef54e1a4
JH
3111
3112 use Config;
3113 print $Config{byteorder}, "\n";
3114
d99ad34e
JH
3115Byteorders C<'1234'> and C<'12345678'> are little-endian, C<'4321'>
3116and C<'87654321'> are big-endian.
719a3cf5 3117
951ba7fe
GS
3118If you want portable packed integers use the formats C<n>, C<N>,
3119C<v>, and C<V>, their byte endianness and size is known.
851646ae 3120See also L<perlport>.
ef54e1a4
JH
3121
3122=item *
3123
5a929a98
VU
3124Real numbers (floats and doubles) are in the native machine format only;
3125due to the multiplicity of floating formats around, and the lack of a
3126standard "network" representation, no facility for interchange has been
3127made. This means that packed floating point data written on one machine
3128may not be readable on another - even if both use IEEE floating point
3129arithmetic (as the endian-ness of the memory representation is not part
851646ae 3130of the IEEE spec). See also L<perlport>.
5a929a98
VU
3131
3132Note that Perl uses doubles internally for all numeric calculation, and
3133converting from double into float and thence back to double again will
3134lose precision (i.e., C<unpack("f", pack("f", $foo)>) will not in general
19799a22 3135equal $foo).
5a929a98 3136
851646ae
JH
3137=item *
3138
3139You must yourself do any alignment or padding by inserting for example
9ccd05c0
JH
3140enough C<'x'>es while packing. There is no way to pack() and unpack()
3141could know where the bytes are going to or coming from. Therefore
3142C<pack> (and C<unpack>) handle their output and input as flat
3143sequences of bytes.
851646ae 3144
17f4a12d
IZ
3145=item *
3146
3147A comment in a TEMPLATE starts with C<#> and goes to the end of line.
3148
2b6c5635
GS
3149=item *
3150
3151If TEMPLATE requires more arguments to pack() than actually given, pack()
3152assumes additional C<""> arguments. If TEMPLATE requires less arguments
3153to pack() than actually given, extra arguments are ignored.
3154
5a929a98 3155=back
a0d0e21e
LW
3156
3157Examples:
3158
a0ed51b3 3159 $foo = pack("CCCC",65,66,67,68);
a0d0e21e 3160 # foo eq "ABCD"
a0ed51b3 3161 $foo = pack("C4",65,66,67,68);
a0d0e21e 3162 # same thing
a0ed51b3
LW
3163 $foo = pack("U4",0x24b6,0x24b7,0x24b8,0x24b9);
3164 # same thing with Unicode circled letters
a0d0e21e
LW
3165
3166 $foo = pack("ccxxcc",65,66,67,68);
3167 # foo eq "AB\0\0CD"
3168
9ccd05c0
JH
3169 # note: the above examples featuring "C" and "c" are true
3170 # only on ASCII and ASCII-derived systems such as ISO Latin 1
3171 # and UTF-8. In EBCDIC the first example would be
3172 # $foo = pack("CCCC",193,194,195,196);
3173
a0d0e21e
LW
3174 $foo = pack("s2",1,2);
3175 # "\1\0\2\0" on little-endian
3176 # "\0\1\0\2" on big-endian
3177
3178 $foo = pack("a4","abcd","x","y","z");
3179 # "abcd"
3180
3181 $foo = pack("aaaa","abcd","x","y","z");
3182 # "axyz"
3183
3184 $foo = pack("a14","abcdefg");
3185 # "abcdefg\0\0\0\0\0\0\0"
3186
3187 $foo = pack("i9pl", gmtime);
3188 # a real struct tm (on my system anyway)
3189
5a929a98
VU
3190 $utmp_template = "Z8 Z8 Z16 L";
3191 $utmp = pack($utmp_template, @utmp1);
3192 # a struct utmp (BSDish)
3193
3194 @utmp2 = unpack($utmp_template, $utmp);
3195 # "@utmp1" eq "@utmp2"
3196
a0d0e21e
LW
3197 sub bintodec {
3198 unpack("N", pack("B32", substr("0" x 32 . shift, -32)));
3199 }
3200
851646ae
JH
3201 $foo = pack('sx2l', 12, 34);
3202 # short 12, two zero bytes padding, long 34
3203 $bar = pack('s@4l', 12, 34);
3204 # short 12, zero fill to position 4, long 34
3205 # $foo eq $bar
3206
5a929a98 3207The same template may generally also be used in unpack().
a0d0e21e 3208
5a964f20
TC
3209=item package
3210
cb1a09d0
AD
3211=item package NAMESPACE
3212
3213Declares the compilation unit as being in the given namespace. The scope
2b5ab1e7 3214of the package declaration is from the declaration itself through the end
19799a22 3215of the enclosing block, file, or eval (the same as the C<my> operator).
2b5ab1e7
TC
3216All further unqualified dynamic identifiers will be in this namespace.
3217A package statement affects only dynamic variables--including those
19799a22
GS
3218you've used C<local> on--but I<not> lexical variables, which are created
3219with C<my>. Typically it would be the first declaration in a file to
2b5ab1e7
TC
3220be included by the C<require> or C<use> operator. You can switch into a
3221package in more than one place; it merely influences which symbol table
3222is used by the compiler for the rest of that block. You can refer to
3223variables and filehandles in other packages by prefixing the identifier
3224with the package name and a double colon: C<$Package::Variable>.
3225If the package name is null, the C<main> package as assumed. That is,
3226C<$::sail> is equivalent to C<$main::sail> (as well as to C<$main'sail>,
3227still seen in older code).
cb1a09d0 3228
5a964f20
TC
3229If NAMESPACE is omitted, then there is no current package, and all
3230identifiers must be fully qualified or lexicals. This is stricter
3231than C<use strict>, since it also extends to function names.
3232
cb1a09d0
AD
3233See L<perlmod/"Packages"> for more information about packages, modules,
3234and classes. See L<perlsub> for other scoping issues.
3235
a0d0e21e
LW
3236=item pipe READHANDLE,WRITEHANDLE
3237
3238Opens a pair of connected pipes like the corresponding system call.
3239Note that if you set up a loop of piped processes, deadlock can occur
3240unless you are very careful. In addition, note that Perl's pipes use
184e9718 3241stdio buffering, so you may need to set C<$|> to flush your WRITEHANDLE
a0d0e21e
LW
3242after each command, depending on the application.
3243
7e1af8bc 3244See L<IPC::Open2>, L<IPC::Open3>, and L<perlipc/"Bidirectional Communication">
4633a7c4
LW
3245for examples of such things.
3246
4771b018
GS
3247On systems that support a close-on-exec flag on files, the flag will be set
3248for the newly opened file descriptors as determined by the value of $^F.
3249See L<perlvar/$^F>.
3250
a0d0e21e
LW
3251=item pop ARRAY
3252
54310121 3253=item pop
28757baa 3254
a0d0e21e 3255Pops and returns the last value of the array, shortening the array by
19799a22 3256one element. Has an effect similar to
a0d0e21e 3257
19799a22 3258 $ARRAY[$#ARRAY--]
a0d0e21e 3259
19799a22
GS
3260If there are no elements in the array, returns the undefined value
3261(although this may happen at other times as well). If ARRAY is
3262omitted, pops the C<@ARGV> array in the main program, and the C<@_>
3263array in subroutines, just like C<shift>.
a0d0e21e
LW
3264
3265=item pos SCALAR
3266
54310121 3267=item pos
bbce6d69 3268
4633a7c4 3269Returns the offset of where the last C<m//g> search left off for the variable
7660c0ab 3270is in question (C<$_> is used when the variable is not specified). May be
44a8e56a 3271modified to change that offset. Such modification will also influence
3272the C<\G> zero-width assertion in regular expressions. See L<perlre> and
3273L<perlop>.
a0d0e21e
LW
3274
3275=item print FILEHANDLE LIST
3276
3277=item print LIST
3278
3279=item print
3280
19799a22
GS
3281Prints a string or a list of strings. Returns true if successful.
3282FILEHANDLE may be a scalar variable name, in which case the variable
3283contains the name of or a reference to the filehandle, thus introducing
3284one level of indirection. (NOTE: If FILEHANDLE is a variable and
3285the next token is a term, it may be misinterpreted as an operator
2b5ab1e7 3286unless you interpose a C<+> or put parentheses around the arguments.)
19799a22
GS
3287If FILEHANDLE is omitted, prints by default to standard output (or
3288to the last selected output channel--see L</select>). If LIST is
3289also omitted, prints C<$_> to the currently selected output channel.
3290To set the default output channel to something other than STDOUT
3291use the select operation. The current value of C<$,> (if any) is
3292printed between each LIST item. The current value of C<$\> (if
3293any) is printed after the entire LIST has been printed. Because
3294print takes a LIST, anything in the LIST is evaluated in list
3295context, and any subroutine that you call will have one or more of
3296its expressions evaluated in list context. Also be careful not to
3297follow the print keyword with a left parenthesis unless you want
3298the corresponding right parenthesis to terminate the arguments to
3299the print--interpose a C<+> or put parentheses around all the
3300arguments.
a0d0e21e 3301
4633a7c4 3302Note that if you're storing FILEHANDLES in an array or other expression,
da0045b7 3303you will have to use a block returning its value instead:
4633a7c4
LW
3304
3305 print { $files[$i] } "stuff\n";
3306 print { $OK ? STDOUT : STDERR } "stuff\n";
3307
5f05dabc 3308=item printf FILEHANDLE FORMAT, LIST
a0d0e21e 3309
5f05dabc 3310=item printf FORMAT, LIST
a0d0e21e 3311
7660c0ab 3312Equivalent to C&l