This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
allow optional XSUB parameters without being forced to use a
[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<print FILEHANDLE sprintf(FORMAT, LIST)>, except that C<$\>
a3cb178b 3313(the output record separator) is not appended. The first argument
19799a22 3314of the list will be interpreted as the C<printf> format. If C<use locale> is
a034a98d
DD
3315in effect, the character used for the decimal point in formatted real numbers
3316is affected by the LC_NUMERIC locale. See L<perllocale>.
a0d0e21e 3317
19799a22
GS
3318Don't fall into the trap of using a C<printf> when a simple
3319C<print> would do. The C<print> is more efficient and less
28757baa 3320error prone.
3321
da0045b7 3322=item prototype FUNCTION
3323
3324Returns the prototype of a function as a string (or C<undef> if the
5f05dabc 3325function has no prototype). FUNCTION is a reference to, or the name of,
3326the function whose prototype you want to retrieve.
da0045b7 3327
2b5ab1e7
TC
3328If FUNCTION is a string starting with C<CORE::>, the rest is taken as a
3329name for Perl builtin. If the builtin is not I<overridable> (such as
ab4f32c2 3330C<qw//>) or its arguments cannot be expressed by a prototype (such as
19799a22 3331C<system>) returns C<undef> because the builtin does not really behave
2b5ab1e7
TC
3332like a Perl function. Otherwise, the string describing the equivalent
3333prototype is returned.
b6c543e3 3334
a0d0e21e
LW
3335=item push ARRAY,LIST
3336
3337Treats ARRAY as a stack, and pushes the values of LIST
3338onto the end of ARRAY. The length of ARRAY increases by the length of
3339LIST. Has the same effect as
3340
3341 for $value (LIST) {
3342 $ARRAY[++$#ARRAY] = $value;
3343 }
3344
3345but is more efficient. Returns the new number of elements in the array.
3346
3347=item q/STRING/
3348
3349=item qq/STRING/
3350
8782bef2
GB
3351=item qr/STRING/
3352
a0d0e21e
LW
3353=item qx/STRING/
3354
3355=item qw/STRING/
3356
4b6a7270 3357Generalized quotes. See L<perlop/"Regexp Quote-Like Operators">.
a0d0e21e
LW
3358
3359=item quotemeta EXPR
3360
54310121 3361=item quotemeta
bbce6d69 3362
68dc0745 3363Returns the value of EXPR with all non-alphanumeric
a034a98d
DD
3364characters backslashed. (That is, all characters not matching
3365C</[A-Za-z_0-9]/> will be preceded by a backslash in the
3366returned string, regardless of any locale settings.)
3367This is the internal function implementing
7660c0ab 3368the C<\Q> escape in double-quoted strings.
a0d0e21e 3369
7660c0ab 3370If EXPR is omitted, uses C<$_>.
bbce6d69 3371
a0d0e21e
LW
3372=item rand EXPR
3373
3374=item rand
3375
7660c0ab 3376Returns a random fractional number greater than or equal to C<0> and less
3e3baf6d 3377than the value of EXPR. (EXPR should be positive.) If EXPR is
19799a22
GS
3378omitted, the value C<1> is used. Automatically calls C<srand> unless
3379C<srand> has already been called. See also C<srand>.
a0d0e21e 3380
2f9daede 3381(Note: If your rand function consistently returns numbers that are too
a0d0e21e 3382large or too small, then your version of Perl was probably compiled
2f9daede 3383with the wrong number of RANDBITS.)
a0d0e21e
LW
3384
3385=item read FILEHANDLE,SCALAR,LENGTH,OFFSET
3386
3387=item read FILEHANDLE,SCALAR,LENGTH
3388
3389Attempts to read LENGTH bytes of data into variable SCALAR from the
3b02c43c
GS
3390specified FILEHANDLE. Returns the number of bytes actually read,
3391C<0> at end of file, or undef if there was an error. SCALAR will be grown
3392or shrunk to the length actually read. An OFFSET may be specified to
3393place the read data at some other place than the beginning of the
f86cebdf 3394string. This call is actually implemented in terms of stdio's fread(3)
19799a22 3395call. To get a true read(2) system call, see C<sysread>.
a0d0e21e
LW
3396
3397=item readdir DIRHANDLE
3398
19799a22 3399Returns the next directory entry for a directory opened by C<opendir>.
5a964f20 3400If used in list context, returns all the rest of the entries in the
a0d0e21e 3401directory. If there are no more entries, returns an undefined value in
5a964f20 3402scalar context or a null list in list context.
a0d0e21e 3403
19799a22 3404If you're planning to filetest the return values out of a C<readdir>, you'd
5f05dabc 3405better prepend the directory in question. Otherwise, because we didn't
19799a22 3406C<chdir> there, it would have been testing the wrong file.
cb1a09d0
AD
3407
3408 opendir(DIR, $some_dir) || die "can't opendir $some_dir: $!";
3409 @dots = grep { /^\./ && -f "$some_dir/$_" } readdir(DIR);
3410 closedir DIR;
3411
84902520
TB
3412=item readline EXPR
3413
fbad3eb5
GS
3414Reads from the filehandle whose typeglob is contained in EXPR. In scalar
3415context, each call reads and returns the next line, until end-of-file is
3416reached, whereupon the subsequent call returns undef. In list context,
3417reads until end-of-file is reached and returns a list of lines. Note that
3418the notion of "line" used here is however you may have defined it
3419with C<$/> or C<$INPUT_RECORD_SEPARATOR>). See L<perlvar/"$/">.
3420
2b5ab1e7 3421When C<$/> is set to C<undef>, when readline() is in scalar
449bc448
GS
3422context (i.e. file slurp mode), and when an empty file is read, it
3423returns C<''> the first time, followed by C<undef> subsequently.
fbad3eb5 3424
84902520
TB
3425This is the internal function implementing the C<E<lt>EXPRE<gt>>
3426operator, but you can use it directly. The C<E<lt>EXPRE<gt>>
3427operator is discussed in more detail in L<perlop/"I/O Operators">.
3428
5a964f20
TC
3429 $line = <STDIN>;
3430 $line = readline(*STDIN); # same thing
3431
a0d0e21e
LW
3432=item readlink EXPR
3433
54310121 3434=item readlink
bbce6d69 3435
a0d0e21e
LW
3436Returns the value of a symbolic link, if symbolic links are
3437implemented. If not, gives a fatal error. If there is some system
184e9718 3438error, returns the undefined value and sets C<$!> (errno). If EXPR is
7660c0ab 3439omitted, uses C<$_>.
a0d0e21e 3440
84902520
TB
3441=item readpipe EXPR
3442
5a964f20 3443EXPR is executed as a system command.
84902520
TB
3444The collected standard output of the command is returned.
3445In scalar context, it comes back as a single (potentially
3446multi-line) string. In list context, returns a list of lines
7660c0ab 3447(however you've defined lines with C<$/> or C<$INPUT_RECORD_SEPARATOR>).
84902520
TB
3448This is the internal function implementing the C<qx/EXPR/>
3449operator, but you can use it directly. The C<qx/EXPR/>
3450operator is discussed in more detail in L<perlop/"I/O Operators">.
3451
399388f4 3452=item recv SOCKET,SCALAR,LENGTH,FLAGS
a0d0e21e
LW
3453
3454Receives a message on a socket. Attempts to receive LENGTH bytes of
478234b4
GS
3455data into variable SCALAR from the specified SOCKET filehandle. SCALAR
3456will be grown or shrunk to the length actually read. Takes the same
3457flags as the system call of the same name. Returns the address of the
3458sender if SOCKET's protocol supports this; returns an empty string
3459otherwise. If there's an error, returns the undefined value. This call
3460is actually implemented in terms of recvfrom(2) system call. See
3461L<perlipc/"UDP: Message Passing"> for examples.
a0d0e21e
LW
3462
3463=item redo LABEL
3464
3465=item redo
3466
3467The C<redo> command restarts the loop block without evaluating the
98293880 3468conditional again. The C<continue> block, if any, is not executed. If
a0d0e21e
LW
3469the LABEL is omitted, the command refers to the innermost enclosing
3470loop. This command is normally used by programs that want to lie to
3471themselves about what was just input:
3472
3473 # a simpleminded Pascal comment stripper
3474 # (warning: assumes no { or } in strings)
4633a7c4 3475 LINE: while (<STDIN>) {
a0d0e21e
LW
3476 while (s|({.*}.*){.*}|$1 |) {}
3477 s|{.*}| |;
3478 if (s|{.*| |) {
3479 $front = $_;
3480 while (<STDIN>) {
3481 if (/}/) { # end of comment?
5a964f20 3482 s|^|$front\{|;
4633a7c4 3483 redo LINE;
a0d0e21e
LW
3484 }
3485 }
3486 }
3487 print;
3488 }
3489
4968c1e4 3490C<redo> cannot be used to retry a block which returns a value such as
2b5ab1e7
TC
3491C<eval {}>, C<sub {}> or C<do {}>, and should not be used to exit
3492a grep() or map() operation.
4968c1e4 3493
6c1372ed
GS
3494Note that a block by itself is semantically identical to a loop
3495that executes once. Thus C<redo> inside such a block will effectively
3496turn it into a looping construct.
3497
98293880 3498See also L</continue> for an illustration of how C<last>, C<next>, and
1d2dff63
GS
3499C<redo> work.
3500
a0d0e21e
LW
3501=item ref EXPR
3502
54310121 3503=item ref
bbce6d69 3504
19799a22 3505Returns a true value if EXPR is a reference, false otherwise. If EXPR
7660c0ab 3506is not specified, C<$_> will be used. The value returned depends on the
bbce6d69 3507type of thing the reference is a reference to.
a0d0e21e
LW
3508Builtin types include:
3509
a0d0e21e
LW
3510 SCALAR
3511 ARRAY
3512 HASH
3513 CODE
19799a22 3514 REF
a0d0e21e 3515 GLOB
19799a22 3516 LVALUE
a0d0e21e 3517
54310121 3518If the referenced object has been blessed into a package, then that package
19799a22 3519name is returned instead. You can think of C<ref> as a C<typeof> operator.
a0d0e21e
LW
3520
3521 if (ref($r) eq "HASH") {
aa689395 3522 print "r is a reference to a hash.\n";
54310121 3523 }
2b5ab1e7 3524 unless (ref($r)) {
a0d0e21e 3525 print "r is not a reference at all.\n";
54310121 3526 }
2b5ab1e7
TC
3527 if (UNIVERSAL::isa($r, "HASH")) { # for subclassing
3528 print "r is a reference to something that isa hash.\n";
3529 }
a0d0e21e
LW
3530
3531See also L<perlref>.
3532
3533=item rename OLDNAME,NEWNAME
3534
19799a22
GS
3535Changes the name of a file; an existing file NEWNAME will be
3536clobbered. Returns true for success, false otherwise.
3537
2b5ab1e7
TC
3538Behavior of this function varies wildly depending on your system
3539implementation. For example, it will usually not work across file system
3540boundaries, even though the system I<mv> command sometimes compensates
3541for this. Other restrictions include whether it works on directories,
3542open files, or pre-existing files. Check L<perlport> and either the
3543rename(2) manpage or equivalent system documentation for details.
a0d0e21e 3544
16070b82
GS
3545=item require VERSION
3546
a0d0e21e
LW
3547=item require EXPR
3548
3549=item require
3550
7660c0ab 3551Demands some semantics specified by EXPR, or by C<$_> if EXPR is not
16070b82
GS
3552supplied. If a version number or tuple is specified, or if EXPR is
3553numeric, demands that the current version of Perl
3554(C<$^V> or C<$]> or $PERL_VERSION) be equal or greater than EXPR.
a0d0e21e
LW
3555
3556Otherwise, demands that a library file be included if it hasn't already
3557been included. The file is included via the do-FILE mechanism, which is
19799a22 3558essentially just a variety of C<eval>. Has semantics similar to the following
a0d0e21e
LW
3559subroutine:
3560
3561 sub require {
5a964f20 3562 my($filename) = @_;
a0d0e21e 3563 return 1 if $INC{$filename};
5a964f20 3564 my($realfilename,$result);
a0d0e21e
LW
3565 ITER: {
3566 foreach $prefix (@INC) {
3567 $realfilename = "$prefix/$filename";
3568 if (-f $realfilename) {
f784dfa3 3569 $INC{$filename} = $realfilename;
a0d0e21e
LW
3570 $result = do $realfilename;
3571 last ITER;
3572 }
3573 }
3574 die "Can't find $filename in \@INC";
3575 }
f784dfa3 3576 delete $INC{$filename} if $@ || !$result;
a0d0e21e
LW
3577 die $@ if $@;
3578 die "$filename did not return true value" unless $result;
5a964f20 3579 return $result;
a0d0e21e
LW
3580 }
3581
3582Note that the file will not be included twice under the same specified
19799a22 3583name. The file must return true as the last statement to indicate
a0d0e21e 3584successful execution of any initialization code, so it's customary to
19799a22
GS
3585end such a file with C<1;> unless you're sure it'll return true
3586otherwise. But it's better just to put the C<1;>, in case you add more
a0d0e21e
LW
3587statements.
3588
54310121 3589If EXPR is a bareword, the require assumes a "F<.pm>" extension and
da0045b7 3590replaces "F<::>" with "F</>" in the filename for you,
54310121 3591to make it easy to load standard modules. This form of loading of
a0d0e21e
LW
3592modules does not risk altering your namespace.
3593
ee580363
GS
3594In other words, if you try this:
3595
f86cebdf 3596 require Foo::Bar; # a splendid bareword
ee580363 3597
7660c0ab
A
3598The require function will actually look for the "F<Foo/Bar.pm>" file in the
3599directories specified in the C<@INC> array.
ee580363 3600
5a964f20 3601But if you try this:
ee580363
GS
3602
3603 $class = 'Foo::Bar';
f86cebdf 3604 require $class; # $class is not a bareword
5a964f20 3605 #or
f86cebdf 3606 require "Foo::Bar"; # not a bareword because of the ""
ee580363 3607
7660c0ab 3608The require function will look for the "F<Foo::Bar>" file in the @INC array and
19799a22 3609will complain about not finding "F<Foo::Bar>" there. In this case you can do:
ee580363
GS
3610
3611 eval "require $class";
3612
3613For a yet-more-powerful import facility, see L</use> and L<perlmod>.
a0d0e21e
LW
3614
3615=item reset EXPR
3616
3617=item reset
3618
3619Generally used in a C<continue> block at the end of a loop to clear
7660c0ab 3620variables and reset C<??> searches so that they work again. The
a0d0e21e
LW
3621expression is interpreted as a list of single characters (hyphens
3622allowed for ranges). All variables and arrays beginning with one of
3623those letters are reset to their pristine state. If the expression is
7660c0ab 3624omitted, one-match searches (C<?pattern?>) are reset to match again. Resets
5f05dabc 3625only variables or searches in the current package. Always returns
a0d0e21e
LW
36261. Examples:
3627
3628 reset 'X'; # reset all X variables
3629 reset 'a-z'; # reset lower case variables
2b5ab1e7 3630 reset; # just reset ?one-time? searches
a0d0e21e 3631
7660c0ab 3632Resetting C<"A-Z"> is not recommended because you'll wipe out your
2b5ab1e7
TC
3633C<@ARGV> and C<@INC> arrays and your C<%ENV> hash. Resets only package
3634variables--lexical variables are unaffected, but they clean themselves
3635up on scope exit anyway, so you'll probably want to use them instead.
3636See L</my>.
a0d0e21e 3637
54310121 3638=item return EXPR
3639
3640=item return
3641
19799a22 3642Returns from a subroutine, C<eval>, or C<do FILE> with the value
5a964f20 3643given in EXPR. Evaluation of EXPR may be in list, scalar, or void
54310121 3644context, depending on how the return value will be used, and the context
19799a22 3645may vary from one execution to the next (see C<wantarray>). If no EXPR
2b5ab1e7
TC
3646is given, returns an empty list in list context, the undefined value in
3647scalar context, and (of course) nothing at all in a void context.
a0d0e21e 3648
2b5ab1e7
TC
3649(Note that in the absence of a explicit C<return>, a subroutine, eval,
3650or do FILE will automatically return the value of the last expression
3651evaluated.)
a0d0e21e
LW
3652
3653=item reverse LIST
3654
5a964f20
TC
3655In list context, returns a list value consisting of the elements
3656of LIST in the opposite order. In scalar context, concatenates the
2b5ab1e7 3657elements of LIST and returns a string value with all characters
a0ed51b3 3658in the opposite order.
4633a7c4 3659
2f9daede 3660 print reverse <>; # line tac, last line first
4633a7c4 3661
2f9daede 3662 undef $/; # for efficiency of <>
a0ed51b3 3663 print scalar reverse <>; # character tac, last line tsrif
2f9daede
TP
3664
3665This operator is also handy for inverting a hash, although there are some
3666caveats. If a value is duplicated in the original hash, only one of those
3667can be represented as a key in the inverted hash. Also, this has to
3668unwind one hash and build a whole new one, which may take some time
2b5ab1e7 3669on a large hash, such as from a DBM file.
2f9daede
TP
3670
3671 %by_name = reverse %by_address; # Invert the hash
a0d0e21e
LW
3672
3673=item rewinddir DIRHANDLE
3674
3675Sets the current position to the beginning of the directory for the
19799a22 3676C<readdir> routine on DIRHANDLE.
a0d0e21e
LW
3677
3678=item rindex STR,SUBSTR,POSITION
3679
3680=item rindex STR,SUBSTR
3681
2b5ab1e7 3682Works just like index() except that it returns the position of the LAST
a0d0e21e
LW
3683occurrence of SUBSTR in STR. If POSITION is specified, returns the
3684last occurrence at or before that position.
3685
3686=item rmdir FILENAME
3687
54310121 3688=item rmdir
bbce6d69 3689
5a964f20 3690Deletes the directory specified by FILENAME if that directory is empty. If it
19799a22 3691succeeds it returns true, otherwise it returns false and sets C<$!> (errno). If
7660c0ab 3692FILENAME is omitted, uses C<$_>.
a0d0e21e
LW
3693
3694=item s///
3695
3696The substitution operator. See L<perlop>.
3697
3698=item scalar EXPR
3699
5a964f20 3700Forces EXPR to be interpreted in scalar context and returns the value
54310121 3701of EXPR.
cb1a09d0
AD
3702
3703 @counts = ( scalar @a, scalar @b, scalar @c );
3704
54310121 3705There is no equivalent operator to force an expression to
2b5ab1e7 3706be interpolated in list context because in practice, this is never
cb1a09d0
AD
3707needed. If you really wanted to do so, however, you could use
3708the construction C<@{[ (some expression) ]}>, but usually a simple
3709C<(some expression)> suffices.
a0d0e21e 3710
19799a22 3711Because C<scalar> is unary operator, if you accidentally use for EXPR a
2b5ab1e7
TC
3712parenthesized list, this behaves as a scalar comma expression, evaluating
3713all but the last element in void context and returning the final element
3714evaluated in scalar context. This is seldom what you want.
62c18ce2
GS
3715
3716The following single statement:
3717
3718 print uc(scalar(&foo,$bar)),$baz;
3719
3720is the moral equivalent of these two:
3721
3722 &foo;
3723 print(uc($bar),$baz);
3724
3725See L<perlop> for more details on unary operators and the comma operator.
3726
a0d0e21e
LW
3727=item seek FILEHANDLE,POSITION,WHENCE
3728
19799a22 3729Sets FILEHANDLE's position, just like the C<fseek> call of C<stdio>.
8903cb82 3730FILEHANDLE may be an expression whose value gives the name of the
7660c0ab 3731filehandle. The values for WHENCE are C<0> to set the new position to
ac88732c
JH
3732POSITION, C<1> to set it to the current position plus POSITION, and
3733C<2> to set it to EOF plus POSITION (typically negative). For WHENCE
3734you may use the constants C<SEEK_SET>, C<SEEK_CUR>, and C<SEEK_END>
ca6e1c26
JH
3735(start of the file, current position, end of the file) from the Fcntl
3736module. Returns C<1> upon success, C<0> otherwise.
8903cb82 3737
19799a22
GS
3738If you want to position file for C<sysread> or C<syswrite>, don't use
3739C<seek>--buffering makes its effect on the file's system position
3740unpredictable and non-portable. Use C<sysseek> instead.
a0d0e21e 3741
2b5ab1e7
TC
3742Due to the rules and rigors of ANSI C, on some systems you have to do a
3743seek whenever you switch between reading and writing. Amongst other
3744things, this may have the effect of calling stdio's clearerr(3).
3745A WHENCE of C<1> (C<SEEK_CUR>) is useful for not moving the file position:
cb1a09d0
AD
3746
3747 seek(TEST,0,1);
3748
3749This is also useful for applications emulating C<tail -f>. Once you hit
3750EOF on your read, and then sleep for a while, you might have to stick in a
19799a22 3751seek() to reset things. The C<seek> doesn't change the current position,
8903cb82 3752but it I<does> clear the end-of-file condition on the handle, so that the
3753next C<E<lt>FILEE<gt>> makes Perl try again to read something. We hope.
cb1a09d0
AD
3754
3755If that doesn't work (some stdios are particularly cantankerous), then
3756you may need something more like this:
3757
3758 for (;;) {
f86cebdf
GS
3759 for ($curpos = tell(FILE); $_ = <FILE>;
3760 $curpos = tell(FILE)) {
cb1a09d0
AD
3761 # search for some stuff and put it into files
3762 }
3763 sleep($for_a_while);
3764 seek(FILE, $curpos, 0);
3765 }
3766
a0d0e21e
LW
3767=item seekdir DIRHANDLE,POS
3768
19799a22
GS
3769Sets the current position for the C<readdir> routine on DIRHANDLE. POS
3770must be a value returned by C<telldir>. Has the same caveats about
a0d0e21e
LW
3771possible directory compaction as the corresponding system library
3772routine.
3773
3774=item select FILEHANDLE
3775
3776=item select
3777
3778Returns the currently selected filehandle. Sets the current default
3779filehandle for output, if FILEHANDLE is supplied. This has two
19799a22 3780effects: first, a C<write> or a C<print> without a filehandle will
a0d0e21e
LW
3781default to this FILEHANDLE. Second, references to variables related to
3782output will refer to this output channel. For example, if you have to
3783set the top of form format for more than one output channel, you might
3784do the following:
3785
3786 select(REPORT1);
3787 $^ = 'report1_top';
3788 select(REPORT2);
3789 $^ = 'report2_top';
3790
3791FILEHANDLE may be an expression whose value gives the name of the
3792actual filehandle. Thus:
3793
3794 $oldfh = select(STDERR); $| = 1; select($oldfh);
3795
4633a7c4
LW
3796Some programmers may prefer to think of filehandles as objects with
3797methods, preferring to write the last example as:
a0d0e21e 3798
28757baa 3799 use IO::Handle;
a0d0e21e
LW
3800 STDERR->autoflush(1);
3801
3802=item select RBITS,WBITS,EBITS,TIMEOUT
3803
f86cebdf 3804This calls the select(2) system call with the bit masks specified, which
19799a22 3805can be constructed using C<fileno> and C<vec>, along these lines:
a0d0e21e
LW
3806
3807 $rin = $win = $ein = '';
3808 vec($rin,fileno(STDIN),1) = 1;
3809 vec($win,fileno(STDOUT),1) = 1;
3810 $ein = $rin | $win;
3811
3812If you want to select on many filehandles you might wish to write a
3813subroutine:
3814
3815 sub fhbits {
5a964f20
TC
3816 my(@fhlist) = split(' ',$_[0]);
3817 my($bits);
a0d0e21e
LW
3818 for (@fhlist) {
3819 vec($bits,fileno($_),1) = 1;
3820 }
3821 $bits;
3822 }
4633a7c4 3823 $rin = fhbits('STDIN TTY SOCK');
a0d0e21e
LW
3824
3825The usual idiom is:
3826
3827 ($nfound,$timeleft) =
3828 select($rout=$rin, $wout=$win, $eout=$ein, $timeout);
3829
54310121 3830or to block until something becomes ready just do this
a0d0e21e
LW
3831
3832 $nfound = select($rout=$rin, $wout=$win, $eout=$ein, undef);
3833
19799a22
GS
3834Most systems do not bother to return anything useful in $timeleft, so
3835calling select() in scalar context just returns $nfound.
c07a80fd 3836
5f05dabc 3837Any of the bit masks can also be undef. The timeout, if specified, is
a0d0e21e 3838in seconds, which may be fractional. Note: not all implementations are
19799a22
GS
3839capable of returning the$timeleft. If not, they always return
3840$timeleft equal to the supplied $timeout.
a0d0e21e 3841
ff68c719 3842You can effect a sleep of 250 milliseconds this way:
a0d0e21e
LW
3843
3844 select(undef, undef, undef, 0.25);
3845
19799a22
GS
3846B<WARNING>: One should not attempt to mix buffered I/O (like C<read>
3847or E<lt>FHE<gt>) with C<select>, except as permitted by POSIX, and even
3848then only on POSIX systems. You have to use C<sysread> instead.
a0d0e21e
LW
3849
3850=item semctl ID,SEMNUM,CMD,ARG
3851
19799a22 3852Calls the System V IPC function C<semctl>. You'll probably have to say
0ade1984
JH
3853
3854 use IPC::SysV;
3855
3856first to get the correct constant definitions. If CMD is IPC_STAT or
3857GETALL, then ARG must be a variable which will hold the returned
19799a22
GS
3858semid_ds structure or semaphore value array. Returns like C<ioctl>: the
3859undefined value for error, "C<0 but true>" for zero, or the actual return
7660c0ab 3860value otherwise. See also C<IPC::SysV> and C<IPC::Semaphore> documentation.
a0d0e21e
LW
3861
3862=item semget KEY,NSEMS,FLAGS
3863
3864Calls the System V IPC function semget. Returns the semaphore id, or
7660c0ab
A
3865the undefined value if there is an error. See also C<IPC::SysV> and
3866C<IPC::SysV::Semaphore> documentation.
a0d0e21e
LW
3867
3868=item semop KEY,OPSTRING
3869
3870Calls the System V IPC function semop to perform semaphore operations
3871such as signaling and waiting. OPSTRING must be a packed array of
3872semop structures. Each semop structure can be generated with
3873C<pack("sss", $semnum, $semop, $semflag)>. The number of semaphore
19799a22
GS
3874operations is implied by the length of OPSTRING. Returns true if
3875successful, or false if there is an error. As an example, the
3876following code waits on semaphore $semnum of semaphore id $semid:
a0d0e21e
LW
3877
3878 $semop = pack("sss", $semnum, -1, 0);
3879 die "Semaphore trouble: $!\n" unless semop($semid, $semop);
3880
7660c0ab
A
3881To signal the semaphore, replace C<-1> with C<1>. See also C<IPC::SysV>
3882and C<IPC::SysV::Semaphore> documentation.
a0d0e21e
LW
3883
3884=item send SOCKET,MSG,FLAGS,TO
3885
3886=item send SOCKET,MSG,FLAGS
3887
3888Sends a message on a socket. Takes the same flags as the system call
3889of the same name. On unconnected sockets you must specify a
19799a22 3890destination to send TO, in which case it does a C C<sendto>. Returns
a0d0e21e 3891the number of characters sent, or the undefined value if there is an
2b5ab1e7 3892error. The C system call sendmsg(2) is currently unimplemented.
4633a7c4 3893See L<perlipc/"UDP: Message Passing"> for examples.
a0d0e21e
LW
3894
3895=item setpgrp PID,PGRP
3896
7660c0ab 3897Sets the current process group for the specified PID, C<0> for the current
a0d0e21e 3898process. Will produce a fatal error if used on a machine that doesn't
81777298
GS
3899implement POSIX setpgid(2) or BSD setpgrp(2). If the arguments are omitted,
3900it defaults to C<0,0>. Note that the BSD 4.2 version of C<setpgrp> does not
3901accept any arguments, so only C<setpgrp(0,0)> is portable. See also
3902C<POSIX::setsid()>.
a0d0e21e
LW
3903
3904=item setpriority WHICH,WHO,PRIORITY
3905
3906Sets the current priority for a process, a process group, or a user.
f86cebdf
GS
3907(See setpriority(2).) Will produce a fatal error if used on a machine
3908that doesn't implement setpriority(2).
a0d0e21e
LW
3909
3910=item setsockopt SOCKET,LEVEL,OPTNAME,OPTVAL
3911
3912Sets the socket option requested. Returns undefined if there is an
7660c0ab 3913error. OPTVAL may be specified as C<undef> if you don't want to pass an
a0d0e21e
LW
3914argument.
3915
3916=item shift ARRAY
3917
3918=item shift
3919
3920Shifts the first value of the array off and returns it, shortening the
3921array by 1 and moving everything down. If there are no elements in the
3922array, returns the undefined value. If ARRAY is omitted, shifts the
7660c0ab
A
3923C<@_> array within the lexical scope of subroutines and formats, and the
3924C<@ARGV> array at file scopes or within the lexical scopes established by
7d30b5c4 3925the C<eval ''>, C<BEGIN {}>, C<INIT {}>, C<CHECK {}>, and C<END {}>
4f25aa18
GS
3926constructs.
3927
19799a22
GS
3928See also C<unshift>, C<push>, and C<pop>. C<Shift()> and C<unshift> do the
3929same thing to the left end of an array that C<pop> and C<push> do to the
977336f5 3930right end.
a0d0e21e
LW
3931
3932=item shmctl ID,CMD,ARG
3933
0ade1984
JH
3934Calls the System V IPC function shmctl. You'll probably have to say
3935
3936 use IPC::SysV;
3937
7660c0ab
A
3938first to get the correct constant definitions. If CMD is C<IPC_STAT>,
3939then ARG must be a variable which will hold the returned C<shmid_ds>
3940structure. Returns like ioctl: the undefined value for error, "C<0> but
0ade1984 3941true" for zero, or the actual return value otherwise.
7660c0ab 3942See also C<IPC::SysV> documentation.
a0d0e21e
LW
3943
3944=item shmget KEY,SIZE,FLAGS
3945
3946Calls the System V IPC function shmget. Returns the shared memory
3947segment id, or the undefined value if there is an error.
7660c0ab 3948See also C<IPC::SysV> documentation.
a0d0e21e
LW
3949
3950=item shmread ID,VAR,POS,SIZE
3951
3952=item shmwrite ID,STRING,POS,SIZE
3953
3954Reads or writes the System V shared memory segment ID starting at
3955position POS for size SIZE by attaching to it, copying in/out, and
5a964f20 3956detaching from it. When reading, VAR must be a variable that will
a0d0e21e
LW
3957hold the data read. When writing, if STRING is too long, only SIZE
3958bytes are used; if STRING is too short, nulls are written to fill out
19799a22 3959SIZE bytes. Return true if successful, or false if there is an error.
2b5ab1e7
TC
3960See also C<IPC::SysV> documentation and the C<IPC::Shareable> module
3961from CPAN.
a0d0e21e
LW
3962
3963=item shutdown SOCKET,HOW
3964
3965Shuts down a socket connection in the manner indicated by HOW, which
3966has the same interpretation as in the system call of the same name.
3967
f86cebdf
GS
3968 shutdown(SOCKET, 0); # I/we have stopped reading data
3969 shutdown(SOCKET, 1); # I/we have stopped writing data
3970 shutdown(SOCKET, 2); # I/we have stopped using this socket
5a964f20
TC
3971
3972This is useful with sockets when you want to tell the other
3973side you're done writing but not done reading, or vice versa.
3974It's also a more insistent form of close because it also
19799a22 3975disables the file descriptor in any forked copies in other
5a964f20
TC
3976processes.
3977
a0d0e21e
LW
3978=item sin EXPR
3979
54310121 3980=item sin
bbce6d69 3981
a0d0e21e 3982Returns the sine of EXPR (expressed in radians). If EXPR is omitted,
7660c0ab 3983returns sine of C<$_>.
a0d0e21e 3984
ca6e1c26 3985For the inverse sine operation, you may use the C<Math::Trig::asin>
28757baa 3986function, or use this relation:
3987
3988 sub asin { atan2($_[0], sqrt(1 - $_[0] * $_[0])) }
3989
a0d0e21e
LW
3990=item sleep EXPR
3991
3992=item sleep
3993
3994Causes the script to sleep for EXPR seconds, or forever if no EXPR.
7660c0ab 3995May be interrupted if the process receives a signal such as C<SIGALRM>.
1d3434b8 3996Returns the number of seconds actually slept. You probably cannot
19799a22
GS
3997mix C<alarm> and C<sleep> calls, because C<sleep> is often implemented
3998using C<alarm>.
a0d0e21e
LW
3999
4000On some older systems, it may sleep up to a full second less than what
4001you requested, depending on how it counts seconds. Most modern systems
5a964f20
TC
4002always sleep the full amount. They may appear to sleep longer than that,
4003however, because your process might not be scheduled right away in a
4004busy multitasking system.
a0d0e21e 4005
cb1a09d0 4006For delays of finer granularity than one second, you may use Perl's
68f8bed4
JH
4007C<syscall> interface to access setitimer(2) if your system supports
4008it, or else see L</select> above. The Time::HiRes module from CPAN
4009may also help.
cb1a09d0 4010
19799a22 4011See also the POSIX module's C<sigpause> function.
5f05dabc 4012
a0d0e21e
LW
4013=item socket SOCKET,DOMAIN,TYPE,PROTOCOL
4014
4015Opens a socket of the specified kind and attaches it to filehandle
19799a22
GS
4016SOCKET. DOMAIN, TYPE, and PROTOCOL are specified the same as for
4017the system call of the same name. You should C<use Socket> first
4018to get the proper definitions imported. See the examples in
4019L<perlipc/"Sockets: Client/Server Communication">.
a0d0e21e 4020
8d2a6795
GS
4021On systems that support a close-on-exec flag on files, the flag will
4022be set for the newly opened file descriptor, as determined by the
4023value of $^F. See L<perlvar/$^F>.
4024
a0d0e21e
LW
4025=item socketpair SOCKET1,SOCKET2,DOMAIN,TYPE,PROTOCOL
4026
4027Creates an unnamed pair of sockets in the specified domain, of the
5f05dabc 4028specified type. DOMAIN, TYPE, and PROTOCOL are specified the same as
a0d0e21e 4029for the system call of the same name. If unimplemented, yields a fatal
19799a22 4030error. Returns true if successful.
a0d0e21e 4031
8d2a6795
GS
4032On systems that support a close-on-exec flag on files, the flag will
4033be set for the newly opened file descriptors, as determined by the value
4034of $^F. See L<perlvar/$^F>.
4035
19799a22 4036Some systems defined C<pipe> in terms of C<socketpair>, in which a call
5a964f20
TC
4037to C<pipe(Rdr, Wtr)> is essentially:
4038
4039 use Socket;
4040 socketpair(Rdr, Wtr, AF_UNIX, SOCK_STREAM, PF_UNSPEC);
4041 shutdown(Rdr, 1); # no more writing for reader
4042 shutdown(Wtr, 0); # no more reading for writer
4043
4044See L<perlipc> for an example of socketpair use.
4045
a0d0e21e
LW
4046=item sort SUBNAME LIST
4047
4048=item sort BLOCK LIST
4049
4050=item sort LIST
4051
2f9daede 4052Sorts the LIST and returns the sorted list value. If SUBNAME or BLOCK
19799a22 4053is omitted, C<sort>s in standard string comparison order. If SUBNAME is
2f9daede 4054specified, it gives the name of a subroutine that returns an integer
7660c0ab 4055less than, equal to, or greater than C<0>, depending on how the elements
19799a22 4056of the list are to be ordered. (The C<E<lt>=E<gt>> and C<cmp>
2f9daede 4057operators are extremely useful in such routines.) SUBNAME may be a
1d3434b8
GS
4058scalar variable name (unsubscripted), in which case the value provides
4059the name of (or a reference to) the actual subroutine to use. In place
4060of a SUBNAME, you can provide a BLOCK as an anonymous, in-line sort
4061subroutine.
a0d0e21e 4062
43481408
GS
4063If the subroutine's prototype is C<($$)>, the elements to be compared
4064are passed by reference in C<@_>, as for a normal subroutine. If not,
4065the normal calling code for subroutines is bypassed in the interests of
4066efficiency, and the elements to be compared are passed into the subroutine
4067as the package global variables $a and $b (see example below). Note that
4068in the latter case, it is usually counter-productive to declare $a and
4069$b as lexicals.
4070
4071In either case, the subroutine may not be recursive. The values to be
4072compared are always passed by reference, so don't modify them.
a0d0e21e 4073
0a753a76 4074You also cannot exit out of the sort block or subroutine using any of the
19799a22 4075loop control operators described in L<perlsyn> or with C<goto>.
0a753a76 4076
a034a98d
DD
4077When C<use locale> is in effect, C<sort LIST> sorts LIST according to the
4078current collation locale. See L<perllocale>.
4079
a0d0e21e
LW
4080Examples:
4081
4082 # sort lexically
4083 @articles = sort @files;
4084
4085 # same thing, but with explicit sort routine
4086 @articles = sort {$a cmp $b} @files;
4087
cb1a09d0 4088 # now case-insensitively
54310121 4089 @articles = sort {uc($a) cmp uc($b)} @files;
cb1a09d0 4090
a0d0e21e
LW
4091 # same thing in reversed order
4092 @articles = sort {$b cmp $a} @files;
4093
4094 # sort numerically ascending
4095 @articles = sort {$a <=> $b} @files;
4096
4097 # sort numerically descending
4098 @articles = sort {$b <=> $a} @files;
4099
19799a22
GS
4100 # this sorts the %age hash by value instead of key
4101 # using an in-line function
4102 @eldest = sort { $age{$b} <=> $age{$a} } keys %age;
4103
a0d0e21e
LW
4104 # sort using explicit subroutine name
4105 sub byage {
2f9daede 4106 $age{$a} <=> $age{$b}; # presuming numeric
a0d0e21e
LW
4107 }
4108 @sortedclass = sort byage @class;
4109
19799a22
GS
4110 sub backwards { $b cmp $a }
4111 @harry = qw(dog cat x Cain Abel);
4112 @george = qw(gone chased yz Punished Axed);
a0d0e21e
LW
4113 print sort @harry;
4114 # prints AbelCaincatdogx
4115 print sort backwards @harry;
4116 # prints xdogcatCainAbel
4117 print sort @george, 'to', @harry;
4118 # prints AbelAxedCainPunishedcatchaseddoggonetoxyz
4119
54310121 4120 # inefficiently sort by descending numeric compare using
4121 # the first integer after the first = sign, or the
cb1a09d0
AD
4122 # whole record case-insensitively otherwise
4123
4124 @new = sort {
4125 ($b =~ /=(\d+)/)[0] <=> ($a =~ /=(\d+)/)[0]
4126 ||
4127 uc($a) cmp uc($b)
4128 } @old;
4129
4130 # same thing, but much more efficiently;
4131 # we'll build auxiliary indices instead
4132 # for speed
4133 @nums = @caps = ();
54310121 4134 for (@old) {
cb1a09d0
AD
4135 push @nums, /=(\d+)/;
4136 push @caps, uc($_);
54310121 4137 }
cb1a09d0
AD
4138
4139 @new = @old[ sort {
4140 $nums[$b] <=> $nums[$a]
4141 ||
4142 $caps[$a] cmp $caps[$b]
4143 } 0..$#old
4144 ];
4145
19799a22 4146 # same thing, but without any temps
cb1a09d0 4147 @new = map { $_->[0] }
19799a22
GS
4148 sort { $b->[1] <=> $a->[1]
4149 ||
4150 $a->[2] cmp $b->[2]
4151 } map { [$_, /=(\d+)/, uc($_)] } @old;
43481408
GS
4152
4153 # using a prototype allows you to use any comparison subroutine
4154 # as a sort subroutine (including other package's subroutines)
4155 package other;
4156 sub backwards ($$) { $_[1] cmp $_[0]; } # $a and $b are not set here
4157
4158 package main;
4159 @new = sort other::backwards @old;
cb1a09d0 4160
19799a22
GS
4161If you're using strict, you I<must not> declare $a
4162and $b as lexicals. They are package globals. That means
cb1a09d0
AD
4163if you're in the C<main> package, it's
4164
4165 @articles = sort {$main::b <=> $main::a} @files;
4166
4167or just
4168
4169 @articles = sort {$::b <=> $::a} @files;
4170
4171but if you're in the C<FooPack> package, it's
4172
4173 @articles = sort {$FooPack::b <=> $FooPack::a} @files;
4174
55497cff 4175The comparison function is required to behave. If it returns
7660c0ab
A
4176inconsistent results (sometimes saying C<$x[1]> is less than C<$x[2]> and
4177sometimes saying the opposite, for example) the results are not
4178well-defined.
55497cff 4179
a0d0e21e
LW
4180=item splice ARRAY,OFFSET,LENGTH,LIST
4181
4182=item splice ARRAY,OFFSET,LENGTH
4183
4184=item splice ARRAY,OFFSET
4185
453f9044
GS
4186=item splice ARRAY
4187
a0d0e21e 4188Removes the elements designated by OFFSET and LENGTH from an array, and
5a964f20
TC
4189replaces them with the elements of LIST, if any. In list context,
4190returns the elements removed from the array. In scalar context,
43051805 4191returns the last element removed, or C<undef> if no elements are
48cdf507 4192removed. The array grows or shrinks as necessary.
19799a22 4193If OFFSET is negative then it starts that far from the end of the array.
48cdf507 4194If LENGTH is omitted, removes everything from OFFSET onward.
453f9044
GS
4195If LENGTH is negative, leaves that many elements off the end of the array.
4196If both OFFSET and LENGTH are omitted, removes everything.
4197
48cdf507 4198The following equivalences hold (assuming C<$[ == 0>):
a0d0e21e 4199
48cdf507 4200 push(@a,$x,$y) splice(@a,@a,0,$x,$y)
a0d0e21e
LW
4201 pop(@a) splice(@a,-1)
4202 shift(@a) splice(@a,0,1)
4203 unshift(@a,$x,$y) splice(@a,0,0,$x,$y)
5a964f20 4204 $a[$x] = $y splice(@a,$x,1,$y)
a0d0e21e
LW
4205
4206Example, assuming array lengths are passed before arrays:
4207
4208 sub aeq { # compare two list values
5a964f20
TC
4209 my(@a) = splice(@_,0,shift);
4210 my(@b) = splice(@_,0,shift);
a0d0e21e
LW
4211 return 0 unless @a == @b; # same len?
4212 while (@a) {
4213 return 0 if pop(@a) ne pop(@b);
4214 }
4215 return 1;
4216 }
4217 if (&aeq($len,@foo[1..$len],0+@bar,@bar)) { ... }
4218
4219=item split /PATTERN/,EXPR,LIMIT
4220
4221=item split /PATTERN/,EXPR
4222
4223=item split /PATTERN/
4224
4225=item split
4226
19799a22 4227Splits a string into a list of strings and returns that list. By default,
5a964f20 4228empty leading fields are preserved, and empty trailing ones are deleted.
a0d0e21e 4229
5a964f20 4230If not in list context, returns the number of fields found and splits into
7660c0ab 4231the C<@_> array. (In list context, you can force the split into C<@_> by
1d2dff63 4232using C<??> as the pattern delimiters, but it still returns the list
7660c0ab 4233value.) The use of implicit split to C<@_> is deprecated, however, because
5a964f20 4234it clobbers your subroutine arguments.
a0d0e21e 4235
7660c0ab 4236If EXPR is omitted, splits the C<$_> string. If PATTERN is also omitted,
4633a7c4
LW
4237splits on whitespace (after skipping any leading whitespace). Anything
4238matching PATTERN is taken to be a delimiter separating the fields. (Note
fb73857a 4239that the delimiter may be longer than one character.)
4240
5a964f20 4241If LIMIT is specified and positive, splits into no more than that
7b8d334a
GS
4242many fields (though it may split into fewer). If LIMIT is unspecified
4243or zero, trailing null fields are stripped (which potential users
19799a22 4244of C<pop> would do well to remember). If LIMIT is negative, it is
fb73857a 4245treated as if an arbitrarily large LIMIT had been specified.
a0d0e21e
LW
4246
4247A pattern matching the null string (not to be confused with
748a9306 4248a null pattern C<//>, which is just one member of the set of patterns
a0d0e21e
LW
4249matching a null string) will split the value of EXPR into separate
4250characters at each point it matches that way. For example:
4251
4252 print join(':', split(/ */, 'hi there'));
4253
4254produces the output 'h:i:t:h:e:r:e'.
4255
5f05dabc 4256The LIMIT parameter can be used to split a line partially
a0d0e21e
LW
4257
4258 ($login, $passwd, $remainder) = split(/:/, $_, 3);
4259
4260When assigning to a list, if LIMIT is omitted, Perl supplies a LIMIT
4261one larger than the number of variables in the list, to avoid
4262unnecessary work. For the list above LIMIT would have been 4 by
4263default. In time critical applications it behooves you not to split
4264into more fields than you really need.
4265
19799a22 4266If the PATTERN contains parentheses, additional list elements are
a0d0e21e
LW
4267created from each matching substring in the delimiter.
4268
da0045b7 4269 split(/([,-])/, "1-10,20", 3);
a0d0e21e
LW
4270
4271produces the list value
4272
4273 (1, '-', 10, ',', 20)
4274
19799a22 4275If you had the entire header of a normal Unix email message in $header,
4633a7c4
LW
4276you could split it up into fields and their values this way:
4277
4278 $header =~ s/\n\s+/ /g; # fix continuation lines
fb73857a 4279 %hdrs = (UNIX_FROM => split /^(\S*?):\s*/m, $header);
4633a7c4 4280
a0d0e21e
LW
4281The pattern C</PATTERN/> may be replaced with an expression to specify
4282patterns that vary at runtime. (To do runtime compilation only once,
748a9306
LW
4283use C</$variable/o>.)
4284
4285As a special case, specifying a PATTERN of space (C<' '>) will split on
19799a22 4286white space just as C<split> with no arguments does. Thus, C<split(' ')> can
748a9306
LW
4287be used to emulate B<awk>'s default behavior, whereas C<split(/ /)>
4288will give you as many null initial fields as there are leading spaces.
19799a22
GS
4289A C<split> on C</\s+/> is like a C<split(' ')> except that any leading
4290whitespace produces a null first field. A C<split> with no arguments
748a9306 4291really does a C<split(' ', $_)> internally.
a0d0e21e
LW
4292
4293Example:
4294
5a964f20
TC
4295 open(PASSWD, '/etc/passwd');
4296 while (<PASSWD>) {
f86cebdf
GS
4297 ($login, $passwd, $uid, $gid,
4298 $gcos, $home, $shell) = split(/:/);
5a964f20 4299 #...
a0d0e21e
LW
4300 }
4301
19799a22 4302(Note that $shell above will still have a newline on it. See L</chop>,
a0d0e21e
LW
4303L</chomp>, and L</join>.)
4304
5f05dabc 4305=item sprintf FORMAT, LIST
a0d0e21e 4306
19799a22
GS
4307Returns a string formatted by the usual C<printf> conventions of the
4308C library function C<sprintf>. See L<sprintf(3)> or L<printf(3)>
74a77017
CS
4309on your system for an explanation of the general principles.
4310
19799a22
GS
4311Perl does its own C<sprintf> formatting--it emulates the C
4312function C<sprintf>, but it doesn't use it (except for floating-point
74a77017 4313numbers, and even then only the standard modifiers are allowed). As a
19799a22 4314result, any non-standard extensions in your local C<sprintf> are not
74a77017
CS
4315available from Perl.
4316
19799a22 4317Perl's C<sprintf> permits the following universally-known conversions:
74a77017
CS
4318
4319 %% a percent sign
4320 %c a character with the given number
4321 %s a string
4322 %d a signed integer, in decimal
4323 %u an unsigned integer, in decimal
4324 %o an unsigned integer, in octal
4325 %x an unsigned integer, in hexadecimal
4326 %e a floating-point number, in scientific notation
4327 %f a floating-point number, in fixed decimal notation
4328 %g a floating-point number, in %e or %f notation
4329
1b3f7d21 4330In addition, Perl permits the following widely-supported conversions:
74a77017 4331
74a77017
CS
4332 %X like %x, but using upper-case letters
4333 %E like %e, but using an upper-case "E"
4334 %G like %g, but with an upper-case "E" (if applicable)
4f19785b 4335 %b an unsigned integer, in binary
74a77017 4336 %p a pointer (outputs the Perl value's address in hexadecimal)
1b3f7d21
CS
4337 %n special: *stores* the number of characters output so far
4338 into the next variable in the parameter list
74a77017 4339
1b3f7d21
CS
4340Finally, for backward (and we do mean "backward") compatibility, Perl
4341permits these unnecessary but widely-supported conversions:
74a77017 4342
1b3f7d21 4343 %i a synonym for %d
74a77017
CS
4344 %D a synonym for %ld
4345 %U a synonym for %lu
4346 %O a synonym for %lo
4347 %F a synonym for %f
4348
4349Perl permits the following universally-known flags between the C<%>
4350and the conversion letter:
4351
4352 space prefix positive number with a space
4353 + prefix positive number with a plus sign
4354 - left-justify within the field
4355 0 use zeros, not spaces, to right-justify
a3cb178b 4356 # prefix non-zero octal with "0", non-zero hex with "0x"
74a77017 4357 number minimum field width
f86cebdf
GS
4358 .number "precision": digits after decimal point for
4359 floating-point, max length for string, minimum length
4360 for integer
74a77017 4361 l interpret integer as C type "long" or "unsigned long"
74a77017 4362 h interpret integer as C type "short" or "unsigned short"
661cc6a6 4363 If no flags, interpret integer as C type "int" or "unsigned"
74a77017 4364
4628e4f8 4365There are also two Perl-specific flags:
74a77017
CS
4366
4367 V interpret integer as Perl's standard integer type
b22c7a20
GS
4368 v interpret string as a vector of integers, output as
4369 numbers separated either by dots, or by an arbitrary
4370 string received from the argument list when the flag
4371 is preceded by C<*>
74a77017 4372
19799a22 4373Where a number would appear in the flags, an asterisk (C<*>) may be
74a77017
CS
4374used instead, in which case Perl uses the next item in the parameter
4375list as the given number (that is, as the field width or precision).
19799a22
GS
4376If a field width obtained through C<*> is negative, it has the same
4377effect as the C<-> flag: left-justification.
74a77017 4378
b22c7a20
GS
4379The C<v> flag is useful for displaying ordinal values of characters
4380in arbitrary strings:
4381
4382 printf "version is v%vd\n", $^V; # Perl's version
4383 printf "address is %*vX\n", ":", $addr; # IPv6 address
4384 printf "bits are %*vb\n", "", $bits; # random bitstring
4385
74a77017
CS
4386If C<use locale> is in effect, the character used for the decimal
4387point in formatted real numbers is affected by the LC_NUMERIC locale.
4388See L<perllocale>.
a0d0e21e 4389
07158430 4390If Perl understands "quads" (64-bit integers) (this requires
a8764340
GS
4391either that the platform natively support quads or that Perl
4392be specifically compiled to support quads), the characters
07158430
JH
4393
4394 d u o x X b i D U O
4395
4396print quads, and they may optionally be preceded by
4397
4398 ll L q
4399
4400For example
4401
4402 %lld %16LX %qo
4403
46465067 4404You can find out whether your Perl supports quads via L<Config>:
07158430
JH
4405
4406 use Config;
46465067
JH
4407 ($Config{use64bits} eq 'define' || $Config{longsize} == 8) &&
4408 print "quads\n";
07158430
JH
4409
4410If Perl understands "long doubles" (this requires that the platform
a8764340 4411support long doubles), the flags
07158430
JH
4412
4413 e f g E F G
4414
4415may optionally be preceded by
4416
4417 ll L
4418
4419For example
4420
4421 %llf %Lg
4422
4423You can find out whether your Perl supports long doubles via L<Config>:
4424
4425 use Config;
46465067 4426 $Config{d_longdbl} eq 'define' && print "long doubles\n";
07158430 4427
a0d0e21e
LW
4428=item sqrt EXPR
4429
54310121 4430=item sqrt
bbce6d69 4431
a0d0e21e 4432Return the square root of EXPR. If EXPR is omitted, returns square
2b5ab1e7
TC
4433root of C<$_>. Only works on non-negative operands, unless you've
4434loaded the standard Math::Complex module.
4435
4436 use Math::Complex;
4437 print sqrt(-2); # prints 1.4142135623731i
a0d0e21e
LW
4438
4439=item srand EXPR
4440
93dc8474
CS
4441=item srand
4442
19799a22 4443Sets the random number seed for the C<rand> operator. If EXPR is
73c60299
RS
4444omitted, uses a semi-random value supplied by the kernel (if it supports
4445the F</dev/urandom> device) or based on the current time and process
93dc8474 4446ID, among other things. In versions of Perl prior to 5.004 the default
19799a22 4447seed was just the current C<time>. This isn't a particularly good seed,
93dc8474 4448so many old programs supply their own seed value (often C<time ^ $$> or
7b8d334a 4449C<time ^ ($$ + ($$ E<lt>E<lt> 15))>), but that isn't necessary any more.
93dc8474 4450
19799a22 4451In fact, it's usually not necessary to call C<srand> at all, because if
93dc8474 4452it is not called explicitly, it is called implicitly at the first use of
19799a22 4453the C<rand> operator. However, this was not the case in version of Perl
2f9daede 4454before 5.004, so if your script will run under older Perl versions, it
19799a22 4455should call C<srand>.
93dc8474 4456
2f9daede
TP
4457Note that you need something much more random than the default seed for
4458cryptographic purposes. Checksumming the compressed output of one or more
4459rapidly changing operating system status programs is the usual method. For
4460example:
28757baa 4461
4462 srand (time ^ $$ ^ unpack "%L*", `ps axww | gzip`);
4463
7660c0ab 4464If you're particularly concerned with this, see the C<Math::TrulyRandom>
0078ec44
RS
4465module in CPAN.
4466
19799a22 4467Do I<not> call C<srand> multiple times in your program unless you know
28757baa 4468exactly what you're doing and why you're doing it. The point of the
19799a22 4469function is to "seed" the C<rand> function so that C<rand> can produce
28757baa 4470a different sequence each time you run your program. Just do it once at the
19799a22 4471top of your program, or you I<won't> get random numbers out of C<rand>!
28757baa 4472
54310121 4473Frequently called programs (like CGI scripts) that simply use
28757baa 4474
4475 time ^ $$
4476
54310121 4477for a seed can fall prey to the mathematical property that
28757baa 4478
4479 a^b == (a+1)^(b+1)
4480
0078ec44 4481one-third of the time. So don't do that.
f86702cc 4482
a0d0e21e
LW
4483=item stat FILEHANDLE
4484
4485=item stat EXPR
4486
54310121 4487=item stat
bbce6d69 4488
1d2dff63
GS
4489Returns a 13-element list giving the status info for a file, either
4490the file opened via FILEHANDLE, or named by EXPR. If EXPR is omitted,
7660c0ab 4491it stats C<$_>. Returns a null list if the stat fails. Typically used
1d2dff63 4492as follows:
a0d0e21e
LW
4493
4494 ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
4495 $atime,$mtime,$ctime,$blksize,$blocks)
4496 = stat($filename);
4497
54310121 4498Not all fields are supported on all filesystem types. Here are the
c07a80fd 4499meaning of the fields:
4500
54310121 4501 0 dev device number of filesystem
4502 1 ino inode number
4503 2 mode file mode (type and permissions)
4504 3 nlink number of (hard) links to the file
4505 4 uid numeric user ID of file's owner
4506 5 gid numeric group ID of file's owner
4507 6 rdev the device identifier (special files only)
4508 7 size total size of file, in bytes
1c74f1bd
GS
4509 8 atime last access time in seconds since the epoch
4510 9 mtime last modify time in seconds since the epoch
4511 10 ctime inode change time (NOT creation time!) in seconds since the epoch
54310121 4512 11 blksize preferred block size for file system I/O
4513 12 blocks actual number of blocks allocated
c07a80fd 4514
4515(The epoch was at 00:00 January 1, 1970 GMT.)
4516
a0d0e21e
LW
4517If stat is passed the special filehandle consisting of an underline, no
4518stat is done, but the current contents of the stat structure from the
4519last stat or filetest are returned. Example:
4520
4521 if (-x $file && (($d) = stat(_)) && $d < 0) {
4522 print "$file is executable NFS file\n";
4523 }
4524
ca6e1c26
JH
4525(This works on machines only for which the device number is negative
4526under NFS.)
a0d0e21e 4527
2b5ab1e7
TC
4528Because the mode contains both the file type and its permissions, you
4529should mask off the file type portion and (s)printf using a C<"%o">
4530if you want to see the real permissions.
4531
4532 $mode = (stat($filename))[2];
4533 printf "Permissions are %04o\n", $mode & 07777;
4534
19799a22 4535In scalar context, C<stat> returns a boolean value indicating success
1d2dff63
GS
4536or failure, and, if successful, sets the information associated with
4537the special filehandle C<_>.
4538
2b5ab1e7
TC
4539The File::stat module provides a convenient, by-name access mechanism:
4540
4541 use File::stat;
4542 $sb = stat($filename);
4543 printf "File is %s, size is %s, perm %04o, mtime %s\n",
4544 $filename, $sb->size, $sb->mode & 07777,
4545 scalar localtime $sb->mtime;
4546
ca6e1c26
JH
4547You can import symbolic mode constants (C<S_IF*>) and functions
4548(C<S_IS*>) from the Fcntl module:
4549
4550 use Fcntl ':mode';
4551
4552 $mode = (stat($filename))[2];
4553
4554 $user_rwx = ($mode & S_IRWXU) >> 6;
4555 $group_read = ($mode & S_IRGRP) >> 3;
4556 $other_execute = $mode & S_IXOTH;
4557
4558 printf "Permissions are %04o\n", S_ISMODE($mode), "\n";
4559
4560 $is_setuid = $mode & S_ISUID;
4561 $is_setgid = S_ISDIR($mode);
4562
4563You could write the last two using the C<-u> and C<-d> operators.
4564The commonly available S_IF* constants are
4565
4566 # Permissions: read, write, execute, for user, group, others.
4567
4568 S_IRWXU S_IRUSR S_IWUSR S_IXUSR
4569 S_IRWXG S_IRGRP S_IWGRP S_IXGRP
4570 S_IRWXO S_IROTH S_IWOTH S_IXOTH
4571
4572 # Setuid/Setgid/Stickiness.
4573
4574 S_ISUID S_ISGID S_ISVTX S_ISTXT
4575
4576 # File types. Not necessarily all are available on your system.
4577
4578 S_IFREG S_IFDIR S_IFLNK S_IFBLK S_ISCHR S_IFIFO S_IFSOCK S_IFWHT S_ENFMT
4579
4580 # The following are compatibility aliases for S_IRUSR, S_IWUSR, S_IXUSR.
4581
4582 S_IREAD S_IWRITE S_IEXEC
4583
4584and the S_IF* functions are
4585
4586 S_IFMODE($mode) the part of $mode containg the permission bits
4587 and the setuid/setgid/sticky bits
4588
4589 S_IFMT($mode) the part of $mode containing the file type
4590 which can be bit-anded with e.g. S_IFREG
4591 or with the following functions
4592
4593 # The operators -f, -d, -l, -b, -c, -p, and -s.
4594
4595 S_ISREG($mode) S_ISDIR($mode) S_ISLNK($mode)
4596 S_ISBLK($mode) S_ISCHR($mode) S_ISFIFO($mode) S_ISSOCK($mode)
4597
4598 # No direct -X operator counterpart, but for the first one
4599 # the -g operator is often equivalent. The ENFMT stands for
4600 # record flocking enforcement, a platform-dependent feature.
4601
4602 S_ISENFMT($mode) S_ISWHT($mode)
4603
4604See your native chmod(2) and stat(2) documentation for more details
4605about the S_* constants.
4606
a0d0e21e
LW
4607=item study SCALAR
4608
4609=item study
4610
184e9718 4611Takes extra time to study SCALAR (C<$_> if unspecified) in anticipation of
a0d0e21e
LW
4612doing many pattern matches on the string before it is next modified.
4613This may or may not save time, depending on the nature and number of
4614patterns you are searching on, and on the distribution of character
19799a22 4615frequencies in the string to be searched--you probably want to compare
5f05dabc 4616run times with and without it to see which runs faster. Those loops
a0d0e21e
LW
4617which scan for many short constant strings (including the constant
4618parts of more complex patterns) will benefit most. You may have only
19799a22
GS
4619one C<study> active at a time--if you study a different scalar the first
4620is "unstudied". (The way C<study> works is this: a linked list of every
a0d0e21e 4621character in the string to be searched is made, so we know, for
7660c0ab 4622example, where all the C<'k'> characters are. From each search string,
a0d0e21e
LW
4623the rarest character is selected, based on some static frequency tables
4624constructed from some C programs and English text. Only those places
4625that contain this "rarest" character are examined.)
4626
5a964f20 4627For example, here is a loop that inserts index producing entries
a0d0e21e
LW
4628before any line containing a certain pattern:
4629
4630 while (<>) {
4631 study;
2b5ab1e7
TC
4632 print ".IX foo\n" if /\bfoo\b/;
4633 print ".IX bar\n" if /\bbar\b/;
4634 print ".IX blurfl\n" if /\bblurfl\b/;
5a964f20 4635 # ...
a0d0e21e
LW
4636 print;
4637 }
4638
951ba7fe
GS
4639In searching for C</\bfoo\b/>, only those locations in C<$_> that contain C<f>
4640will be looked at, because C<f> is rarer than C<o>. In general, this is
a0d0e21e
LW
4641a big win except in pathological cases. The only question is whether
4642it saves you more time than it took to build the linked list in the
4643first place.
4644
4645Note that if you have to look for strings that you don't know till
19799a22 4646runtime, you can build an entire loop as a string and C<eval> that to
a0d0e21e 4647avoid recompiling all your patterns all the time. Together with
7660c0ab 4648undefining C<$/> to input entire files as one record, this can be very
f86cebdf 4649fast, often faster than specialized programs like fgrep(1). The following
184e9718 4650scans a list of files (C<@files>) for a list of words (C<@words>), and prints
a0d0e21e
LW
4651out the names of those files that contain a match:
4652
4653 $search = 'while (<>) { study;';
4654 foreach $word (@words) {
4655 $search .= "++\$seen{\$ARGV} if /\\b$word\\b/;\n";
4656 }
4657 $search .= "}";
4658 @ARGV = @files;
4659 undef $/;
4660 eval $search; # this screams
5f05dabc 4661 $/ = "\n"; # put back to normal input delimiter
a0d0e21e
LW
4662 foreach $file (sort keys(%seen)) {
4663 print $file, "\n";
4664 }
4665
cb1a09d0
AD
4666=item sub BLOCK
4667
4668=item sub NAME
4669
4670=item sub NAME BLOCK
4671
4672This is subroutine definition, not a real function I<per se>. With just a
09bef843
SB
4673NAME (and possibly prototypes or attributes), it's just a forward declaration.
4674Without a NAME, it's an anonymous function declaration, and does actually
4675return a value: the CODE ref of the closure you just created. See L<perlsub>
4676and L<perlref> for details.
cb1a09d0 4677
87275199 4678=item substr EXPR,OFFSET,LENGTH,REPLACEMENT
7b8d334a 4679
87275199 4680=item substr EXPR,OFFSET,LENGTH
a0d0e21e
LW
4681
4682=item substr EXPR,OFFSET
4683
4684Extracts a substring out of EXPR and returns it. First character is at
7660c0ab 4685offset C<0>, or whatever you've set C<$[> to (but don't do that).
84902520 4686If OFFSET is negative (or more precisely, less than C<$[>), starts
87275199
GS
4687that far from the end of the string. If LENGTH is omitted, returns
4688everything to the end of the string. If LENGTH is negative, leaves that
748a9306
LW
4689many characters off the end of the string.
4690
2b5ab1e7 4691You can use the substr() function as an lvalue, in which case EXPR
87275199
GS
4692must itself be an lvalue. If you assign something shorter than LENGTH,
4693the string will shrink, and if you assign something longer than LENGTH,
2b5ab1e7 4694the string will grow to accommodate it. To keep the string the same
19799a22 4695length you may need to pad or chop your value using C<sprintf>.
a0d0e21e 4696
87275199
GS
4697If OFFSET and LENGTH specify a substring that is partly outside the
4698string, only the part within the string is returned. If the substring
4699is beyond either end of the string, substr() returns the undefined
4700value and produces a warning. When used as an lvalue, specifying a
4701substring that is entirely outside the string is a fatal error.
4702Here's an example showing the behavior for boundary cases:
4703
4704 my $name = 'fred';
4705 substr($name, 4) = 'dy'; # $name is now 'freddy'
4706 my $null = substr $name, 6, 2; # returns '' (no warning)
4707 my $oops = substr $name, 7; # returns undef, with warning
4708 substr($name, 7) = 'gap'; # fatal error
4709
2b5ab1e7 4710An alternative to using substr() as an lvalue is to specify the
7b8d334a 4711replacement string as the 4th argument. This allows you to replace
2b5ab1e7
TC
4712parts of the EXPR and return what was there before in one operation,
4713just as you can with splice().
7b8d334a 4714
a0d0e21e
LW
4715=item symlink OLDFILE,NEWFILE
4716
4717Creates a new filename symbolically linked to the old filename.
7660c0ab 4718Returns C<1> for success, C<0> otherwise. On systems that don't support
a0d0e21e
LW
4719symbolic links, produces a fatal error at run time. To check for that,
4720use eval:
4721
2b5ab1e7 4722 $symlink_exists = eval { symlink("",""); 1 };
a0d0e21e
LW
4723
4724=item syscall LIST
4725
4726Calls the system call specified as the first element of the list,
4727passing the remaining elements as arguments to the system call. If
4728unimplemented, produces a fatal error. The arguments are interpreted
4729as follows: if a given argument is numeric, the argument is passed as
4730an int. If not, the pointer to the string value is passed. You are
4731responsible to make sure a string is pre-extended long enough to
a3cb178b 4732receive any result that might be written into a string. You can't use a
19799a22 4733string literal (or other read-only string) as an argument to C<syscall>
a3cb178b
GS
4734because Perl has to assume that any string pointer might be written
4735through. If your
a0d0e21e 4736integer arguments are not literals and have never been interpreted in a
7660c0ab 4737numeric context, you may need to add C<0> to them to force them to look
19799a22 4738like numbers. This emulates the C<syswrite> function (or vice versa):
a0d0e21e
LW
4739
4740 require 'syscall.ph'; # may need to run h2ph
a3cb178b
GS
4741 $s = "hi there\n";
4742 syscall(&SYS_write, fileno(STDOUT), $s, length $s);
a0d0e21e 4743
5f05dabc 4744Note that Perl supports passing of up to only 14 arguments to your system call,
a0d0e21e
LW
4745which in practice should usually suffice.
4746
fb73857a 4747Syscall returns whatever value returned by the system call it calls.
19799a22 4748If the system call fails, C<syscall> returns C<-1> and sets C<$!> (errno).
7660c0ab 4749Note that some system calls can legitimately return C<-1>. The proper
fb73857a 4750way to handle such calls is to assign C<$!=0;> before the call and
7660c0ab 4751check the value of C<$!> if syscall returns C<-1>.
fb73857a 4752
4753There's a problem with C<syscall(&SYS_pipe)>: it returns the file
4754number of the read end of the pipe it creates. There is no way
4755to retrieve the file number of the other end. You can avoid this
19799a22 4756problem by using C<pipe> instead.
fb73857a 4757
c07a80fd 4758=item sysopen FILEHANDLE,FILENAME,MODE
4759
4760=item sysopen FILEHANDLE,FILENAME,MODE,PERMS
4761
4762Opens the file whose filename is given by FILENAME, and associates it
4763with FILEHANDLE. If FILEHANDLE is an expression, its value is used as
4764the name of the real filehandle wanted. This function calls the
19799a22 4765underlying operating system's C<open> function with the parameters
c07a80fd 4766FILENAME, MODE, PERMS.
4767
4768The possible values and flag bits of the MODE parameter are
4769system-dependent; they are available via the standard module C<Fcntl>.
ea2b5ef6
JH
4770See the documentation of your operating system's C<open> to see which
4771values and flag bits are available. You may combine several flags
4772using the C<|>-operator.
4773
4774Some of the most common values are C<O_RDONLY> for opening the file in
4775read-only mode, C<O_WRONLY> for opening the file in write-only mode,
4776and C<O_RDWR> for opening the file in read-write mode, and.
4777
adf5897a
DF
4778For historical reasons, some values work on almost every system
4779supported by perl: zero means read-only, one means write-only, and two
4780means read/write. We know that these values do I<not> work under
7c5ffed3 4781OS/390 & VM/ESA Unix and on the Macintosh; you probably don't want to
4af147f6 4782use them in new code.
c07a80fd 4783
19799a22 4784If the file named by FILENAME does not exist and the C<open> call creates
7660c0ab 4785it (typically because MODE includes the C<O_CREAT> flag), then the value of
5a964f20 4786PERMS specifies the permissions of the newly created file. If you omit
19799a22 4787the PERMS argument to C<sysopen>, Perl uses the octal value C<0666>.
5a964f20 4788These permission values need to be in octal, and are modified by your
0591cd52
NT
4789process's current C<umask>.
4790
ea2b5ef6
JH
4791In many systems the C<O_EXCL> flag is available for opening files in
4792exclusive mode. This is B<not> locking: exclusiveness means here that
4793if the file already exists, sysopen() fails. The C<O_EXCL> wins
4794C<O_TRUNC>.
4795
4796Sometimes you may want to truncate an already-existing file: C<O_TRUNC>.
4797
19799a22 4798You should seldom if ever use C<0644> as argument to C<sysopen>, because
2b5ab1e7
TC
4799that takes away the user's option to have a more permissive umask.
4800Better to omit it. See the perlfunc(1) entry on C<umask> for more
4801on this.
c07a80fd 4802
4af147f6
CS
4803Note that C<sysopen> depends on the fdopen() C library function.
4804On many UNIX systems, fdopen() is known to fail when file descriptors
4805exceed a certain value, typically 255. If you need more file
4806descriptors than that, consider rebuilding Perl to use the C<sfio>
4807library, or perhaps using the POSIX::open() function.
4808
2b5ab1e7 4809See L<perlopentut> for a kinder, gentler explanation of opening files.
28757baa 4810
a0d0e21e
LW
4811=item sysread FILEHANDLE,SCALAR,LENGTH,OFFSET
4812
4813=item sysread FILEHANDLE,SCALAR,LENGTH
4814
4815Attempts to read LENGTH bytes of data into variable SCALAR from the
b43ceaf2 4816specified FILEHANDLE, using the system call read(2). It bypasses stdio,
19799a22
GS
4817so mixing this with other kinds of reads, C<print>, C<write>,
4818C<seek>, C<tell>, or C<eof> can cause confusion because stdio
b43ceaf2
AB
4819usually buffers data. Returns the number of bytes actually read, C<0>
4820at end of file, or undef if there was an error. SCALAR will be grown or
4821shrunk so that the last byte actually read is the last byte of the
4822scalar after the read.
ff68c719 4823
4824An OFFSET may be specified to place the read data at some place in the
4825string other than the beginning. A negative OFFSET specifies
4826placement at that many bytes counting backwards from the end of the
4827string. A positive OFFSET greater than the length of SCALAR results
7660c0ab 4828in the string being padded to the required size with C<"\0"> bytes before
ff68c719 4829the result of the read is appended.
a0d0e21e 4830
2b5ab1e7
TC
4831There is no syseof() function, which is ok, since eof() doesn't work
4832very well on device files (like ttys) anyway. Use sysread() and check
19799a22 4833for a return value for 0 to decide whether you're done.
2b5ab1e7 4834
137443ea 4835=item sysseek FILEHANDLE,POSITION,WHENCE
4836
f86cebdf 4837Sets FILEHANDLE's system position using the system call lseek(2). It
19799a22 4838bypasses stdio, so mixing this with reads (other than C<sysread>),
ac88732c
JH
4839C<print>, C<write>, C<seek>, C<tell>, or C<eof> may cause confusion.
4840FILEHANDLE may be an expression whose value gives the name of the
4841filehandle. The values for WHENCE are C<0> to set the new position to
4842POSITION, C<1> to set the it to the current position plus POSITION,
4843and C<2> to set it to EOF plus POSITION (typically negative). For
4844WHENCE, you may also use the constants C<SEEK_SET>, C<SEEK_CUR>, and
4845C<SEEK_END> (start of the file, current position, end of the file)
ca6e1c26 4846from the Fcntl module.
8903cb82 4847
4848Returns the new position, or the undefined value on failure. A position
19799a22
GS
4849of zero is returned as the string C<"0 but true">; thus C<sysseek> returns
4850true on success and false on failure, yet you can still easily determine
8903cb82 4851the new position.
137443ea 4852
a0d0e21e
LW
4853=item system LIST
4854
8bf3b016
GS
4855=item system PROGRAM LIST
4856
19799a22
GS
4857Does exactly the same thing as C<exec LIST>, except that a fork is
4858done first, and the parent process waits for the child process to
4859complete. Note that argument processing varies depending on the
4860number of arguments. If there is more than one argument in LIST,
4861or if LIST is an array with more than one value, starts the program
4862given by the first element of the list with arguments given by the
4863rest of the list. If there is only one scalar argument, the argument
4864is checked for shell metacharacters, and if there are any, the
4865entire argument is passed to the system's command shell for parsing
4866(this is C</bin/sh -c> on Unix platforms, but varies on other
4867platforms). If there are no shell metacharacters in the argument,
4868it is split into words and passed directly to C<execvp>, which is
4869more efficient.
4870
4871All files opened for output are flushed before attempting the exec().
a2008d6d
GS
4872
4873The return value is the exit status of the program as
19799a22
GS
4874returned by the C<wait> call. To get the actual exit value divide by
4875256. See also L</exec>. This is I<not> what you want to use to capture
54310121 4876the output from a command, for that you should use merely backticks or
d5a9bfb0
IZ
4877C<qx//>, as described in L<perlop/"`STRING`">. Return value of -1
4878indicates a failure to start the program (inspect $! for the reason).
a0d0e21e 4879
19799a22
GS
4880Like C<exec>, C<system> allows you to lie to a program about its name if
4881you use the C<system PROGRAM LIST> syntax. Again, see L</exec>.
8bf3b016 4882
19799a22 4883Because C<system> and backticks block C<SIGINT> and C<SIGQUIT>, killing the
28757baa 4884program they're running doesn't actually interrupt your program.
4885
4886 @args = ("command", "arg1", "arg2");
54310121 4887 system(@args) == 0
4888 or die "system @args failed: $?"
28757baa 4889
5a964f20
TC
4890You can check all the failure possibilities by inspecting
4891C<$?> like this:
28757baa 4892
5a964f20
TC
4893 $exit_value = $? >> 8;
4894 $signal_num = $? & 127;
4895 $dumped_core = $? & 128;
f86702cc 4896
c8db1d39
TC
4897When the arguments get executed via the system shell, results
4898and return codes will be subject to its quirks and capabilities.
4899See L<perlop/"`STRING`"> and L</exec> for details.
bb32b41a 4900
a0d0e21e
LW
4901=item syswrite FILEHANDLE,SCALAR,LENGTH,OFFSET
4902
4903=item syswrite FILEHANDLE,SCALAR,LENGTH
4904
145d37e2
GA
4905=item syswrite FILEHANDLE,SCALAR
4906
a0d0e21e 4907Attempts to write LENGTH bytes of data from variable SCALAR to the
19799a22
GS
4908specified FILEHANDLE, using the system call write(2). If LENGTH
4909is not specified, writes whole SCALAR. It bypasses stdio, so mixing
4910this with reads (other than C<sysread())>, C<print>, C<write>,
4911C<seek>, C<tell>, or C<eof> may cause confusion because stdio
4912usually buffers data. Returns the number of bytes actually written,
4913or C<undef> if there was an error. If the LENGTH is greater than
4914the available data in the SCALAR after the OFFSET, only as much
4915data as is available will be written.
ff68c719 4916
4917An OFFSET may be specified to write the data from some part of the
4918string other than the beginning. A negative OFFSET specifies writing
fb73857a 4919that many bytes counting backwards from the end of the string. In the
4920case the SCALAR is empty you can use OFFSET but only zero offset.
a0d0e21e
LW
4921
4922=item tell FILEHANDLE
4923
4924=item tell
4925
8903cb82 4926Returns the current position for FILEHANDLE. FILEHANDLE may be an
a0d0e21e 4927expression whose value gives the name of the actual filehandle. If
2b5ab1e7
TC
4928FILEHANDLE is omitted, assumes the file last read.
4929
19799a22 4930There is no C<systell> function. Use C<sysseek(FH, 0, 1)> for that.
a0d0e21e
LW
4931
4932=item telldir DIRHANDLE
4933
19799a22
GS
4934Returns the current position of the C<readdir> routines on DIRHANDLE.
4935Value may be given to C<seekdir> to access a particular location in a
a0d0e21e
LW
4936directory. Has the same caveats about possible directory compaction as
4937the corresponding system library routine.
4938
4633a7c4 4939=item tie VARIABLE,CLASSNAME,LIST
a0d0e21e 4940
4633a7c4
LW
4941This function binds a variable to a package class that will provide the
4942implementation for the variable. VARIABLE is the name of the variable
4943to be enchanted. CLASSNAME is the name of a class implementing objects
19799a22 4944of correct type. Any additional arguments are passed to the C<new>
8a059744
GS
4945method of the class (meaning C<TIESCALAR>, C<TIEHANDLE>, C<TIEARRAY>,
4946or C<TIEHASH>). Typically these are arguments such as might be passed
19799a22
GS
4947to the C<dbm_open()> function of C. The object returned by the C<new>
4948method is also returned by the C<tie> function, which would be useful
8a059744 4949if you want to access other methods in CLASSNAME.
a0d0e21e 4950
19799a22 4951Note that functions such as C<keys> and C<values> may return huge lists
1d2dff63 4952when used on large objects, like DBM files. You may prefer to use the
19799a22 4953C<each> function to iterate over such. Example:
a0d0e21e
LW
4954
4955 # print out history file offsets
4633a7c4 4956 use NDBM_File;
da0045b7 4957 tie(%HIST, 'NDBM_File', '/usr/lib/news/history', 1, 0);
a0d0e21e
LW
4958 while (($key,$val) = each %HIST) {
4959 print $key, ' = ', unpack('L',$val), "\n";
4960 }
4961 untie(%HIST);
4962
aa689395 4963A class implementing a hash should have the following methods:
a0d0e21e 4964
4633a7c4 4965 TIEHASH classname, LIST
a0d0e21e
LW
4966 FETCH this, key
4967 STORE this, key, value
4968 DELETE this, key
8a059744 4969 CLEAR this
a0d0e21e
LW
4970 EXISTS this, key
4971 FIRSTKEY this
4972 NEXTKEY this, lastkey
8a059744 4973 DESTROY this
a0d0e21e 4974
4633a7c4 4975A class implementing an ordinary array should have the following methods:
a0d0e21e 4976
4633a7c4 4977 TIEARRAY classname, LIST
a0d0e21e
LW
4978 FETCH this, key
4979 STORE this, key, value
8a059744
GS
4980 FETCHSIZE this
4981 STORESIZE this, count
4982 CLEAR this
4983 PUSH this, LIST
4984 POP this
4985 SHIFT this
4986 UNSHIFT this, LIST
4987 SPLICE this, offset, length, LIST
4988 EXTEND this, count
4989 DESTROY this
4990
4991A class implementing a file handle should have the following methods:
4992
4993 TIEHANDLE classname, LIST
4994 READ this, scalar, length, offset
4995 READLINE this
4996 GETC this
4997 WRITE this, scalar, length, offset
4998 PRINT this, LIST
4999 PRINTF this, format, LIST
5000 CLOSE this
5001 DESTROY this
a0d0e21e 5002
4633a7c4 5003A class implementing a scalar should have the following methods:
a0d0e21e 5004
4633a7c4 5005 TIESCALAR classname, LIST
54310121 5006 FETCH this,
a0d0e21e 5007 STORE this, value
8a059744
GS
5008 DESTROY this
5009
5010Not all methods indicated above need be implemented. See L<perltie>,
2b5ab1e7 5011L<Tie::Hash>, L<Tie::Array>, L<Tie::Scalar>, and L<Tie::Handle>.
a0d0e21e 5012
19799a22 5013Unlike C<dbmopen>, the C<tie> function will not use or require a module
4633a7c4 5014for you--you need to do that explicitly yourself. See L<DB_File>
19799a22 5015or the F<Config> module for interesting C<tie> implementations.
4633a7c4 5016
b687b08b 5017For further details see L<perltie>, L<"tied VARIABLE">.
cc6b7395 5018
f3cbc334
RS
5019=item tied VARIABLE
5020
5021Returns a reference to the object underlying VARIABLE (the same value
19799a22 5022that was originally returned by the C<tie> call that bound the variable
f3cbc334
RS
5023to a package.) Returns the undefined value if VARIABLE isn't tied to a
5024package.
5025
a0d0e21e
LW
5026=item time
5027
da0045b7 5028Returns the number of non-leap seconds since whatever time the system
5029considers to be the epoch (that's 00:00:00, January 1, 1904 for MacOS,
5030and 00:00:00 UTC, January 1, 1970 for most other systems).
19799a22 5031Suitable for feeding to C<gmtime> and C<localtime>.
a0d0e21e 5032
68f8bed4
JH
5033For measuring time in better granularity than one second,
5034you may use either the Time::HiRes module from CPAN, or
5035if you have gettimeofday(2), you may be able to use the
5036C<syscall> interface of Perl, see L<perlfaq8> for details.
5037
a0d0e21e
LW
5038=item times
5039
1d2dff63 5040Returns a four-element list giving the user and system times, in
a0d0e21e
LW
5041seconds, for this process and the children of this process.
5042
5043 ($user,$system,$cuser,$csystem) = times;
5044
5045=item tr///
5046
19799a22 5047The transliteration operator. Same as C<y///>. See L<perlop>.
a0d0e21e
LW
5048
5049=item truncate FILEHANDLE,LENGTH
5050
5051=item truncate EXPR,LENGTH
5052
5053Truncates the file opened on FILEHANDLE, or named by EXPR, to the
5054specified length. Produces a fatal error if truncate isn't implemented
19799a22 5055on your system. Returns true if successful, the undefined value
a3cb178b 5056otherwise.
a0d0e21e
LW
5057
5058=item uc EXPR
5059
54310121 5060=item uc
bbce6d69 5061
a0d0e21e 5062Returns an uppercased version of EXPR. This is the internal function
7660c0ab 5063implementing the C<\U> escape in double-quoted strings.
a034a98d 5064Respects current LC_CTYPE locale if C<use locale> in force. See L<perllocale>.
a0ed51b3 5065Under Unicode (C<use utf8>) it uses the standard Unicode uppercase mappings. (It
19799a22 5066does not attempt to do titlecase mapping on initial letters. See C<ucfirst> for that.)
a0d0e21e 5067
7660c0ab 5068If EXPR is omitted, uses C<$_>.
bbce6d69 5069
a0d0e21e
LW
5070=item ucfirst EXPR
5071
54310121 5072=item ucfirst
bbce6d69 5073
a0ed51b3
LW
5074Returns the value of EXPR with the first character
5075in uppercase (titlecase in Unicode). This is
7660c0ab 5076the internal function implementing the C<\u> escape in double-quoted strings.
2b5ab1e7
TC
5077Respects current LC_CTYPE locale if C<use locale> in force. See L<perllocale>
5078and L<utf8>.
a0d0e21e 5079
7660c0ab 5080If EXPR is omitted, uses C<$_>.
bbce6d69 5081
a0d0e21e
LW
5082=item umask EXPR
5083
5084=item umask
5085
2f9daede 5086Sets the umask for the process to EXPR and returns the previous value.
eec2d3df
GS
5087If EXPR is omitted, merely returns the current umask.
5088
0591cd52
NT
5089The Unix permission C<rwxr-x---> is represented as three sets of three
5090bits, or three octal digits: C<0750> (the leading 0 indicates octal
b5a41e52 5091and isn't one of the digits). The C<umask> value is such a number
0591cd52
NT
5092representing disabled permissions bits. The permission (or "mode")
5093values you pass C<mkdir> or C<sysopen> are modified by your umask, so
5094even if you tell C<sysopen> to create a file with permissions C<0777>,
5095if your umask is C<0022> then the file will actually be created with
5096permissions C<0755>. If your C<umask> were C<0027> (group can't
5097write; others can't read, write, or execute), then passing
19799a22 5098C<sysopen> C<0666> would create a file with mode C<0640> (C<0666 &~
0591cd52
NT
5099027> is C<0640>).
5100
5101Here's some advice: supply a creation mode of C<0666> for regular
19799a22
GS
5102files (in C<sysopen>) and one of C<0777> for directories (in
5103C<mkdir>) and executable files. This gives users the freedom of
0591cd52
NT
5104choice: if they want protected files, they might choose process umasks
5105of C<022>, C<027>, or even the particularly antisocial mask of C<077>.
5106Programs should rarely if ever make policy decisions better left to
5107the user. The exception to this is when writing files that should be
5108kept private: mail files, web browser cookies, I<.rhosts> files, and
5109so on.
5110
f86cebdf 5111If umask(2) is not implemented on your system and you are trying to
eec2d3df 5112restrict access for I<yourself> (i.e., (EXPR & 0700) > 0), produces a
f86cebdf 5113fatal error at run time. If umask(2) is not implemented and you are
eec2d3df
GS
5114not trying to restrict access for yourself, returns C<undef>.
5115
5116Remember that a umask is a number, usually given in octal; it is I<not> a
5117string of octal digits. See also L</oct>, if all you have is a string.
a0d0e21e
LW
5118
5119=item undef EXPR
5120
5121=item undef
5122
54310121 5123Undefines the value of EXPR, which must be an lvalue. Use only on a
19799a22
GS
5124scalar value, an array (using C<@>), a hash (using C<%>), a subroutine
5125(using C<&>), or a typeglob (using <*>). (Saying C<undef $hash{$key}>
20408e3c
GS
5126will probably not do what you expect on most predefined variables or
5127DBM list values, so don't do that; see L<delete>.) Always returns the
5128undefined value. You can omit the EXPR, in which case nothing is
5129undefined, but you still get an undefined value that you could, for
5130instance, return from a subroutine, assign to a variable or pass as a
5131parameter. Examples:
a0d0e21e
LW
5132
5133 undef $foo;
f86cebdf 5134 undef $bar{'blurfl'}; # Compare to: delete $bar{'blurfl'};
a0d0e21e 5135 undef @ary;
aa689395 5136 undef %hash;
a0d0e21e 5137 undef &mysub;
20408e3c 5138 undef *xyz; # destroys $xyz, @xyz, %xyz, &xyz, etc.
54310121 5139 return (wantarray ? (undef, $errmsg) : undef) if $they_blew_it;
2f9daede
TP
5140 select undef, undef, undef, 0.25;
5141 ($a, $b, undef, $c) = &foo; # Ignore third value returned
a0d0e21e 5142
5a964f20
TC
5143Note that this is a unary operator, not a list operator.
5144
a0d0e21e
LW
5145=item unlink LIST
5146
54310121 5147=item unlink
bbce6d69 5148
a0d0e21e
LW
5149Deletes a list of files. Returns the number of files successfully
5150deleted.
5151
5152 $cnt = unlink 'a', 'b', 'c';
5153 unlink @goners;
5154 unlink <*.bak>;
5155
19799a22 5156Note: C<unlink> will not delete directories unless you are superuser and
a0d0e21e
LW
5157the B<-U> flag is supplied to Perl. Even if these conditions are
5158met, be warned that unlinking a directory can inflict damage on your
19799a22 5159filesystem. Use C<rmdir> instead.
a0d0e21e 5160
7660c0ab 5161If LIST is omitted, uses C<$_>.
bbce6d69 5162
a0d0e21e
LW
5163=item unpack TEMPLATE,EXPR
5164
19799a22 5165C<unpack> does the reverse of C<pack>: it takes a string
2b6c5635 5166and expands it out into a list of values.
19799a22 5167(In scalar context, it returns merely the first value produced.)
2b6c5635
GS
5168
5169The string is broken into chunks described by the TEMPLATE. Each chunk
5170is converted separately to a value. Typically, either the string is a result
5171of C<pack>, or the bytes of the string represent a C structure of some
5172kind.
5173
19799a22 5174The TEMPLATE has the same format as in the C<pack> function.
a0d0e21e
LW
5175Here's a subroutine that does substring:
5176
5177 sub substr {
5a964f20 5178 my($what,$where,$howmuch) = @_;
a0d0e21e
LW
5179 unpack("x$where a$howmuch", $what);
5180 }
5181
5182and then there's
5183
5184 sub ordinal { unpack("c",$_[0]); } # same as ord()
5185
2b6c5635
GS
5186In addition to fields allowed in pack(), you may prefix a field with
5187a %E<lt>numberE<gt> to indicate that
184e9718 5188you want a E<lt>numberE<gt>-bit checksum of the items instead of the items
2b6c5635
GS
5189themselves. Default is a 16-bit checksum. Checksum is calculated by
5190summing numeric values of expanded values (for string fields the sum of
5191C<ord($char)> is taken, for bit fields the sum of zeroes and ones).
5192
5193For example, the following
a0d0e21e
LW
5194computes the same number as the System V sum program:
5195
19799a22
GS
5196 $checksum = do {
5197 local $/; # slurp!
5198 unpack("%32C*",<>) % 65535;
5199 };
a0d0e21e
LW
5200
5201The following efficiently counts the number of set bits in a bit vector:
5202
5203 $setbits = unpack("%32b*", $selectmask);
5204
951ba7fe 5205The C<p> and C<P> formats should be used with care. Since Perl
3160c391
GS
5206has no way of checking whether the value passed to C<unpack()>
5207corresponds to a valid memory location, passing a pointer value that's
5208not known to be valid is likely to have disastrous consequences.
5209
2b6c5635
GS
5210If the repeat count of a field is larger than what the remainder of
5211the input string allows, repeat count is decreased. If the input string
5212is longer than one described by the TEMPLATE, the rest is ignored.
5213
851646ae 5214See L</pack> for more examples and notes.
5a929a98 5215
98293880
JH
5216=item untie VARIABLE
5217
19799a22 5218Breaks the binding between a variable and a package. (See C<tie>.)
98293880 5219
a0d0e21e
LW
5220=item unshift ARRAY,LIST
5221
19799a22 5222Does the opposite of a C<shift>. Or the opposite of a C<push>,
a0d0e21e
LW
5223depending on how you look at it. Prepends list to the front of the
5224array, and returns the new number of elements in the array.
5225
5226 unshift(ARGV, '-e') unless $ARGV[0] =~ /^-/;
5227
5228Note the LIST is prepended whole, not one element at a time, so the
19799a22 5229prepended elements stay in the same order. Use C<reverse> to do the
a0d0e21e
LW
5230reverse.
5231
5232=item use Module LIST
5233
5234=item use Module
5235
da0045b7 5236=item use Module VERSION LIST
5237
5238=item use VERSION
5239
a0d0e21e
LW
5240Imports some semantics into the current package from the named module,
5241generally by aliasing certain subroutine or variable names into your
5242package. It is exactly equivalent to
5243
5244 BEGIN { require Module; import Module LIST; }
5245
54310121 5246except that Module I<must> be a bareword.
da0045b7 5247
16070b82
GS
5248If the first argument to C<use> is a number or a version tuple, it is
5249treated as a version instead of a module name. If the version
5250of the Perl interpreter is less than VERSION, then an error message
5251is printed and Perl exits immediately.
5252
5253 use 5.005_03; # version number
5254 use v5.6.0; # version tuple
5255
5256This is often useful if you need to check the current Perl version before
5257C<use>ing library modules that have changed in incompatible ways from
5258older versions of Perl. (We try not to do this more than we have to.)
da0045b7 5259
19799a22 5260The C<BEGIN> forces the C<require> and C<import> to happen at compile time. The
7660c0ab 5261C<require> makes sure the module is loaded into memory if it hasn't been
19799a22
GS
5262yet. The C<import> is not a builtin--it's just an ordinary static method
5263call into the C<Module> package to tell the module to import the list of
a0d0e21e 5264features back into the current package. The module can implement its
19799a22
GS
5265C<import> method any way it likes, though most modules just choose to
5266derive their C<import> method via inheritance from the C<Exporter> class that
5267is defined in the C<Exporter> module. See L<Exporter>. If no C<import>
10696ff6 5268method can be found then the call is skipped.
cb1a09d0
AD
5269
5270If you don't want your namespace altered, explicitly supply an empty list:
5271
5272 use Module ();
5273
5274That is exactly equivalent to
5275
5a964f20 5276 BEGIN { require Module }
a0d0e21e 5277
da0045b7 5278If the VERSION argument is present between Module and LIST, then the
71be2cbc 5279C<use> will call the VERSION method in class Module with the given
5280version as an argument. The default VERSION method, inherited from
5281the Universal class, croaks if the given version is larger than the
7660c0ab 5282value of the variable C<$Module::VERSION>. (Note that there is not a
71be2cbc 5283comma after VERSION!)
da0045b7 5284
a0d0e21e
LW
5285Because this is a wide-open interface, pragmas (compiler directives)
5286are also implemented this way. Currently implemented pragmas are:
5287
5288 use integer;
4633a7c4 5289 use diagnostics;
4438c4b7
JH
5290 use sigtrap qw(SEGV BUS);
5291 use strict qw(subs vars refs);
5292 use subs qw(afunc blurfl);
5293 use warnings qw(all);
a0d0e21e 5294
19799a22 5295Some of these pseudo-modules import semantics into the current
5a964f20
TC
5296block scope (like C<strict> or C<integer>, unlike ordinary modules,
5297which import symbols into the current package (which are effective
5298through the end of the file).
a0d0e21e 5299
19799a22
GS
5300There's a corresponding C<no> command that unimports meanings imported
5301by C<use>, i.e., it calls C<unimport Module LIST> instead of C<import>.
a0d0e21e
LW
5302
5303 no integer;
5304 no strict 'refs';
4438c4b7 5305 no warnings;
a0d0e21e 5306
19799a22 5307If no C<unimport> method can be found the call fails with a fatal error.
55497cff 5308
a0d0e21e
LW
5309See L<perlmod> for a list of standard modules and pragmas.
5310
5311=item utime LIST
5312
5313Changes the access and modification times on each file of a list of
5314files. The first two elements of the list must be the NUMERICAL access
5315and modification times, in that order. Returns the number of files
46cdf678 5316successfully changed. The inode change time of each file is set
19799a22 5317to the current time. This code has the same effect as the C<touch>
a3cb178b 5318command if the files already exist:
a0d0e21e
LW
5319
5320 #!/usr/bin/perl
5321 $now = time;
5322 utime $now, $now, @ARGV;
5323
aa689395 5324=item values HASH
a0d0e21e 5325
1d2dff63
GS
5326Returns a list consisting of all the values of the named hash. (In a
5327scalar context, returns the number of values.) The values are
ab192400
GS
5328returned in an apparently random order. The actual random order is
5329subject to change in future versions of perl, but it is guaranteed to
19799a22 5330be the same order as either the C<keys> or C<each> function would
ab192400
GS
5331produce on the same (unmodified) hash.
5332
2b5ab1e7
TC
5333Note that you cannot modify the values of a hash this way, because the
5334returned list is just a copy. You need to use a hash slice for that,
5335since it's lvaluable in a way that values() is not.
5336
5337 for (values %hash) { s/foo/bar/g } # FAILS!
5338 for (@hash{keys %hash}) { s/foo/bar/g } # ok
5339
5340As a side effect, calling values() resets the HASH's internal iterator.
19799a22 5341See also C<keys>, C<each>, and C<sort>.
a0d0e21e
LW
5342
5343=item vec EXPR,OFFSET,BITS
5344
e69129f1
GS
5345Treats the string in EXPR as a bit vector made up of elements of
5346width BITS, and returns the value of the element specified by OFFSET
5347as an unsigned integer. BITS therefore specifies the number of bits
5348that are reserved for each element in the bit vector. This must
5349be a power of two from 1 to 32 (or 64, if your platform supports
5350that).
c5a0f51a 5351
c73032f5
IZ
5352If BITS is 8, "elements" coincide with bytes of the input string.
5353
5354If BITS is 16 or more, bytes of the input string are grouped into chunks
5355of size BITS/8, and each group is converted to a number as with
5356pack()/unpack() with big-endian formats C<n>/C<N> (and analoguously
5357for BITS==64). See L<"pack"> for details.
5358
5359If bits is 4 or less, the string is broken into bytes, then the bits
5360of each byte are broken into 8/BITS groups. Bits of a byte are
5361numbered in a little-endian-ish way, as in C<0x01>, C<0x02>,
5362C<0x04>, C<0x08>, C<0x10>, C<0x20>, C<0x40>, C<0x80>. For example,
5363breaking the single input byte C<chr(0x36)> into two groups gives a list
5364C<(0x6, 0x3)>; breaking it into 4 groups gives C<(0x2, 0x1, 0x3, 0x0)>.
5365
81e118e0
JH
5366C<vec> may also be assigned to, in which case parentheses are needed
5367to give the expression the correct precedence as in
22dc801b 5368
5369 vec($image, $max_x * $x + $y, 8) = 3;
a0d0e21e 5370
fac70343
GS
5371If the selected element is off the end of the string, the value 0 is
5372returned. If an element off the end of the string is written to,
5373Perl will first extend the string with sufficiently many zero bytes.
5374
5375Strings created with C<vec> can also be manipulated with the logical
5376operators C<|>, C<&>, C<^>, and C<~>. These operators will assume a bit
5377vector operation is desired when both operands are strings.
c5a0f51a 5378See L<perlop/"Bitwise String Operators">.
a0d0e21e 5379
7660c0ab 5380The following code will build up an ASCII string saying C<'PerlPerlPerl'>.
19799a22 5381The comments show the string after each step. Note that this code works
cca87523
GS
5382in the same way on big-endian or little-endian machines.
5383
5384 my $foo = '';
5385 vec($foo, 0, 32) = 0x5065726C; # 'Perl'
e69129f1
GS
5386
5387 # $foo eq "Perl" eq "\x50\x65\x72\x6C", 32 bits
5388 print vec($foo, 0, 8); # prints 80 == 0x50 == ord('P')
5389
cca87523
GS
5390 vec($foo, 2, 16) = 0x5065; # 'PerlPe'
5391 vec($foo, 3, 16) = 0x726C; # 'PerlPerl'
5392 vec($foo, 8, 8) = 0x50; # 'PerlPerlP'
5393 vec($foo, 9, 8) = 0x65; # 'PerlPerlPe'
5394 vec($foo, 20, 4) = 2; # 'PerlPerlPe' . "\x02"
f86cebdf
GS
5395 vec($foo, 21, 4) = 7; # 'PerlPerlPer'
5396 # 'r' is "\x72"
cca87523
GS
5397 vec($foo, 45, 2) = 3; # 'PerlPerlPer' . "\x0c"
5398 vec($foo, 93, 1) = 1; # 'PerlPerlPer' . "\x2c"
f86cebdf
GS
5399 vec($foo, 94, 1) = 1; # 'PerlPerlPerl'
5400 # 'l' is "\x6c"
cca87523 5401
19799a22 5402To transform a bit vector into a string or list of 0's and 1's, use these:
a0d0e21e
LW
5403
5404 $bits = unpack("b*", $vector);
5405 @bits = split(//, unpack("b*", $vector));
5406
7660c0ab 5407If you know the exact length in bits, it can be used in place of the C<*>.
a0d0e21e 5408
e69129f1
GS
5409Here is an example to illustrate how the bits actually fall in place:
5410
5411 #!/usr/bin/perl -wl
5412
5413 print <<'EOT';
5414 0 1 2 3
5415 unpack("V",$_) 01234567890123456789012345678901
5416 ------------------------------------------------------------------
5417 EOT
5418
5419 for $w (0..3) {
5420 $width = 2**$w;
5421 for ($shift=0; $shift < $width; ++$shift) {
5422 for ($off=0; $off < 32/$width; ++$off) {
5423 $str = pack("B*", "0"x32);
5424 $bits = (1<<$shift);
5425 vec($str, $off, $width) = $bits;
5426 $res = unpack("b*",$str);
5427 $val = unpack("V", $str);
5428 write;
5429 }
5430 }
5431 }
5432
5433 format STDOUT =
5434 vec($_,@#,@#) = @<< == @######### @>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
5435 $off, $width, $bits, $val, $res
5436 .
5437 __END__
5438
5439Regardless of the machine architecture on which it is run, the above
5440example should print the following table:
5441
5442 0 1 2 3
5443 unpack("V",$_) 01234567890123456789012345678901
5444 ------------------------------------------------------------------
5445 vec($_, 0, 1) = 1 == 1 10000000000000000000000000000000
5446 vec($_, 1, 1) = 1 == 2 01000000000000000000000000000000
5447 vec($_, 2, 1) = 1 == 4 00100000000000000000000000000000
5448 vec($_, 3, 1) = 1 == 8 00010000000000000000000000000000
5449 vec($_, 4, 1) = 1 == 16 00001000000000000000000000000000
5450 vec($_, 5, 1) = 1 == 32 00000100000000000000000000000000
5451 vec($_, 6, 1) = 1 == 64 00000010000000000000000000000000
5452 vec($_, 7, 1) = 1 == 128 00000001000000000000000000000000
5453 vec($_, 8, 1) = 1 == 256 00000000100000000000000000000000
5454 vec($_, 9, 1) = 1 == 512 00000000010000000000000000000000
5455 vec($_,10, 1) = 1 == 1024 00000000001000000000000000000000
5456 vec($_,11, 1) = 1 == 2048 00000000000100000000000000000000
5457 vec($_,12, 1) = 1 == 4096 00000000000010000000000000000000
5458 vec($_,13, 1) = 1 == 8192 00000000000001000000000000000000
5459 vec($_,14, 1) = 1 == 16384 00000000000000100000000000000000
5460 vec($_,15, 1) = 1 == 32768 00000000000000010000000000000000
5461 vec($_,16, 1) = 1 == 65536 00000000000000001000000000000000
5462 vec($_,17, 1) = 1 == 131072 00000000000000000100000000000000
5463 vec($_,18, 1) = 1 == 262144 00000000000000000010000000000000
5464 vec($_,19, 1) = 1 == 524288 00000000000000000001000000000000
5465 vec($_,20, 1) = 1 == 1048576 00000000000000000000100000000000
5466 vec($_,21, 1) = 1 == 2097152 00000000000000000000010000000000
5467 vec($_,22, 1) = 1 == 4194304 00000000000000000000001000000000
5468 vec($_,23, 1) = 1 == 8388608 00000000000000000000000100000000
5469 vec($_,24, 1) = 1 == 16777216 00000000000000000000000010000000
5470 vec($_,25, 1) = 1 == 33554432 00000000000000000000000001000000
5471 vec($_,26, 1) = 1 == 67108864 00000000000000000000000000100000
5472 vec($_,27, 1) = 1 == 134217728 00000000000000000000000000010000
5473 vec($_,28, 1) = 1 == 268435456 00000000000000000000000000001000
5474 vec($_,29, 1) = 1 == 536870912 00000000000000000000000000000100
5475 vec($_,30, 1) = 1 == 1073741824 00000000000000000000000000000010
5476 vec($_,31, 1) = 1 == 2147483648 00000000000000000000000000000001
5477 vec($_, 0, 2) = 1 == 1 10000000000000000000000000000000
5478 vec($_, 1, 2) = 1 == 4 00100000000000000000000000000000
5479 vec($_, 2, 2) = 1 == 16 00001000000000000000000000000000
5480 vec($_, 3, 2) = 1 == 64 00000010000000000000000000000000
5481 vec($_, 4, 2) = 1 == 256 00000000100000000000000000000000
5482 vec($_, 5, 2) = 1 == 1024 00000000001000000000000000000000
5483 vec($_, 6, 2) = 1 == 4096 00000000000010000000000000000000
5484 vec($_, 7, 2) = 1 == 16384 00000000000000100000000000000000
5485 vec($_, 8, 2) = 1 == 65536 00000000000000001000000000000000
5486 vec($_, 9, 2) = 1 == 262144 00000000000000000010000000000000
5487 vec($_,10, 2) = 1 == 1048576 00000000000000000000100000000000
5488 vec($_,11, 2) = 1 == 4194304 00000000000000000000001000000000
5489 vec($_,12, 2) = 1 == 16777216 00000000000000000000000010000000
5490 vec($_,13, 2) = 1 == 67108864 00000000000000000000000000100000
5491 vec($_,14, 2) = 1 == 268435456 00000000000000000000000000001000
5492 vec($_,15, 2) = 1 == 1073741824 00000000000000000000000000000010
5493 vec($_, 0, 2) = 2 == 2 01000000000000000000000000000000
5494 vec($_, 1, 2) = 2 == 8 00010000000000000000000000000000
5495 vec($_, 2, 2) = 2 == 32 00000100000000000000000000000000
5496 vec($_, 3, 2) = 2 == 128 00000001000000000000000000000000
5497 vec($_, 4, 2) = 2 == 512 00000000010000000000000000000000
5498 vec($_, 5, 2) = 2 == 2048 00000000000100000000000000000000
5499 vec($_, 6, 2) = 2 == 8192 00000000000001000000000000000000
5500 vec($_, 7, 2) = 2 == 32768 00000000000000010000000000000000
5501 vec($_, 8, 2) = 2 == 131072 00000000000000000100000000000000
5502 vec($_, 9, 2) = 2 == 524288 00000000000000000001000000000000
5503 vec($_,10, 2) = 2 == 2097152 00000000000000000000010000000000
5504 vec($_,11, 2) = 2 == 8388608 00000000000000000000000100000000
5505 vec($_,12, 2) = 2 == 33554432 00000000000000000000000001000000
5506 vec($_,13, 2) = 2 == 134217728 00000000000000000000000000010000
5507 vec($_,14, 2) = 2 == 536870912 00000000000000000000000000000100
5508 vec($_,15, 2) = 2 == 2147483648 00000000000000000000000000000001
5509 vec($_, 0, 4) = 1 == 1 10000000000000000000000000000000
5510 vec($_, 1, 4) = 1 == 16 00001000000000000000000000000000
5511 vec($_, 2, 4) = 1 == 256 00000000100000000000000000000000
5512 vec($_, 3, 4) = 1 == 4096 00000000000010000000000000000000
5513 vec($_, 4, 4) = 1 == 65536 00000000000000001000000000000000
5514 vec($_, 5, 4) = 1 == 1048576 00000000000000000000100000000000
5515 vec($_, 6, 4) = 1 == 16777216 00000000000000000000000010000000
5516 vec($_, 7, 4) = 1 == 268435456 00000000000000000000000000001000
5517 vec($_, 0, 4) = 2 == 2 01000000000000000000000000000000
5518 vec($_, 1, 4) = 2 == 32 00000100000000000000000000000000
5519 vec($_, 2, 4) = 2 == 512 00000000010000000000000000000000
5520 vec($_, 3, 4) = 2 == 8192 00000000000001000000000000000000
5521 vec($_, 4, 4) = 2 == 131072 00000000000000000100000000000000
5522 vec($_, 5, 4) = 2 == 2097152 00000000000000000000010000000000
5523 vec($_, 6, 4) = 2 == 33554432 00000000000000000000000001000000
5524 vec($_, 7, 4) = 2 == 536870912 00000000000000000000000000000100
5525 vec($_, 0, 4) = 4 == 4 00100000000000000000000000000000
5526 vec($_, 1, 4) = 4 == 64 00000010000000000000000000000000
5527 vec($_, 2, 4) = 4 == 1024 00000000001000000000000000000000
5528 vec($_, 3, 4) = 4 == 16384 00000000000000100000000000000000
5529 vec($_, 4, 4) = 4 == 262144 00000000000000000010000000000000
5530 vec($_, 5, 4) = 4 == 4194304 00000000000000000000001000000000
5531 vec($_, 6, 4) = 4 == 67108864 00000000000000000000000000100000
5532 vec($_, 7, 4) = 4 == 1073741824 00000000000000000000000000000010
5533 vec($_, 0, 4) = 8 == 8 00010000000000000000000000000000
5534 vec($_, 1, 4) = 8 == 128 00000001000000000000000000000000
5535 vec($_, 2, 4) = 8 == 2048 00000000000100000000000000000000
5536 vec($_, 3, 4) = 8 == 32768 00000000000000010000000000000000
5537 vec($_, 4, 4) = 8 == 524288 00000000000000000001000000000000
5538 vec($_, 5, 4) = 8 == 8388608 00000000000000000000000100000000
5539 vec($_, 6, 4) = 8 == 134217728 00000000000000000000000000010000
5540 vec($_, 7, 4) = 8 == 2147483648 00000000000000000000000000000001
5541 vec($_, 0, 8) = 1 == 1 10000000000000000000000000000000
5542 vec($_, 1, 8) = 1 == 256 00000000100000000000000000000000
5543 vec($_, 2, 8) = 1 == 65536 00000000000000001000000000000000
5544 vec($_, 3, 8) = 1 == 16777216 00000000000000000000000010000000
5545 vec($_, 0, 8) = 2 == 2 01000000000000000000000000000000
5546 vec($_, 1, 8) = 2 == 512 00000000010000000000000000000000
5547 vec($_, 2, 8) = 2 == 131072 00000000000000000100000000000000
5548 vec($_, 3, 8) = 2 == 33554432 00000000000000000000000001000000
5549 vec($_, 0, 8) = 4 == 4 00100000000000000000000000000000
5550 vec($_, 1, 8) = 4 == 1024 00000000001000000000000000000000
5551 vec($_, 2, 8) = 4 == 262144 00000000000000000010000000000000
5552 vec($_, 3, 8) = 4 == 67108864 00000000000000000000000000100000
5553 vec($_, 0, 8) = 8 == 8 00010000000000000000000000000000
5554 vec($_, 1, 8) = 8 == 2048 00000000000100000000000000000000
5555 vec($_, 2, 8) = 8 == 524288 00000000000000000001000000000000
5556 vec($_, 3, 8) = 8 == 134217728 00000000000000000000000000010000
5557 vec($_, 0, 8) = 16 == 16 00001000000000000000000000000000
5558 vec($_, 1, 8) = 16 == 4096 00000000000010000000000000000000
5559 vec($_, 2, 8) = 16 == 1048576 00000000000000000000100000000000
5560 vec($_, 3, 8) = 16 == 268435456 00000000000000000000000000001000
5561 vec($_, 0, 8) = 32 == 32 00000100000000000000000000000000
5562 vec($_, 1, 8) = 32 == 8192 00000000000001000000000000000000
5563 vec($_, 2, 8) = 32 == 2097152 00000000000000000000010000000000
5564 vec($_, 3, 8) = 32 == 536870912 00000000000000000000000000000100
5565 vec($_, 0, 8) = 64 == 64 00000010000000000000000000000000
5566 vec($_, 1, 8) = 64 == 16384 00000000000000100000000000000000
5567 vec($_, 2, 8) = 64 == 4194304 00000000000000000000001000000000
5568 vec($_, 3, 8) = 64 == 1073741824 00000000000000000000000000000010
5569 vec($_, 0, 8) = 128 == 128 00000001000000000000000000000000
5570 vec($_, 1, 8) = 128 == 32768 00000000000000010000000000000000
5571 vec($_, 2, 8) = 128 == 8388608 00000000000000000000000100000000
5572 vec($_, 3, 8) = 128 == 2147483648 00000000000000000000000000000001
5573
a0d0e21e
LW
5574=item wait
5575
2b5ab1e7
TC
5576Behaves like the wait(2) system call on your system: it waits for a child
5577process to terminate and returns the pid of the deceased process, or
19799a22 5578C<-1> if there are no child processes. The status is returned in C<$?>.
2b5ab1e7
TC
5579Note that a return value of C<-1> could mean that child processes are
5580being automatically reaped, as described in L<perlipc>.
a0d0e21e
LW
5581
5582=item waitpid PID,FLAGS
5583
2b5ab1e7
TC
5584Waits for a particular child process to terminate and returns the pid of
5585the deceased process, or C<-1> if there is no such child process. On some
5586systems, a value of 0 indicates that there are processes still running.
5587The status is returned in C<$?>. If you say
a0d0e21e 5588
5f05dabc 5589 use POSIX ":sys_wait_h";
5a964f20 5590 #...
2b5ab1e7
TC
5591 do {
5592 $kid = waitpid(-1,&WNOHANG);
5593 } until $kid == -1;
a0d0e21e 5594
2b5ab1e7
TC
5595then you can do a non-blocking wait for all pending zombie processes.
5596Non-blocking wait is available on machines supporting either the
5597waitpid(2) or wait4(2) system calls. However, waiting for a particular
5598pid with FLAGS of C<0> is implemented everywhere. (Perl emulates the
5599system call by remembering the status values of processes that have
5600exited but have not been harvested by the Perl script yet.)
a0d0e21e 5601
2b5ab1e7
TC
5602Note that on some systems, a return value of C<-1> could mean that child
5603processes are being automatically reaped. See L<perlipc> for details,
5604and for other examples.
5a964f20 5605
a0d0e21e
LW
5606=item wantarray
5607
19799a22
GS
5608Returns true if the context of the currently executing subroutine is
5609looking for a list value. Returns false if the context is looking
54310121 5610for a scalar. Returns the undefined value if the context is looking
5611for no value (void context).
a0d0e21e 5612
54310121 5613 return unless defined wantarray; # don't bother doing more
5614 my @a = complex_calculation();
5615 return wantarray ? @a : "@a";
a0d0e21e 5616
19799a22
GS
5617This function should have been named wantlist() instead.
5618
a0d0e21e
LW
5619=item warn LIST
5620
19799a22 5621Produces a message on STDERR just like C<die>, but doesn't exit or throw
774d564b 5622an exception.
5623
7660c0ab
A
5624If LIST is empty and C<$@> already contains a value (typically from a
5625previous eval) that value is used after appending C<"\t...caught">
19799a22
GS
5626to C<$@>. This is useful for staying almost, but not entirely similar to
5627C<die>.
43051805 5628
7660c0ab 5629If C<$@> is empty then the string C<"Warning: Something's wrong"> is used.
43051805 5630
774d564b 5631No message is printed if there is a C<$SIG{__WARN__}> handler
5632installed. It is the handler's responsibility to deal with the message
19799a22 5633as it sees fit (like, for instance, converting it into a C<die>). Most
774d564b 5634handlers must therefore make arrangements to actually display the
19799a22 5635warnings that they are not prepared to deal with, by calling C<warn>
774d564b 5636again in the handler. Note that this is quite safe and will not
5637produce an endless loop, since C<__WARN__> hooks are not called from
5638inside one.
5639
5640You will find this behavior is slightly different from that of
5641C<$SIG{__DIE__}> handlers (which don't suppress the error text, but can
19799a22 5642instead call C<die> again to change it).
774d564b 5643
5644Using a C<__WARN__> handler provides a powerful way to silence all
5645warnings (even the so-called mandatory ones). An example:
5646
5647 # wipe out *all* compile-time warnings
5648 BEGIN { $SIG{'__WARN__'} = sub { warn $_[0] if $DOWARN } }
5649 my $foo = 10;
5650 my $foo = 20; # no warning about duplicate my $foo,
5651 # but hey, you asked for it!
5652 # no compile-time or run-time warnings before here
5653 $DOWARN = 1;
5654
5655 # run-time warnings enabled after here
5656 warn "\$foo is alive and $foo!"; # does show up
5657
5658See L<perlvar> for details on setting C<%SIG> entries, and for more
2b5ab1e7
TC
5659examples. See the Carp module for other kinds of warnings using its
5660carp() and cluck() functions.
a0d0e21e
LW
5661
5662=item write FILEHANDLE
5663
5664=item write EXPR
5665
5666=item write
5667
5a964f20 5668Writes a formatted record (possibly multi-line) to the specified FILEHANDLE,
a0d0e21e 5669using the format associated with that file. By default the format for
54310121 5670a file is the one having the same name as the filehandle, but the
19799a22 5671format for the current output channel (see the C<select> function) may be set
184e9718 5672explicitly by assigning the name of the format to the C<$~> variable.
a0d0e21e
LW
5673
5674Top of form processing is handled automatically: if there is
5675insufficient room on the current page for the formatted record, the
5676page is advanced by writing a form feed, a special top-of-page format
5677is used to format the new page header, and then the record is written.
5678By default the top-of-page format is the name of the filehandle with
5679"_TOP" appended, but it may be dynamically set to the format of your
184e9718 5680choice by assigning the name to the C<$^> variable while the filehandle is
a0d0e21e 5681selected. The number of lines remaining on the current page is in
7660c0ab 5682variable C<$->, which can be set to C<0> to force a new page.
a0d0e21e
LW
5683
5684If FILEHANDLE is unspecified, output goes to the current default output
5685channel, which starts out as STDOUT but may be changed by the
19799a22 5686C<select> operator. If the FILEHANDLE is an EXPR, then the expression
a0d0e21e
LW
5687is evaluated and the resulting string is used to look up the name of
5688the FILEHANDLE at run time. For more on formats, see L<perlform>.
5689
19799a22 5690Note that write is I<not> the opposite of C<read>. Unfortunately.
a0d0e21e
LW
5691
5692=item y///
5693
7660c0ab 5694The transliteration operator. Same as C<tr///>. See L<perlop>.
a0d0e21e
LW
5695
5696=back