This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
ignore new build result from splitting docs for Module::CoreList
[perl5.git] / pod / perlfunc.pod
CommitLineData
a0d0e21e 1=head1 NAME
d74e8afc 2X<function>
a0d0e21e
LW
3
4perlfunc - Perl builtin functions
5
6=head1 DESCRIPTION
7
8The functions in this section can serve as terms in an expression.
9They fall into two major categories: list operators and named unary
10operators. These differ in their precedence relationship with a
11following comma. (See the precedence table in L<perlop>.) List
12operators take more than one argument, while unary operators can never
13take more than one argument. Thus, a comma terminates the argument of
14a unary operator, but merely separates the arguments of a list
8f1da26d 15operator. A unary operator generally provides scalar context to its
2b5ab1e7 16argument, while a list operator may provide either scalar or list
3b10bc60 17contexts for its arguments. If it does both, scalar arguments
18come first and list argument follow, and there can only ever
19be one such list argument. For instance, splice() has three scalar
2b5ab1e7
TC
20arguments followed by a list, whereas gethostbyname() has four scalar
21arguments.
a0d0e21e
LW
22
23In the syntax descriptions that follow, list operators that expect a
3b10bc60 24list (and provide list context for elements of the list) are shown
a0d0e21e
LW
25with LIST as an argument. Such a list may consist of any combination
26of scalar arguments or list values; the list values will be included
27in the list as if each individual element were interpolated at that
28point in the list, forming a longer single-dimensional list value.
8bdbc703 29Commas should separate literal elements of the LIST.
a0d0e21e
LW
30
31Any function in the list below may be used either with or without
32parentheses around its arguments. (The syntax descriptions omit the
3b10bc60 33parentheses.) If you use parentheses, the simple but occasionally
34surprising rule is this: It I<looks> like a function, therefore it I<is> a
a0d0e21e 35function, and precedence doesn't matter. Otherwise it's a list
3b10bc60 36operator or unary operator, and precedence does matter. Whitespace
37between the function and left parenthesis doesn't count, so sometimes
38you need to be careful:
a0d0e21e 39
5ed4f2ec 40 print 1+2+4; # Prints 7.
41 print(1+2) + 4; # Prints 3.
42 print (1+2)+4; # Also prints 3!
43 print +(1+2)+4; # Prints 7.
44 print ((1+2)+4); # Prints 7.
a0d0e21e
LW
45
46If you run Perl with the B<-w> switch it can warn you about this. For
47example, the third line above produces:
48
49 print (...) interpreted as function at - line 1.
50 Useless use of integer addition in void context at - line 1.
51
2b5ab1e7
TC
52A few functions take no arguments at all, and therefore work as neither
53unary nor list operators. These include such functions as C<time>
54and C<endpwent>. For example, C<time+86_400> always means
55C<time() + 86_400>.
56
a0d0e21e 57For functions that can be used in either a scalar or list context,
8f1da26d
TC
58nonabortive failure is generally indicated in scalar context by
59returning the undefined value, and in list context by returning the
3b10bc60 60empty list.
a0d0e21e 61
5a964f20
TC
62Remember the following important rule: There is B<no rule> that relates
63the behavior of an expression in list context to its behavior in scalar
64context, or vice versa. It might do two totally different things.
80d38338 65Each operator and function decides which sort of value would be most
2b5ab1e7 66appropriate to return in scalar context. Some operators return the
5a964f20 67length of the list that would have been returned in list context. Some
a0d0e21e
LW
68operators return the first value in the list. Some operators return the
69last value in the list. Some operators return a count of successful
70operations. In general, they do what you want, unless you want
71consistency.
d74e8afc 72X<context>
a0d0e21e 73
d1be9408 74A named array in scalar context is quite different from what would at
5a964f20
TC
75first glance appear to be a list in scalar context. You can't get a list
76like C<(1,2,3)> into being in scalar context, because the compiler knows
77the context at compile time. It would generate the scalar comma operator
78there, not the list construction version of the comma. That means it
79was never a list to start with.
80
3b10bc60 81In general, functions in Perl that serve as wrappers for system calls ("syscalls")
5dac7880 82of the same name (like chown(2), fork(2), closedir(2), etc.) return
5a964f20
TC
83true when they succeed and C<undef> otherwise, as is usually mentioned
84in the descriptions below. This is different from the C interfaces,
5dac7880 85which return C<-1> on failure. Exceptions to this rule include C<wait>,
19799a22 86C<waitpid>, and C<syscall>. System calls also set the special C<$!>
5a964f20
TC
87variable on failure. Other functions do not, except accidentally.
88
88e1f1a2
JV
89Extension modules can also hook into the Perl parser to define new
90kinds of keyword-headed expression. These may look like functions, but
91may also look completely different. The syntax following the keyword
92is defined entirely by the extension. If you are an implementor, see
93L<perlapi/PL_keyword_plugin> for the mechanism. If you are using such
94a module, see the module's documentation for details of the syntax that
95it defines.
96
cb1a09d0 97=head2 Perl Functions by Category
d74e8afc 98X<function>
cb1a09d0
AD
99
100Here are Perl's functions (including things that look like
5a964f20 101functions, like some keywords and named operators)
cb1a09d0
AD
102arranged by category. Some functions appear in more
103than one place.
104
13a2d996 105=over 4
cb1a09d0
AD
106
107=item Functions for SCALARs or strings
d74e8afc 108X<scalar> X<string> X<character>
cb1a09d0 109
c17cdb72
NC
110=for Pod::Functions =String
111
628253b8
BF
112C<chomp>, C<chop>, C<chr>, C<crypt>, C<fc>, C<hex>, C<index>, C<lc>,
113C<lcfirst>, C<length>, C<oct>, C<ord>, C<pack>, C<q//>, C<qq//>, C<reverse>,
945c54fd 114C<rindex>, C<sprintf>, C<substr>, C<tr///>, C<uc>, C<ucfirst>, C<y///>
cb1a09d0 115
4fe70ef9
NC
116C<fc> is available only if the C<"fc"> feature is enabled or if it is
117prefixed with C<CORE::>. The C<"fc"> feature is enabled automatically
3dd9a840 118with a C<use v5.16> (or higher) declaration in the current scope.
4fe70ef9
NC
119
120
cb1a09d0 121=item Regular expressions and pattern matching
d74e8afc 122X<regular expression> X<regex> X<regexp>
cb1a09d0 123
c17cdb72
NC
124=for Pod::Functions =Regexp
125
f5fa2679 126C<m//>, C<pos>, C<qr//>, C<quotemeta>, C<s///>, C<split>, C<study>
cb1a09d0
AD
127
128=item Numeric functions
d74e8afc 129X<numeric> X<number> X<trigonometric> X<trigonometry>
cb1a09d0 130
c17cdb72
NC
131=for Pod::Functions =Math
132
22fae026
TM
133C<abs>, C<atan2>, C<cos>, C<exp>, C<hex>, C<int>, C<log>, C<oct>, C<rand>,
134C<sin>, C<sqrt>, C<srand>
cb1a09d0
AD
135
136=item Functions for real @ARRAYs
d74e8afc 137X<array>
cb1a09d0 138
c17cdb72
NC
139=for Pod::Functions =ARRAY
140
a5ce339c 141C<each>, C<keys>, C<pop>, C<push>, C<shift>, C<splice>, C<unshift>, C<values>
cb1a09d0
AD
142
143=item Functions for list data
d74e8afc 144X<list>
cb1a09d0 145
c17cdb72
NC
146=for Pod::Functions =LIST
147
1dc8ecb8 148C<grep>, C<join>, C<map>, C<qw//>, C<reverse>, C<sort>, C<unpack>
cb1a09d0
AD
149
150=item Functions for real %HASHes
d74e8afc 151X<hash>
cb1a09d0 152
c17cdb72
NC
153=for Pod::Functions =HASH
154
22fae026 155C<delete>, C<each>, C<exists>, C<keys>, C<values>
cb1a09d0
AD
156
157=item Input and output functions
d74e8afc 158X<I/O> X<input> X<output> X<dbm>
cb1a09d0 159
c17cdb72
NC
160=for Pod::Functions =I/O
161
22fae026
TM
162C<binmode>, C<close>, C<closedir>, C<dbmclose>, C<dbmopen>, C<die>, C<eof>,
163C<fileno>, C<flock>, C<format>, C<getc>, C<print>, C<printf>, C<read>,
7c919445
NC
164C<readdir>, C<readline> C<rewinddir>, C<say>, C<seek>, C<seekdir>, C<select>,
165C<syscall>, C<sysread>, C<sysseek>, C<syswrite>, C<tell>, C<telldir>,
166C<truncate>, C<warn>, C<write>
cb1a09d0 167
4fe70ef9
NC
168C<say> is available only if the C<"say"> feature is enabled or if it is
169prefixed with C<CORE::>. The C<"say"> feature is enabled automatically
170with a C<use v5.10> (or higher) declaration in the current scope.
171
5dac7880 172=item Functions for fixed-length data or records
cb1a09d0 173
c17cdb72
NC
174=for Pod::Functions =Binary
175
7c919445
NC
176C<pack>, C<read>, C<syscall>, C<sysread>, C<sysseek>, C<syswrite>, C<unpack>,
177C<vec>
cb1a09d0
AD
178
179=item Functions for filehandles, files, or directories
d74e8afc 180X<file> X<filehandle> X<directory> X<pipe> X<link> X<symlink>
cb1a09d0 181
c17cdb72
NC
182=for Pod::Functions =File
183
22fae026 184C<-I<X>>, C<chdir>, C<chmod>, C<chown>, C<chroot>, C<fcntl>, C<glob>,
5ff3f7a4 185C<ioctl>, C<link>, C<lstat>, C<mkdir>, C<open>, C<opendir>,
1e278fd9
JH
186C<readlink>, C<rename>, C<rmdir>, C<stat>, C<symlink>, C<sysopen>,
187C<umask>, C<unlink>, C<utime>
cb1a09d0 188
cf264981 189=item Keywords related to the control flow of your Perl program
d74e8afc 190X<control flow>
cb1a09d0 191
c17cdb72
NC
192=for Pod::Functions =Flow
193
7289c5e6
FC
194C<caller>, C<continue>, C<die>, C<do>,
195C<dump>, C<eval>, C<evalbytes> C<exit>,
cfa52385 196C<__FILE__>, C<goto>, C<last>, C<__LINE__>, C<next>, C<__PACKAGE__>,
7c919445 197C<prototype>, C<redo>, C<return>, C<sub>, C<__SUB__>, C<wantarray>
84ed0108 198
4fe70ef9
NC
199C<evalbytes> is only available with with the C<"evalbytes"> feature (see
200L<feature>) or if prefixed with C<CORE::>. C<__SUB__> is only available
201with with the C<"current_sub"> feature or if prefixed with C<CORE::>. Both
202the C<"evalbytes"> and C<"current_sub"> features are enabled automatically
203with a C<use v5.16> (or higher) declaration in the current scope.
cb1a09d0 204
8f1da26d 205=item Keywords related to the switch feature
0d863452 206
c17cdb72
NC
207=for Pod::Functions =Switch
208
4a904372 209C<break>, C<continue>, C<default>, C<given>, C<when>
0d863452 210
4a904372 211Except for C<continue>, these are available only if you enable the
4fe70ef9
NC
212C<"switch"> feature or use the C<CORE::> prefix. See L<feature> and
213L<perlsyn/"Switch Statements">. The C<"switch"> feature is enabled
214automatically with a C<use v5.10> (or higher) declaration in the current
215scope. In Perl 5.14 and earlier, C<continue> required the C<"switch">
216feature, like the other keywords.
0d863452 217
54310121 218=item Keywords related to scoping
cb1a09d0 219
c17cdb72
NC
220=for Pod::Functions =Namespace
221
8f1da26d 222C<caller>, C<import>, C<local>, C<my>, C<our>, C<package>, C<state>, C<use>
36fb85f3 223
4fe70ef9
NC
224C<state> is available only if the C<"state"> feature is enabled or if it is
225prefixed with C<CORE::>. The C<"state"> feature is enabled automatically
226with a C<use v5.10> (or higher) declaration in the current scope.
cb1a09d0
AD
227
228=item Miscellaneous functions
229
c17cdb72
NC
230=for Pod::Functions =Misc
231
7289c5e6 232C<defined>, C<dump>, C<eval>, C<evalbytes>,
7c919445 233C<formline>, C<local>, C<lock>, C<my>, C<our>, C<prototype>,
834df1c5 234C<reset>, C<scalar>, C<state>, C<undef>, C<wantarray>
cb1a09d0
AD
235
236=item Functions for processes and process groups
d74e8afc 237X<process> X<pid> X<process id>
cb1a09d0 238
c17cdb72
NC
239=for Pod::Functions =Process
240
22fae026 241C<alarm>, C<exec>, C<fork>, C<getpgrp>, C<getppid>, C<getpriority>, C<kill>,
4319b00c
FC
242C<pipe>, C<qx//>, C<readpipe>, C<setpgrp>,
243C<setpriority>, C<sleep>, C<system>,
22fae026 244C<times>, C<wait>, C<waitpid>
cb1a09d0 245
3b10bc60 246=item Keywords related to Perl modules
d74e8afc 247X<module>
cb1a09d0 248
c17cdb72
NC
249=for Pod::Functions =Modules
250
22fae026 251C<do>, C<import>, C<no>, C<package>, C<require>, C<use>
cb1a09d0 252
353c6505 253=item Keywords related to classes and object-orientation
d74e8afc 254X<object> X<class> X<package>
cb1a09d0 255
c17cdb72
NC
256=for Pod::Functions =Objects
257
22fae026
TM
258C<bless>, C<dbmclose>, C<dbmopen>, C<package>, C<ref>, C<tie>, C<tied>,
259C<untie>, C<use>
cb1a09d0
AD
260
261=item Low-level socket functions
d74e8afc 262X<socket> X<sock>
cb1a09d0 263
c17cdb72
NC
264=for Pod::Functions =Socket
265
22fae026
TM
266C<accept>, C<bind>, C<connect>, C<getpeername>, C<getsockname>,
267C<getsockopt>, C<listen>, C<recv>, C<send>, C<setsockopt>, C<shutdown>,
737dd4b4 268C<socket>, C<socketpair>
cb1a09d0
AD
269
270=item System V interprocess communication functions
d74e8afc 271X<IPC> X<System V> X<semaphore> X<shared memory> X<memory> X<message>
cb1a09d0 272
c17cdb72
NC
273=for Pod::Functions =SysV
274
22fae026
TM
275C<msgctl>, C<msgget>, C<msgrcv>, C<msgsnd>, C<semctl>, C<semget>, C<semop>,
276C<shmctl>, C<shmget>, C<shmread>, C<shmwrite>
cb1a09d0
AD
277
278=item Fetching user and group info
d74e8afc 279X<user> X<group> X<password> X<uid> X<gid> X<passwd> X</etc/passwd>
cb1a09d0 280
c17cdb72
NC
281=for Pod::Functions =User
282
22fae026
TM
283C<endgrent>, C<endhostent>, C<endnetent>, C<endpwent>, C<getgrent>,
284C<getgrgid>, C<getgrnam>, C<getlogin>, C<getpwent>, C<getpwnam>,
285C<getpwuid>, C<setgrent>, C<setpwent>
cb1a09d0
AD
286
287=item Fetching network info
d74e8afc 288X<network> X<protocol> X<host> X<hostname> X<IP> X<address> X<service>
cb1a09d0 289
c17cdb72
NC
290=for Pod::Functions =Network
291
22fae026
TM
292C<endprotoent>, C<endservent>, C<gethostbyaddr>, C<gethostbyname>,
293C<gethostent>, C<getnetbyaddr>, C<getnetbyname>, C<getnetent>,
294C<getprotobyname>, C<getprotobynumber>, C<getprotoent>,
295C<getservbyname>, C<getservbyport>, C<getservent>, C<sethostent>,
296C<setnetent>, C<setprotoent>, C<setservent>
cb1a09d0
AD
297
298=item Time-related functions
d74e8afc 299X<time> X<date>
cb1a09d0 300
c17cdb72
NC
301=for Pod::Functions =Time
302
22fae026 303C<gmtime>, C<localtime>, C<time>, C<times>
cb1a09d0 304
8f0d6a61
RS
305=item Non-function keywords
306
c17cdb72
NC
307=for Pod::Functions =!Non-functions
308
f5fa2679
NC
309C<and>, C<AUTOLOAD>, C<BEGIN>, C<CHECK>, C<cmp>, C<CORE>, C<__DATA__>,
310C<DESTROY>, C<else>, C<elseif>, C<elsif>, C<END>, C<__END__>, C<eq>, C<for>,
311C<foreach>, C<ge>, C<gt>, C<if>, C<INIT>, C<le>, C<lt>, C<ne>, C<not>, C<or>,
312C<UNITCHECK>, C<unless>, C<until>, C<while>, C<x>, C<xor>
8f0d6a61 313
cb1a09d0
AD
314=back
315
60f9f73c 316=head2 Portability
d74e8afc 317X<portability> X<Unix> X<portable>
60f9f73c 318
2b5ab1e7
TC
319Perl was born in Unix and can therefore access all common Unix
320system calls. In non-Unix environments, the functionality of some
8f1da26d 321Unix system calls may not be available or details of the available
2b5ab1e7 322functionality may differ slightly. The Perl functions affected
60f9f73c
JH
323by this are:
324
325C<-X>, C<binmode>, C<chmod>, C<chown>, C<chroot>, C<crypt>,
326C<dbmclose>, C<dbmopen>, C<dump>, C<endgrent>, C<endhostent>,
327C<endnetent>, C<endprotoent>, C<endpwent>, C<endservent>, C<exec>,
ef5a6dd7
JH
328C<fcntl>, C<flock>, C<fork>, C<getgrent>, C<getgrgid>, C<gethostbyname>,
329C<gethostent>, C<getlogin>, C<getnetbyaddr>, C<getnetbyname>, C<getnetent>,
54d7b083 330C<getppid>, C<getpgrp>, C<getpriority>, C<getprotobynumber>,
60f9f73c
JH
331C<getprotoent>, C<getpwent>, C<getpwnam>, C<getpwuid>,
332C<getservbyport>, C<getservent>, C<getsockopt>, C<glob>, C<ioctl>,
333C<kill>, C<link>, C<lstat>, C<msgctl>, C<msgget>, C<msgrcv>,
2b5ab1e7 334C<msgsnd>, C<open>, C<pipe>, C<readlink>, C<rename>, C<select>, C<semctl>,
60f9f73c
JH
335C<semget>, C<semop>, C<setgrent>, C<sethostent>, C<setnetent>,
336C<setpgrp>, C<setpriority>, C<setprotoent>, C<setpwent>,
337C<setservent>, C<setsockopt>, C<shmctl>, C<shmget>, C<shmread>,
737dd4b4 338C<shmwrite>, C<socket>, C<socketpair>,
80cbd5ad
JH
339C<stat>, C<symlink>, C<syscall>, C<sysopen>, C<system>,
340C<times>, C<truncate>, C<umask>, C<unlink>,
2b5ab1e7 341C<utime>, C<wait>, C<waitpid>
60f9f73c
JH
342
343For more information about the portability of these functions, see
344L<perlport> and other available platform-specific documentation.
345
cb1a09d0
AD
346=head2 Alphabetical Listing of Perl Functions
347
3b10bc60 348=over
a0d0e21e 349
5b3c99c0 350=item -X FILEHANDLE
d74e8afc
ITB
351X<-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>
352X<-S>X<-b>X<-c>X<-t>X<-u>X<-g>X<-k>X<-T>X<-B>X<-M>X<-A>X<-C>
a0d0e21e 353
5b3c99c0 354=item -X EXPR
a0d0e21e 355
5228a96c
SP
356=item -X DIRHANDLE
357
5b3c99c0 358=item -X
a0d0e21e 359
c17cdb72
NC
360=for Pod::Functions a file test (-r, -x, etc)
361
a0d0e21e 362A file test, where X is one of the letters listed below. This unary
5228a96c
SP
363operator takes one argument, either a filename, a filehandle, or a dirhandle,
364and tests the associated file to see if something is true about it. If the
7660c0ab 365argument is omitted, tests C<$_>, except for C<-t>, which tests STDIN.
19799a22 366Unless otherwise documented, it returns C<1> for true and C<''> for false, or
a0d0e21e 367the undefined value if the file doesn't exist. Despite the funny
d0821a6a 368names, precedence is the same as any other named unary operator. The
a0d0e21e
LW
369operator may be any of:
370
5ed4f2ec 371 -r File is readable by effective uid/gid.
372 -w File is writable by effective uid/gid.
373 -x File is executable by effective uid/gid.
374 -o File is owned by effective uid.
a0d0e21e 375
5ed4f2ec 376 -R File is readable by real uid/gid.
377 -W File is writable by real uid/gid.
378 -X File is executable by real uid/gid.
379 -O File is owned by real uid.
a0d0e21e 380
5ed4f2ec 381 -e File exists.
382 -z File has zero size (is empty).
383 -s File has nonzero size (returns size in bytes).
a0d0e21e 384
5ed4f2ec 385 -f File is a plain file.
386 -d File is a directory.
387 -l File is a symbolic link.
388 -p File is a named pipe (FIFO), or Filehandle is a pipe.
389 -S File is a socket.
390 -b File is a block special file.
391 -c File is a character special file.
392 -t Filehandle is opened to a tty.
a0d0e21e 393
5ed4f2ec 394 -u File has setuid bit set.
395 -g File has setgid bit set.
396 -k File has sticky bit set.
a0d0e21e 397
5ed4f2ec 398 -T File is an ASCII text file (heuristic guess).
399 -B File is a "binary" file (opposite of -T).
a0d0e21e 400
5ed4f2ec 401 -M Script start time minus file modification time, in days.
402 -A Same for access time.
403 -C Same for inode change time (Unix, may differ for other platforms)
a0d0e21e 404
a0d0e21e
LW
405Example:
406
407 while (<>) {
a9a5a0dc
VP
408 chomp;
409 next unless -f $_; # ignore specials
410 #...
a0d0e21e
LW
411 }
412
4fb67938
FC
413Note that C<-s/a/b/> does not do a negated substitution. Saying
414C<-exp($foo)> still works as expected, however: only single letters
415following a minus are interpreted as file tests.
416
417These operators are exempt from the "looks like a function rule" described
4d0444a3
FC
418above. That is, an opening parenthesis after the operator does not affect
419how much of the following code constitutes the argument. Put the opening
4fb67938
FC
420parentheses before the operator to separate it from code that follows (this
421applies only to operators with higher precedence than unary operators, of
422course):
423
424 -s($file) + 1024 # probably wrong; same as -s($file + 1024)
425 (-s $file) + 1024 # correct
426
5ff3f7a4
GS
427The interpretation of the file permission operators C<-r>, C<-R>,
428C<-w>, C<-W>, C<-x>, and C<-X> is by default based solely on the mode
429of the file and the uids and gids of the user. There may be other
ecae030f
MO
430reasons you can't actually read, write, or execute the file: for
431example network filesystem access controls, ACLs (access control lists),
432read-only filesystems, and unrecognized executable formats. Note
433that the use of these six specific operators to verify if some operation
434is possible is usually a mistake, because it may be open to race
435conditions.
5ff3f7a4 436
2b5ab1e7
TC
437Also note that, for the superuser on the local filesystems, the C<-r>,
438C<-R>, C<-w>, and C<-W> tests always return 1, and C<-x> and C<-X> return 1
5ff3f7a4
GS
439if any execute bit is set in the mode. Scripts run by the superuser
440may thus need to do a stat() to determine the actual mode of the file,
2b5ab1e7 441or temporarily set their effective uid to something else.
5ff3f7a4
GS
442
443If you are using ACLs, there is a pragma called C<filetest> that may
444produce more accurate results than the bare stat() mode bits.
5dac7880
FC
445When under C<use filetest 'access'> the above-mentioned filetests
446test whether the permission can(not) be granted using the
3b10bc60 447access(2) family of system calls. Also note that the C<-x> and C<-X> may
5ff3f7a4
GS
448under this pragma return true even if there are no execute permission
449bits set (nor any extra execute permission ACLs). This strangeness is
391b733c 450due to the underlying system calls' definitions. Note also that, due to
ecae030f
MO
451the implementation of C<use filetest 'access'>, the C<_> special
452filehandle won't cache the results of the file tests when this pragma is
453in effect. Read the documentation for the C<filetest> pragma for more
454information.
5ff3f7a4 455
a0d0e21e
LW
456The C<-T> and C<-B> switches work as follows. The first block or so of the
457file is examined for odd characters such as strange control codes or
61eff3bc 458characters with the high bit set. If too many strange characters (>30%)
cf264981 459are found, it's a C<-B> file; otherwise it's a C<-T> file. Also, any file
3b10bc60 460containing a zero byte in the first block is considered a binary file. If C<-T>
9124316e 461or C<-B> is used on a filehandle, the current IO buffer is examined
3b10bc60 462rather than the first block. Both C<-T> and C<-B> return true on an empty
54310121 463file, or a file at EOF when testing a filehandle. Because you have to
4633a7c4
LW
464read a file to do the C<-T> test, on most occasions you want to use a C<-f>
465against the file first, as in C<next unless -f $file && -T $file>.
a0d0e21e 466
5dac7880 467If any of the file tests (or either the C<stat> or C<lstat> operator) is given
28757baa 468the special filehandle consisting of a solitary underline, then the stat
a0d0e21e
LW
469structure of the previous file test (or stat operator) is used, saving
470a system call. (This doesn't work with C<-t>, and you need to remember
3b10bc60 471that lstat() and C<-l> leave values in the stat structure for the
5c9aa243 472symbolic link, not the real file.) (Also, if the stat buffer was filled by
cf264981 473an C<lstat> call, C<-T> and C<-B> will reset it with the results of C<stat _>).
5c9aa243 474Example:
a0d0e21e
LW
475
476 print "Can do.\n" if -r $a || -w _ || -x _;
477
478 stat($filename);
479 print "Readable\n" if -r _;
480 print "Writable\n" if -w _;
481 print "Executable\n" if -x _;
482 print "Setuid\n" if -u _;
483 print "Setgid\n" if -g _;
484 print "Sticky\n" if -k _;
485 print "Text\n" if -T _;
486 print "Binary\n" if -B _;
487
fbb0b3b3
RGS
488As of Perl 5.9.1, as a form of purely syntactic sugar, you can stack file
489test operators, in a way that C<-f -w -x $file> is equivalent to
391b733c 490C<-x $file && -w _ && -f _>. (This is only fancy fancy: if you use
fbb0b3b3
RGS
491the return value of C<-f $file> as an argument to another filetest
492operator, no special magic will happen.)
493
bee96257 494Portability issues: L<perlport/-X>.
ea9eb35a 495
bade7fbc
TC
496To avoid confusing would-be users of your code with mysterious
497syntax errors, put something like this at the top of your script:
498
499 use 5.010; # so filetest ops can stack
500
a0d0e21e 501=item abs VALUE
d74e8afc 502X<abs> X<absolute>
a0d0e21e 503
54310121 504=item abs
bbce6d69 505
c17cdb72
NC
506=for Pod::Functions absolute value function
507
a0d0e21e 508Returns the absolute value of its argument.
7660c0ab 509If VALUE is omitted, uses C<$_>.
a0d0e21e
LW
510
511=item accept NEWSOCKET,GENERICSOCKET
d74e8afc 512X<accept>
a0d0e21e 513
c17cdb72
NC
514=for Pod::Functions accept an incoming socket connect
515
3b10bc60 516Accepts an incoming socket connect, just as accept(2)
19799a22 517does. Returns the packed address if it succeeded, false otherwise.
2b5ab1e7 518See the example in L<perlipc/"Sockets: Client/Server Communication">.
a0d0e21e 519
8d2a6795
GS
520On systems that support a close-on-exec flag on files, the flag will
521be set for the newly opened file descriptor, as determined by the
522value of $^F. See L<perlvar/$^F>.
523
a0d0e21e 524=item alarm SECONDS
d74e8afc
ITB
525X<alarm>
526X<SIGALRM>
527X<timer>
a0d0e21e 528
54310121 529=item alarm
bbce6d69 530
c17cdb72
NC
531=for Pod::Functions schedule a SIGALRM
532
a0d0e21e 533Arranges to have a SIGALRM delivered to this process after the
cf264981 534specified number of wallclock seconds has elapsed. If SECONDS is not
391b733c 535specified, the value stored in C<$_> is used. (On some machines,
d400eac8
JH
536unfortunately, the elapsed time may be up to one second less or more
537than you specified because of how seconds are counted, and process
538scheduling may delay the delivery of the signal even further.)
539
540Only one timer may be counting at once. Each call disables the
541previous timer, and an argument of C<0> may be supplied to cancel the
542previous timer without starting a new one. The returned value is the
543amount of time remaining on the previous timer.
a0d0e21e 544
2bc69794
BS
545For delays of finer granularity than one second, the Time::HiRes module
546(from CPAN, and starting from Perl 5.8 part of the standard
547distribution) provides ualarm(). You may also use Perl's four-argument
548version of select() leaving the first three arguments undefined, or you
549might be able to use the C<syscall> interface to access setitimer(2) if
391b733c 550your system supports it. See L<perlfaq8> for details.
2b5ab1e7 551
80d38338
TC
552It is usually a mistake to intermix C<alarm> and C<sleep> calls, because
553C<sleep> may be internally implemented on your system with C<alarm>.
a0d0e21e 554
19799a22
GS
555If you want to use C<alarm> to time out a system call you need to use an
556C<eval>/C<die> pair. You can't rely on the alarm causing the system call to
f86cebdf 557fail with C<$!> set to C<EINTR> because Perl sets up signal handlers to
19799a22 558restart system calls on some systems. Using C<eval>/C<die> always works,
5a964f20 559modulo the caveats given in L<perlipc/"Signals">.
ff68c719 560
561 eval {
a9a5a0dc
VP
562 local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
563 alarm $timeout;
564 $nread = sysread SOCKET, $buffer, $size;
565 alarm 0;
ff68c719 566 };
ff68c719 567 if ($@) {
a9a5a0dc 568 die unless $@ eq "alarm\n"; # propagate unexpected errors
5ed4f2ec 569 # timed out
ff68c719 570 }
571 else {
5ed4f2ec 572 # didn't
ff68c719 573 }
574
91d81acc
JH
575For more information see L<perlipc>.
576
ea9eb35a
BJ
577Portability issues: L<perlport/alarm>.
578
a0d0e21e 579=item atan2 Y,X
d74e8afc 580X<atan2> X<arctangent> X<tan> X<tangent>
a0d0e21e 581
c17cdb72
NC
582=for Pod::Functions arctangent of Y/X in the range -PI to PI
583
a0d0e21e
LW
584Returns the arctangent of Y/X in the range -PI to PI.
585
ca6e1c26 586For the tangent operation, you may use the C<Math::Trig::tan>
28757baa 587function, or use the familiar relation:
588
589 sub tan { sin($_[0]) / cos($_[0]) }
590
a1021d57
RGS
591The return value for C<atan2(0,0)> is implementation-defined; consult
592your atan2(3) manpage for more information.
bf5f1b4c 593
ea9eb35a
BJ
594Portability issues: L<perlport/atan2>.
595
a0d0e21e 596=item bind SOCKET,NAME
d74e8afc 597X<bind>
a0d0e21e 598
c17cdb72
NC
599=for Pod::Functions binds an address to a socket
600
3b10bc60 601Binds a network address to a socket, just as bind(2)
19799a22 602does. Returns true if it succeeded, false otherwise. NAME should be a
4633a7c4
LW
603packed address of the appropriate type for the socket. See the examples in
604L<perlipc/"Sockets: Client/Server Communication">.
a0d0e21e 605
fae2c0fb 606=item binmode FILEHANDLE, LAYER
d74e8afc 607X<binmode> X<binary> X<text> X<DOS> X<Windows>
1c1fc3ea 608
a0d0e21e
LW
609=item binmode FILEHANDLE
610
c17cdb72
NC
611=for Pod::Functions prepare binary files for I/O
612
1cbfc93d
NIS
613Arranges for FILEHANDLE to be read or written in "binary" or "text"
614mode on systems where the run-time libraries distinguish between
615binary and text files. If FILEHANDLE is an expression, the value is
616taken as the name of the filehandle. Returns true on success,
b5fe5ca2 617otherwise it returns C<undef> and sets C<$!> (errno).
1cbfc93d 618
8f1da26d 619On some systems (in general, DOS- and Windows-based systems) binmode()
d807c6f4 620is necessary when you're not working with a text file. For the sake
d7a0d798
FC
621of portability it is a good idea always to use it when appropriate,
622and never to use it when it isn't appropriate. Also, people can
8f1da26d 623set their I/O to be by default UTF8-encoded Unicode, not bytes.
d807c6f4
JH
624
625In other words: regardless of platform, use binmode() on binary data,
d7a0d798 626like images, for example.
d807c6f4
JH
627
628If LAYER is present it is a single string, but may contain multiple
391b733c 629directives. The directives alter the behaviour of the filehandle.
d7a0d798 630When LAYER is present, using binmode on a text file makes sense.
d807c6f4 631
fae2c0fb 632If LAYER is omitted or specified as C<:raw> the filehandle is made
391b733c 633suitable for passing binary data. This includes turning off possible CRLF
0226bbdb 634translation and marking it as bytes (as opposed to Unicode characters).
749683d2 635Note that, despite what may be implied in I<"Programming Perl"> (the
3b10bc60 636Camel, 3rd edition) or elsewhere, C<:raw> is I<not> simply the inverse of C<:crlf>.
637Other layers that would affect the binary nature of the stream are
391b733c 638I<also> disabled. See L<PerlIO>, L<perlrun>, and the discussion about the
0226bbdb 639PERLIO environment variable.
01e6739c 640
3b10bc60 641The C<:bytes>, C<:crlf>, C<:utf8>, and any other directives of the
d807c6f4
JH
642form C<:...>, are called I/O I<layers>. The C<open> pragma can be used to
643establish default I/O layers. See L<open>.
644
fae2c0fb
RGS
645I<The LAYER parameter of the binmode() function is described as "DISCIPLINE"
646in "Programming Perl, 3rd Edition". However, since the publishing of this
647book, by many known as "Camel III", the consensus of the naming of this
648functionality has moved from "discipline" to "layer". All documentation
649of this version of Perl therefore refers to "layers" rather than to
650"disciplines". Now back to the regularly scheduled documentation...>
651
8f1da26d 652To mark FILEHANDLE as UTF-8, use C<:utf8> or C<:encoding(UTF-8)>.
6902c96a 653C<:utf8> just marks the data as UTF-8 without further checking,
8f1da26d 654while C<:encoding(UTF-8)> checks the data for actually being valid
391b733c 655UTF-8. More details can be found in L<PerlIO::encoding>.
1cbfc93d 656
ed53a2bb 657In general, binmode() should be called after open() but before any I/O
3b10bc60 658is done on the filehandle. Calling binmode() normally flushes any
01e6739c 659pending buffered output data (and perhaps pending input data) on the
fae2c0fb 660handle. An exception to this is the C<:encoding> layer that
d7a0d798 661changes the default character encoding of the handle; see L</open>.
fae2c0fb 662The C<:encoding> layer sometimes needs to be called in
3874323d
JH
663mid-stream, and it doesn't flush the stream. The C<:encoding>
664also implicitly pushes on top of itself the C<:utf8> layer because
3b10bc60 665internally Perl operates on UTF8-encoded Unicode characters.
16fe6d59 666
19799a22 667The operating system, device drivers, C libraries, and Perl run-time
8f1da26d
TC
668system all conspire to let the programmer treat a single
669character (C<\n>) as the line terminator, irrespective of external
30168b04
GS
670representation. On many operating systems, the native text file
671representation matches the internal representation, but on some
672platforms the external representation of C<\n> is made up of more than
673one character.
674
8f1da26d
TC
675All variants of Unix, Mac OS (old and new), and Stream_LF files on VMS use
676a single character to end each line in the external representation of text
677(even though that single character is CARRIAGE RETURN on old, pre-Darwin
391b733c 678flavors of Mac OS, and is LINE FEED on Unix and most VMS files). In other
8f1da26d
TC
679systems like OS/2, DOS, and the various flavors of MS-Windows, your program
680sees a C<\n> as a simple C<\cJ>, but what's stored in text files are the
681two characters C<\cM\cJ>. That means that if you don't use binmode() on
682these systems, C<\cM\cJ> sequences on disk will be converted to C<\n> on
683input, and any C<\n> in your program will be converted back to C<\cM\cJ> on
684output. This is what you want for text files, but it can be disastrous for
685binary files.
30168b04
GS
686
687Another consequence of using binmode() (on some systems) is that
688special end-of-file markers will be seen as part of the data stream.
d7a0d798
FC
689For systems from the Microsoft family this means that, if your binary
690data contain C<\cZ>, the I/O subsystem will regard it as the end of
30168b04
GS
691the file, unless you use binmode().
692
3b10bc60 693binmode() is important not only for readline() and print() operations,
30168b04
GS
694but also when using read(), seek(), sysread(), syswrite() and tell()
695(see L<perlport> for more details). See the C<$/> and C<$\> variables
696in L<perlvar> for how to manually set your input and output
697line-termination sequences.
a0d0e21e 698
ea9eb35a
BJ
699Portability issues: L<perlport/binmode>.
700
4633a7c4 701=item bless REF,CLASSNAME
d74e8afc 702X<bless>
a0d0e21e
LW
703
704=item bless REF
705
c17cdb72
NC
706=for Pod::Functions create an object
707
2b5ab1e7
TC
708This function tells the thingy referenced by REF that it is now an object
709in the CLASSNAME package. If CLASSNAME is omitted, the current package
19799a22 710is used. Because a C<bless> is often the last thing in a constructor,
2b5ab1e7 711it returns the reference for convenience. Always use the two-argument
cf264981 712version if a derived class might inherit the function doing the blessing.
82e1c0d9 713SeeL<perlobj> for more about the blessing (and blessings) of objects.
a0d0e21e 714
57668c4d 715Consider always blessing objects in CLASSNAMEs that are mixed case.
2b5ab1e7 716Namespaces with all lowercase names are considered reserved for
391b733c 717Perl pragmata. Builtin types have all uppercase names. To prevent
2b5ab1e7
TC
718confusion, you may wish to avoid such package names as well. Make sure
719that CLASSNAME is a true value.
60ad88b8
GS
720
721See L<perlmod/"Perl Modules">.
722
0d863452
RH
723=item break
724
d9b04284 725=for Pod::Functions +switch break out of a C<given> block
c17cdb72 726
0d863452
RH
727Break out of a C<given()> block.
728
8f1da26d 729This keyword is enabled by the C<"switch"> feature: see
4a904372
FC
730L<feature> for more information. You can also access it by
731prefixing it with C<CORE::>. Alternately, include a C<use
8f1da26d 732v5.10> or later to the current scope.
0d863452 733
a0d0e21e 734=item caller EXPR
d74e8afc 735X<caller> X<call stack> X<stack> X<stack trace>
a0d0e21e
LW
736
737=item caller
738
c17cdb72
NC
739=for Pod::Functions get context of the current subroutine call
740
5a964f20 741Returns the context of the current subroutine call. In scalar context,
80d38338
TC
742returns the caller's package name if there I<is> a caller (that is, if
743we're in a subroutine or C<eval> or C<require>) and the undefined value
5a964f20 744otherwise. In list context, returns
a0d0e21e 745
ee6b43cc 746 # 0 1 2
748a9306 747 ($package, $filename, $line) = caller;
a0d0e21e
LW
748
749With EXPR, it returns some extra information that the debugger uses to
750print a stack trace. The value of EXPR indicates how many call frames
751to go back before the current one.
752
ee6b43cc 753 # 0 1 2 3 4
f3aa04c2 754 ($package, $filename, $line, $subroutine, $hasargs,
ee6b43cc 755
756 # 5 6 7 8 9 10
b3ca2e83 757 $wantarray, $evaltext, $is_require, $hints, $bitmask, $hinthash)
ee6b43cc 758 = caller($i);
e7ea3e70 759
951ba7fe 760Here $subroutine may be C<(eval)> if the frame is not a subroutine
19799a22 761call, but an C<eval>. In such a case additional elements $evaltext and
7660c0ab 762C<$is_require> are set: C<$is_require> is true if the frame is created by a
19799a22 763C<require> or C<use> statement, $evaltext contains the text of the
277ddfaf 764C<eval EXPR> statement. In particular, for an C<eval BLOCK> statement,
cc1c2e42 765$subroutine is C<(eval)>, but $evaltext is undefined. (Note also that
0fc9dec4
RGS
766each C<use> statement creates a C<require> frame inside an C<eval EXPR>
767frame.) $subroutine may also be C<(unknown)> if this particular
768subroutine happens to have been deleted from the symbol table.
769C<$hasargs> is true if a new instance of C<@_> was set up for the frame.
770C<$hints> and C<$bitmask> contain pragmatic hints that the caller was
771compiled with. The C<$hints> and C<$bitmask> values are subject to change
772between versions of Perl, and are not meant for external use.
748a9306 773
b3ca2e83 774C<$hinthash> is a reference to a hash containing the value of C<%^H> when the
391b733c 775caller was compiled, or C<undef> if C<%^H> was empty. Do not modify the values
b3ca2e83
NC
776of this hash, as they are the actual values stored in the optree.
777
ffe0c19d
FC
778Furthermore, when called from within the DB package in
779list context, and with an argument, caller returns more
7660c0ab 780detailed information: it sets the list variable C<@DB::args> to be the
54310121 781arguments with which the subroutine was invoked.
748a9306 782
7660c0ab 783Be aware that the optimizer might have optimized call frames away before
19799a22 784C<caller> had a chance to get the information. That means that C<caller(N)>
80d38338 785might not return information about the call frame you expect it to, for
b76cc8ba 786C<< N > 1 >>. In particular, C<@DB::args> might have information from the
19799a22 787previous time C<caller> was called.
7660c0ab 788
8f1da26d 789Be aware that setting C<@DB::args> is I<best effort>, intended for
391b733c 790debugging or generating backtraces, and should not be relied upon. In
ca9f0cb5
NC
791particular, as C<@_> contains aliases to the caller's arguments, Perl does
792not take a copy of C<@_>, so C<@DB::args> will contain modifications the
793subroutine makes to C<@_> or its contents, not the original values at call
391b733c 794time. C<@DB::args>, like C<@_>, does not hold explicit references to its
ca9f0cb5 795elements, so under certain cases its elements may have become freed and
391b733c 796reallocated for other variables or temporary values. Finally, a side effect
d7a0d798 797of the current implementation is that the effects of C<shift @_> can
8f1da26d
TC
798I<normally> be undone (but not C<pop @_> or other splicing, I<and> not if a
799reference to C<@_> has been taken, I<and> subject to the caveat about reallocated
ca9f0cb5 800elements), so C<@DB::args> is actually a hybrid of the current state and
391b733c 801initial state of C<@_>. Buyer beware.
ca9f0cb5 802
a0d0e21e 803=item chdir EXPR
d74e8afc
ITB
804X<chdir>
805X<cd>
f723aae1 806X<directory, change>
a0d0e21e 807
c4aca7d0
GA
808=item chdir FILEHANDLE
809
810=item chdir DIRHANDLE
811
ce2984c3
PF
812=item chdir
813
c17cdb72
NC
814=for Pod::Functions change your current working directory
815
391b733c 816Changes the working directory to EXPR, if possible. If EXPR is omitted,
0bfc1ec4 817changes to the directory specified by C<$ENV{HOME}>, if set; if not,
391b733c
FC
818changes to the directory specified by C<$ENV{LOGDIR}>. (Under VMS, the
819variable C<$ENV{SYS$LOGIN}> is also checked, and used if it is set.) If
820neither is set, C<chdir> does nothing. It returns true on success,
821false otherwise. See the example under C<die>.
a0d0e21e 822
3b10bc60 823On systems that support fchdir(2), you may pass a filehandle or
34169887 824directory handle as the argument. On systems that don't support fchdir(2),
3b10bc60 825passing handles raises an exception.
c4aca7d0 826
a0d0e21e 827=item chmod LIST
d74e8afc 828X<chmod> X<permission> X<mode>
a0d0e21e 829
c17cdb72
NC
830=for Pod::Functions changes the permissions on a list of files
831
a0d0e21e 832Changes the permissions of a list of files. The first element of the
8f1da26d 833list must be the numeric mode, which should probably be an octal
4ad40acf 834number, and which definitely should I<not> be a string of octal digits:
3b10bc60 835C<0644> is okay, but C<"0644"> is not. Returns the number of files
8f1da26d 836successfully changed. See also L</oct> if all you have is a string.
a0d0e21e 837
3b10bc60 838 $cnt = chmod 0755, "foo", "bar";
a0d0e21e 839 chmod 0755, @executables;
3b10bc60 840 $mode = "0644"; chmod $mode, "foo"; # !!! sets mode to
f86cebdf 841 # --w----r-T
3b10bc60 842 $mode = "0644"; chmod oct($mode), "foo"; # this is better
843 $mode = 0644; chmod $mode, "foo"; # this is best
a0d0e21e 844
3b10bc60 845On systems that support fchmod(2), you may pass filehandles among the
846files. On systems that don't support fchmod(2), passing filehandles raises
847an exception. Filehandles must be passed as globs or glob references to be
848recognized; barewords are considered filenames.
c4aca7d0
GA
849
850 open(my $fh, "<", "foo");
851 my $perm = (stat $fh)[2] & 07777;
852 chmod($perm | 0600, $fh);
853
3b10bc60 854You can also import the symbolic C<S_I*> constants from the C<Fcntl>
ca6e1c26
JH
855module:
856
3b10bc60 857 use Fcntl qw( :mode );
ca6e1c26 858 chmod S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH, @executables;
3b10bc60 859 # Identical to the chmod 0755 of the example above.
ca6e1c26 860
ea9eb35a
BJ
861Portability issues: L<perlport/chmod>.
862
a0d0e21e 863=item chomp VARIABLE
d74e8afc 864X<chomp> X<INPUT_RECORD_SEPARATOR> X<$/> X<newline> X<eol>
a0d0e21e 865
313c9f5c 866=item chomp( LIST )
a0d0e21e
LW
867
868=item chomp
869
c17cdb72
NC
870=for Pod::Functions remove a trailing record separator from a string
871
2b5ab1e7
TC
872This safer version of L</chop> removes any trailing string
873that corresponds to the current value of C<$/> (also known as
28757baa 874$INPUT_RECORD_SEPARATOR in the C<English> module). It returns the total
875number of characters removed from all its arguments. It's often used to
876remove the newline from the end of an input record when you're worried
2b5ab1e7
TC
877that the final record may be missing its newline. When in paragraph
878mode (C<$/ = "">), it removes all trailing newlines from the string.
4c5a6083 879When in slurp mode (C<$/ = undef>) or fixed-length record mode (C<$/> is
34169887 880a reference to an integer or the like; see L<perlvar>) chomp() won't
b76cc8ba 881remove anything.
19799a22 882If VARIABLE is omitted, it chomps C<$_>. Example:
a0d0e21e
LW
883
884 while (<>) {
a9a5a0dc
VP
885 chomp; # avoid \n on last field
886 @array = split(/:/);
887 # ...
a0d0e21e
LW
888 }
889
4bf21a6d
RD
890If VARIABLE is a hash, it chomps the hash's values, but not its keys.
891
a0d0e21e
LW
892You can actually chomp anything that's an lvalue, including an assignment:
893
894 chomp($cwd = `pwd`);
895 chomp($answer = <STDIN>);
896
897If you chomp a list, each element is chomped, and the total number of
898characters removed is returned.
899
15e44fd8
RGS
900Note that parentheses are necessary when you're chomping anything
901that is not a simple variable. This is because C<chomp $cwd = `pwd`;>
902is interpreted as C<(chomp $cwd) = `pwd`;>, rather than as
903C<chomp( $cwd = `pwd` )> which you might expect. Similarly,
904C<chomp $a, $b> is interpreted as C<chomp($a), $b> rather than
905as C<chomp($a, $b)>.
906
a0d0e21e 907=item chop VARIABLE
d74e8afc 908X<chop>
a0d0e21e 909
313c9f5c 910=item chop( LIST )
a0d0e21e
LW
911
912=item chop
913
c17cdb72
NC
914=for Pod::Functions remove the last character from a string
915
a0d0e21e 916Chops off the last character of a string and returns the character
5b3eff12 917chopped. It is much more efficient than C<s/.$//s> because it neither
7660c0ab 918scans nor copies the string. If VARIABLE is omitted, chops C<$_>.
4bf21a6d
RD
919If VARIABLE is a hash, it chops the hash's values, but not its keys.
920
5b3eff12 921You can actually chop anything that's an lvalue, including an assignment.
a0d0e21e
LW
922
923If you chop a list, each element is chopped. Only the value of the
19799a22 924last C<chop> is returned.
a0d0e21e 925
19799a22 926Note that C<chop> returns the last character. To return all but the last
748a9306
LW
927character, use C<substr($string, 0, -1)>.
928
15e44fd8
RGS
929See also L</chomp>.
930
a0d0e21e 931=item chown LIST
d74e8afc 932X<chown> X<owner> X<user> X<group>
a0d0e21e 933
c17cdb72
NC
934=for Pod::Functions change the ownership on a list of files
935
a0d0e21e 936Changes the owner (and group) of a list of files. The first two
19799a22
GS
937elements of the list must be the I<numeric> uid and gid, in that
938order. A value of -1 in either position is interpreted by most
939systems to leave that value unchanged. Returns the number of files
940successfully changed.
a0d0e21e
LW
941
942 $cnt = chown $uid, $gid, 'foo', 'bar';
943 chown $uid, $gid, @filenames;
944
3b10bc60 945On systems that support fchown(2), you may pass filehandles among the
946files. On systems that don't support fchown(2), passing filehandles raises
947an exception. Filehandles must be passed as globs or glob references to be
948recognized; barewords are considered filenames.
c4aca7d0 949
54310121 950Here's an example that looks up nonnumeric uids in the passwd file:
a0d0e21e
LW
951
952 print "User: ";
19799a22 953 chomp($user = <STDIN>);
5a964f20 954 print "Files: ";
19799a22 955 chomp($pattern = <STDIN>);
a0d0e21e
LW
956
957 ($login,$pass,$uid,$gid) = getpwnam($user)
a9a5a0dc 958 or die "$user not in passwd file";
a0d0e21e 959
5ed4f2ec 960 @ary = glob($pattern); # expand filenames
a0d0e21e
LW
961 chown $uid, $gid, @ary;
962
54310121 963On most systems, you are not allowed to change the ownership of the
4633a7c4
LW
964file unless you're the superuser, although you should be able to change
965the group to any of your secondary groups. On insecure systems, these
966restrictions may be relaxed, but this is not a portable assumption.
19799a22
GS
967On POSIX systems, you can detect this condition this way:
968
969 use POSIX qw(sysconf _PC_CHOWN_RESTRICTED);
970 $can_chown_giveaway = not sysconf(_PC_CHOWN_RESTRICTED);
4633a7c4 971
ea9eb35a
BJ
972Portability issues: L<perlport/chmod>.
973
a0d0e21e 974=item chr NUMBER
d74e8afc 975X<chr> X<character> X<ASCII> X<Unicode>
a0d0e21e 976
54310121 977=item chr
bbce6d69 978
c17cdb72
NC
979=for Pod::Functions get character this number represents
980
a0d0e21e 981Returns the character represented by that NUMBER in the character set.
a0ed51b3 982For example, C<chr(65)> is C<"A"> in either ASCII or Unicode, and
2575c402 983chr(0x263a) is a Unicode smiley face.
aaa68c4a 984
8a064bd6 985Negative values give the Unicode replacement character (chr(0xfffd)),
80d38338 986except under the L<bytes> pragma, where the low eight bits of the value
8a064bd6
JH
987(truncated to an integer) are used.
988
974da8e5
JH
989If NUMBER is omitted, uses C<$_>.
990
b76cc8ba 991For the reverse, use L</ord>.
a0d0e21e 992
2575c402
JW
993Note that characters from 128 to 255 (inclusive) are by default
994internally not encoded as UTF-8 for backward compatibility reasons.
974da8e5 995
2575c402 996See L<perlunicode> for more about Unicode.
bbce6d69 997
a0d0e21e 998=item chroot FILENAME
d74e8afc 999X<chroot> X<root>
a0d0e21e 1000
54310121 1001=item chroot
bbce6d69 1002
c17cdb72
NC
1003=for Pod::Functions make directory new root for path lookups
1004
5a964f20 1005This function works like the system call by the same name: it makes the
4633a7c4 1006named directory the new root directory for all further pathnames that
951ba7fe 1007begin with a C</> by your process and all its children. (It doesn't
28757baa 1008change your current working directory, which is unaffected.) For security
4633a7c4 1009reasons, this call is restricted to the superuser. If FILENAME is
19799a22 1010omitted, does a C<chroot> to C<$_>.
a0d0e21e 1011
ea9eb35a
BJ
1012Portability issues: L<perlport/chroot>.
1013
a0d0e21e 1014=item close FILEHANDLE
d74e8afc 1015X<close>
a0d0e21e 1016
6a518fbc
TP
1017=item close
1018
c17cdb72
NC
1019=for Pod::Functions close file (or pipe or socket) handle
1020
3b10bc60 1021Closes the file or pipe associated with the filehandle, flushes the IO
e0f13c26 1022buffers, and closes the system file descriptor. Returns true if those
8f1da26d 1023operations succeed and if no error was reported by any PerlIO
e0f13c26
RGS
1024layer. Closes the currently selected filehandle if the argument is
1025omitted.
fb73857a 1026
1027You don't have to close FILEHANDLE if you are immediately going to do
3b10bc60 1028another C<open> on it, because C<open> closes it for you. (See
01aa884e 1029L<open|/open FILEHANDLE>.) However, an explicit C<close> on an input file resets the line
19799a22 1030counter (C<$.>), while the implicit close done by C<open> does not.
fb73857a 1031
3b10bc60 1032If the filehandle came from a piped open, C<close> returns false if one of
1033the other syscalls involved fails or if its program exits with non-zero
1034status. If the only problem was that the program exited non-zero, C<$!>
1035will be set to C<0>. Closing a pipe also waits for the process executing
1036on the pipe to exit--in case you wish to look at the output of the pipe
1037afterwards--and implicitly puts the exit status value of that command into
1038C<$?> and C<${^CHILD_ERROR_NATIVE}>.
5a964f20 1039
2e0cfa16
FC
1040If there are multiple threads running, C<close> on a filehandle from a
1041piped open returns true without waiting for the child process to terminate,
1042if the filehandle is still open in another thread.
1043
80d38338
TC
1044Closing the read end of a pipe before the process writing to it at the
1045other end is done writing results in the writer receiving a SIGPIPE. If
1046the other end can't handle that, be sure to read all the data before
1047closing the pipe.
73689b13 1048
fb73857a 1049Example:
a0d0e21e 1050
fb73857a 1051 open(OUTPUT, '|sort >foo') # pipe to sort
1052 or die "Can't start sort: $!";
5ed4f2ec 1053 #... # print stuff to output
1054 close OUTPUT # wait for sort to finish
fb73857a 1055 or warn $! ? "Error closing sort pipe: $!"
1056 : "Exit status $? from sort";
5ed4f2ec 1057 open(INPUT, 'foo') # get sort's results
fb73857a 1058 or die "Can't open 'foo' for input: $!";
a0d0e21e 1059
5a964f20 1060FILEHANDLE may be an expression whose value can be used as an indirect
8f1da26d 1061filehandle, usually the real filehandle name or an autovivified handle.
a0d0e21e
LW
1062
1063=item closedir DIRHANDLE
d74e8afc 1064X<closedir>
a0d0e21e 1065
c17cdb72
NC
1066=for Pod::Functions close directory handle
1067
19799a22 1068Closes a directory opened by C<opendir> and returns the success of that
5a964f20
TC
1069system call.
1070
a0d0e21e 1071=item connect SOCKET,NAME
d74e8afc 1072X<connect>
a0d0e21e 1073
c17cdb72
NC
1074=for Pod::Functions connect to a remote socket
1075
80d38338
TC
1076Attempts to connect to a remote socket, just like connect(2).
1077Returns true if it succeeded, false otherwise. NAME should be a
4633a7c4
LW
1078packed address of the appropriate type for the socket. See the examples in
1079L<perlipc/"Sockets: Client/Server Communication">.
a0d0e21e 1080
cb1a09d0 1081=item continue BLOCK
d74e8afc 1082X<continue>
cb1a09d0 1083
0d863452
RH
1084=item continue
1085
c17cdb72
NC
1086=for Pod::Functions optional trailing block in a while or foreach
1087
4a904372
FC
1088When followed by a BLOCK, C<continue> is actually a
1089flow control statement rather than a function. If
cf264981 1090there is a C<continue> BLOCK attached to a BLOCK (typically in a C<while> or
98293880
JH
1091C<foreach>), it is always executed just before the conditional is about to
1092be evaluated again, just like the third part of a C<for> loop in C. Thus
cb1a09d0
AD
1093it can be used to increment a loop variable, even when the loop has been
1094continued via the C<next> statement (which is similar to the C C<continue>
1095statement).
1096
98293880 1097C<last>, C<next>, or C<redo> may appear within a C<continue>
3b10bc60 1098block; C<last> and C<redo> behave as if they had been executed within
19799a22 1099the main block. So will C<next>, but since it will execute a C<continue>
1d2dff63
GS
1100block, it may be more entertaining.
1101
1102 while (EXPR) {
a9a5a0dc
VP
1103 ### redo always comes here
1104 do_something;
1d2dff63 1105 } continue {
a9a5a0dc
VP
1106 ### next always comes here
1107 do_something_else;
1108 # then back the top to re-check EXPR
1d2dff63
GS
1109 }
1110 ### last always comes here
1111
3b10bc60 1112Omitting the C<continue> section is equivalent to using an
1113empty one, logically enough, so C<next> goes directly back
1d2dff63
GS
1114to check the condition at the top of the loop.
1115
4a904372 1116When there is no BLOCK, C<continue> is a function that
8f1da26d
TC
1117falls through the current C<when> or C<default> block instead of iterating
1118a dynamically enclosing C<foreach> or exiting a lexically enclosing C<given>.
4a904372
FC
1119In Perl 5.14 and earlier, this form of C<continue> was
1120only available when the C<"switch"> feature was enabled.
48238296 1121See L<feature> and L<perlsyn/"Switch Statements"> for more
8f1da26d 1122information.
0d863452 1123
a0d0e21e 1124=item cos EXPR
d74e8afc 1125X<cos> X<cosine> X<acos> X<arccosine>
a0d0e21e 1126
d6217f1e
GS
1127=item cos
1128
c17cdb72
NC
1129=for Pod::Functions cosine function
1130
5a964f20 1131Returns the cosine of EXPR (expressed in radians). If EXPR is omitted,
34169887 1132takes the cosine of C<$_>.
a0d0e21e 1133
ca6e1c26 1134For the inverse cosine operation, you may use the C<Math::Trig::acos()>
28757baa 1135function, or use this relation:
1136
1137 sub acos { atan2( sqrt(1 - $_[0] * $_[0]), $_[0] ) }
1138
a0d0e21e 1139=item crypt PLAINTEXT,SALT
d74e8afc 1140X<crypt> X<digest> X<hash> X<salt> X<plaintext> X<password>
f723aae1 1141X<decrypt> X<cryptography> X<passwd> X<encrypt>
a0d0e21e 1142
c17cdb72
NC
1143=for Pod::Functions one-way passwd-style encryption
1144
ef2e6798
MS
1145Creates a digest string exactly like the crypt(3) function in the C
1146library (assuming that you actually have a version there that has not
bb23f8d1 1147been extirpated as a potential munition).
ef2e6798 1148
34169887 1149crypt() is a one-way hash function. The PLAINTEXT and SALT are turned
ef2e6798
MS
1150into a short string, called a digest, which is returned. The same
1151PLAINTEXT and SALT will always return the same string, but there is no
1152(known) way to get the original PLAINTEXT from the hash. Small
1153changes in the PLAINTEXT or SALT will result in large changes in the
1154digest.
1155
1156There is no decrypt function. This function isn't all that useful for
1157cryptography (for that, look for F<Crypt> modules on your nearby CPAN
1158mirror) and the name "crypt" is a bit of a misnomer. Instead it is
1159primarily used to check if two pieces of text are the same without
1160having to transmit or store the text itself. An example is checking
1161if a correct password is given. The digest of the password is stored,
cf264981 1162not the password itself. The user types in a password that is
ef2e6798 1163crypt()'d with the same salt as the stored digest. If the two digests
34169887 1164match, the password is correct.
ef2e6798
MS
1165
1166When verifying an existing digest string you should use the digest as
1167the salt (like C<crypt($plain, $digest) eq $digest>). The SALT used
cf264981 1168to create the digest is visible as part of the digest. This ensures
ef2e6798
MS
1169crypt() will hash the new string with the same salt as the digest.
1170This allows your code to work with the standard L<crypt|/crypt> and
8f1da26d
TC
1171with more exotic implementations. In other words, assume
1172nothing about the returned string itself nor about how many bytes
1173of SALT may matter.
85c16d83
JH
1174
1175Traditionally the result is a string of 13 bytes: two first bytes of
1176the salt, followed by 11 bytes from the set C<[./0-9A-Za-z]>, and only
391b733c 1177the first eight bytes of PLAINTEXT mattered. But alternative
ef2e6798 1178hashing schemes (like MD5), higher level security schemes (like C2),
e1020413 1179and implementations on non-Unix platforms may produce different
ef2e6798 1180strings.
85c16d83
JH
1181
1182When choosing a new salt create a random two character string whose
1183characters come from the set C<[./0-9A-Za-z]> (like C<join '', ('.',
d3989d75
CW
1184'/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64]>). This set of
1185characters is just a recommendation; the characters allowed in
1186the salt depend solely on your system's crypt library, and Perl can't
1187restrict what salts C<crypt()> accepts.
e71965be 1188
a0d0e21e 1189Here's an example that makes sure that whoever runs this program knows
cf264981 1190their password:
a0d0e21e
LW
1191
1192 $pwd = (getpwuid($<))[1];
a0d0e21e
LW
1193
1194 system "stty -echo";
1195 print "Password: ";
e71965be 1196 chomp($word = <STDIN>);
a0d0e21e
LW
1197 print "\n";
1198 system "stty echo";
1199
e71965be 1200 if (crypt($word, $pwd) ne $pwd) {
a9a5a0dc 1201 die "Sorry...\n";
a0d0e21e 1202 } else {
a9a5a0dc 1203 print "ok\n";
54310121 1204 }
a0d0e21e 1205
9f8f0c9d 1206Of course, typing in your own password to whoever asks you
748a9306 1207for it is unwise.
a0d0e21e 1208
ef2e6798 1209The L<crypt|/crypt> function is unsuitable for hashing large quantities
19799a22 1210of data, not least of all because you can't get the information
ef2e6798 1211back. Look at the L<Digest> module for more robust algorithms.
19799a22 1212
f2791508
JH
1213If using crypt() on a Unicode string (which I<potentially> has
1214characters with codepoints above 255), Perl tries to make sense
34169887 1215of the situation by trying to downgrade (a copy of)
f2791508
JH
1216the string back to an eight-bit byte string before calling crypt()
1217(on that copy). If that works, good. If not, crypt() dies with
1218C<Wide character in crypt>.
85c16d83 1219
ea9eb35a
BJ
1220Portability issues: L<perlport/crypt>.
1221
aa689395 1222=item dbmclose HASH
d74e8afc 1223X<dbmclose>
a0d0e21e 1224
c17cdb72
NC
1225=for Pod::Functions breaks binding on a tied dbm file
1226
19799a22 1227[This function has been largely superseded by the C<untie> function.]
a0d0e21e 1228
aa689395 1229Breaks the binding between a DBM file and a hash.
a0d0e21e 1230
ea9eb35a
BJ
1231Portability issues: L<perlport/dbmclose>.
1232
19799a22 1233=item dbmopen HASH,DBNAME,MASK
d74e8afc 1234X<dbmopen> X<dbm> X<ndbm> X<sdbm> X<gdbm>
a0d0e21e 1235
c17cdb72
NC
1236=for Pod::Functions create binding on a tied dbm file
1237
01aa884e
KW
1238[This function has been largely superseded by the
1239L<tie|/tie VARIABLE,CLASSNAME,LIST> function.]
a0d0e21e 1240
7b8d334a 1241This binds a dbm(3), ndbm(3), sdbm(3), gdbm(3), or Berkeley DB file to a
19799a22
GS
1242hash. HASH is the name of the hash. (Unlike normal C<open>, the first
1243argument is I<not> a filehandle, even though it looks like one). DBNAME
aa689395 1244is the name of the database (without the F<.dir> or F<.pag> extension if
1245any). If the database does not exist, it is created with protection
1b3a6178
FC
1246specified by MASK (as modified by the C<umask>). To prevent creation of
1247the database if it doesn't exist, you may specify a MODE
1248of 0, and the function will return a false value if it
1249can't find an existing database. If your system supports
80d38338 1250only the older DBM functions, you may make only one C<dbmopen> call in your
aa689395 1251program. In older versions of Perl, if your system had neither DBM nor
19799a22 1252ndbm, calling C<dbmopen> produced a fatal error; it now falls back to
aa689395 1253sdbm(3).
1254
1255If you don't have write access to the DBM file, you can only read hash
1256variables, not set them. If you want to test whether you can write,
3b10bc60 1257either use file tests or try setting a dummy hash entry inside an C<eval>
1258to trap the error.
a0d0e21e 1259
19799a22
GS
1260Note that functions such as C<keys> and C<values> may return huge lists
1261when used on large DBM files. You may prefer to use the C<each>
a0d0e21e
LW
1262function to iterate over large DBM files. Example:
1263
1264 # print out history file offsets
1265 dbmopen(%HIST,'/usr/lib/news/history',0666);
1266 while (($key,$val) = each %HIST) {
a9a5a0dc 1267 print $key, ' = ', unpack('L',$val), "\n";
a0d0e21e
LW
1268 }
1269 dbmclose(%HIST);
1270
cb1a09d0 1271See also L<AnyDBM_File> for a more general description of the pros and
184e9718 1272cons of the various dbm approaches, as well as L<DB_File> for a particularly
cb1a09d0 1273rich implementation.
4633a7c4 1274
2b5ab1e7
TC
1275You can control which DBM library you use by loading that library
1276before you call dbmopen():
1277
1278 use DB_File;
1279 dbmopen(%NS_Hist, "$ENV{HOME}/.netscape/history.db")
a9a5a0dc 1280 or die "Can't open netscape history file: $!";
2b5ab1e7 1281
ea9eb35a
BJ
1282Portability issues: L<perlport/dbmopen>.
1283
8f1da26d
TC
1284=item default BLOCK
1285
c17cdb72
NC
1286=for Pod::Functions !RT #108848
1287
8f1da26d
TC
1288Within a C<foreach> or a C<given>, a C<default> BLOCK acts like a C<when>
1289that's always true. Only available after Perl 5.10, and only if the
4a904372
FC
1290C<switch> feature has been requested or if the keyword is prefixed with
1291C<CORE::>. See L</when>.
8f1da26d 1292
a0d0e21e 1293=item defined EXPR
d74e8afc 1294X<defined> X<undef> X<undefined>
a0d0e21e 1295
54310121 1296=item defined
bbce6d69 1297
c17cdb72
NC
1298=for Pod::Functions test whether a value, variable, or function is defined
1299
2f9daede 1300Returns a Boolean value telling whether EXPR has a value other than
3b10bc60 1301the undefined value C<undef>. If EXPR is not present, C<$_> is
2f9daede
TP
1302checked.
1303
1304Many operations return C<undef> to indicate failure, end of file,
1305system error, uninitialized variable, and other exceptional
1306conditions. This function allows you to distinguish C<undef> from
1307other values. (A simple Boolean test will not distinguish among
7660c0ab 1308C<undef>, zero, the empty string, and C<"0">, which are all equally
2f9daede 1309false.) Note that since C<undef> is a valid scalar, its presence
19799a22 1310doesn't I<necessarily> indicate an exceptional condition: C<pop>
2f9daede
TP
1311returns C<undef> when its argument is an empty array, I<or> when the
1312element to return happens to be C<undef>.
1313
f10b0346
GS
1314You may also use C<defined(&func)> to check whether subroutine C<&func>
1315has ever been defined. The return value is unaffected by any forward
80d38338 1316declarations of C<&func>. A subroutine that is not defined
847c7ebe 1317may still be callable: its package may have an C<AUTOLOAD> method that
3b10bc60 1318makes it spring into existence the first time that it is called; see
847c7ebe 1319L<perlsub>.
f10b0346
GS
1320
1321Use of C<defined> on aggregates (hashes and arrays) is deprecated. It
34169887 1322used to report whether memory for that aggregate had ever been
f10b0346
GS
1323allocated. This behavior may disappear in future versions of Perl.
1324You should instead use a simple test for size:
1325
1326 if (@an_array) { print "has array elements\n" }
1327 if (%a_hash) { print "has hash members\n" }
2f9daede
TP
1328
1329When used on a hash element, it tells you whether the value is defined,
dc848c6f 1330not whether the key exists in the hash. Use L</exists> for the latter
2f9daede 1331purpose.
a0d0e21e
LW
1332
1333Examples:
1334
8f1da26d 1335 print if defined $switch{D};
a0d0e21e
LW
1336 print "$val\n" while defined($val = pop(@ary));
1337 die "Can't readlink $sym: $!"
a9a5a0dc 1338 unless defined($value = readlink $sym);
a0d0e21e 1339 sub foo { defined &$bar ? &$bar(@_) : die "No bar"; }
2f9daede 1340 $debugging = 0 unless defined $debugging;
a0d0e21e 1341
8f1da26d 1342Note: Many folks tend to overuse C<defined> and are then surprised to
7660c0ab 1343discover that the number C<0> and C<""> (the zero-length string) are, in fact,
2f9daede 1344defined values. For example, if you say
a5f75d66
AD
1345
1346 "ab" =~ /a(.*)b/;
1347
80d38338 1348The pattern match succeeds and C<$1> is defined, although it
cf264981 1349matched "nothing". It didn't really fail to match anything. Rather, it
2b5ab1e7 1350matched something that happened to be zero characters long. This is all
a5f75d66 1351very above-board and honest. When a function returns an undefined value,
2f9daede 1352it's an admission that it couldn't give you an honest answer. So you
3b10bc60 1353should use C<defined> only when questioning the integrity of what
7660c0ab 1354you're trying to do. At other times, a simple comparison to C<0> or C<""> is
2f9daede
TP
1355what you want.
1356
dc848c6f 1357See also L</undef>, L</exists>, L</ref>.
2f9daede 1358
a0d0e21e 1359=item delete EXPR
d74e8afc 1360X<delete>
a0d0e21e 1361
c17cdb72
NC
1362=for Pod::Functions deletes a value from a hash
1363
d0a76353
RS
1364Given an expression that specifies an element or slice of a hash, C<delete>
1365deletes the specified elements from that hash so that exists() on that element
1366no longer returns true. Setting a hash element to the undefined value does
1367not remove its key, but deleting it does; see L</exists>.
80d38338 1368
8f1da26d 1369In list context, returns the value or values deleted, or the last such
80d38338 1370element in scalar context. The return list's length always matches that of
d0a76353
RS
1371the argument list: deleting non-existent elements returns the undefined value
1372in their corresponding positions.
80d38338 1373
d0a76353
RS
1374delete() may also be used on arrays and array slices, but its behavior is less
1375straightforward. Although exists() will return false for deleted entries,
1376deleting array elements never changes indices of existing values; use shift()
1377or splice() for that. However, if all deleted elements fall at the end of an
1378array, the array's size shrinks to the position of the highest element that
1379still tests true for exists(), or to 0 if none do.
1380
8f1da26d 1381B<WARNING:> Calling delete on array values is deprecated and likely to
d0a76353 1382be removed in a future version of Perl.
80d38338
TC
1383
1384Deleting from C<%ENV> modifies the environment. Deleting from a hash tied to
1385a DBM file deletes the entry from the DBM file. Deleting from a C<tied> hash
1386or array may not necessarily return anything; it depends on the implementation
1387of the C<tied> package's DELETE method, which may do whatever it pleases.
a0d0e21e 1388
80d38338
TC
1389The C<delete local EXPR> construct localizes the deletion to the current
1390block at run time. Until the block exits, elements locally deleted
1391temporarily no longer exist. See L<perlsub/"Localized deletion of elements
1392of composite types">.
eba0920a
EM
1393
1394 %hash = (foo => 11, bar => 22, baz => 33);
1395 $scalar = delete $hash{foo}; # $scalar is 11
1396 $scalar = delete @hash{qw(foo bar)}; # $scalar is 22
1397 @array = delete @hash{qw(foo bar baz)}; # @array is (undef,undef,33)
1398
01020589 1399The following (inefficiently) deletes all the values of %HASH and @ARRAY:
a0d0e21e 1400
5f05dabc 1401 foreach $key (keys %HASH) {
a9a5a0dc 1402 delete $HASH{$key};
a0d0e21e
LW
1403 }
1404
01020589 1405 foreach $index (0 .. $#ARRAY) {
a9a5a0dc 1406 delete $ARRAY[$index];
01020589
GS
1407 }
1408
1409And so do these:
5f05dabc 1410
01020589
GS
1411 delete @HASH{keys %HASH};
1412
9740c838 1413 delete @ARRAY[0 .. $#ARRAY];
5f05dabc 1414
80d38338
TC
1415But both are slower than assigning the empty list
1416or undefining %HASH or @ARRAY, which is the customary
1417way to empty out an aggregate:
01020589 1418
5ed4f2ec 1419 %HASH = (); # completely empty %HASH
1420 undef %HASH; # forget %HASH ever existed
2b5ab1e7 1421
5ed4f2ec 1422 @ARRAY = (); # completely empty @ARRAY
1423 undef @ARRAY; # forget @ARRAY ever existed
2b5ab1e7 1424
80d38338
TC
1425The EXPR can be arbitrarily complicated provided its
1426final operation is an element or slice of an aggregate:
a0d0e21e
LW
1427
1428 delete $ref->[$x][$y]{$key};
5f05dabc 1429 delete @{$ref->[$x][$y]}{$key1, $key2, @morekeys};
a0d0e21e 1430
01020589
GS
1431 delete $ref->[$x][$y][$index];
1432 delete @{$ref->[$x][$y]}[$index1, $index2, @moreindices];
1433
a0d0e21e 1434=item die LIST
d74e8afc 1435X<die> X<throw> X<exception> X<raise> X<$@> X<abort>
a0d0e21e 1436
c17cdb72
NC
1437=for Pod::Functions raise an exception or bail out
1438
391b733c 1439C<die> raises an exception. Inside an C<eval> the error message is stuffed
4c050ad5
NC
1440into C<$@> and the C<eval> is terminated with the undefined value.
1441If the exception is outside of all enclosing C<eval>s, then the uncaught
391b733c 1442exception prints LIST to C<STDERR> and exits with a non-zero value. If you
96090e4f 1443need to exit the process with a specific exit code, see L</exit>.
a0d0e21e
LW
1444
1445Equivalent examples:
1446
1447 die "Can't cd to spool: $!\n" unless chdir '/usr/spool/news';
54310121 1448 chdir '/usr/spool/news' or die "Can't cd to spool: $!\n"
a0d0e21e 1449
ccac6780 1450If the last element of LIST does not end in a newline, the current
df37ec69
WW
1451script line number and input line number (if any) are also printed,
1452and a newline is supplied. Note that the "input line number" (also
1453known as "chunk") is subject to whatever notion of "line" happens to
1454be currently in effect, and is also available as the special variable
1455C<$.>. See L<perlvar/"$/"> and L<perlvar/"$.">.
1456
1457Hint: sometimes appending C<", stopped"> to your message will cause it
1458to make better sense when the string C<"at foo line 123"> is appended.
1459Suppose you are running script "canasta".
a0d0e21e
LW
1460
1461 die "/etc/games is no good";
1462 die "/etc/games is no good, stopped";
1463
1464produce, respectively
1465
1466 /etc/games is no good at canasta line 123.
1467 /etc/games is no good, stopped at canasta line 123.
1468
a96d0188 1469If the output is empty and C<$@> already contains a value (typically from a
7660c0ab 1470previous eval) that value is reused after appending C<"\t...propagated">.
fb73857a 1471This is useful for propagating exceptions:
1472
1473 eval { ... };
1474 die unless $@ =~ /Expected exception/;
1475
a96d0188 1476If the output is empty and C<$@> contains an object reference that has a
ad216e65
JH
1477C<PROPAGATE> method, that method will be called with additional file
1478and line number parameters. The return value replaces the value in
34169887 1479C<$@>; i.e., as if C<< $@ = eval { $@->PROPAGATE(__FILE__, __LINE__) }; >>
ad216e65
JH
1480were called.
1481
7660c0ab 1482If C<$@> is empty then the string C<"Died"> is used.
fb73857a 1483
4c050ad5
NC
1484If an uncaught exception results in interpreter exit, the exit code is
1485determined from the values of C<$!> and C<$?> with this pseudocode:
1486
1487 exit $! if $!; # errno
1488 exit $? >> 8 if $? >> 8; # child exit status
1489 exit 255; # last resort
1490
1491The intent is to squeeze as much possible information about the likely cause
391b733c
FC
1492into the limited space of the system exit
1493code. However, as C<$!> is the value
4c050ad5
NC
1494of C's C<errno>, which can be set by any system call, this means that the value
1495of the exit code used by C<die> can be non-predictable, so should not be relied
1496upon, other than to be non-zero.
1497
80d38338
TC
1498You can also call C<die> with a reference argument, and if this is trapped
1499within an C<eval>, C<$@> contains that reference. This permits more
1500elaborate exception handling using objects that maintain arbitrary state
1501about the exception. Such a scheme is sometimes preferable to matching
1502particular string values of C<$@> with regular expressions. Because C<$@>
1503is a global variable and C<eval> may be used within object implementations,
1504be careful that analyzing the error object doesn't replace the reference in
1505the global variable. It's easiest to make a local copy of the reference
1506before any manipulations. Here's an example:
52531d10 1507
80d38338 1508 use Scalar::Util "blessed";
da279afe 1509
52531d10 1510 eval { ... ; die Some::Module::Exception->new( FOO => "bar" ) };
746d7dd7
GL
1511 if (my $ev_err = $@) {
1512 if (blessed($ev_err) && $ev_err->isa("Some::Module::Exception")) {
52531d10
GS
1513 # handle Some::Module::Exception
1514 }
1515 else {
1516 # handle all other possible exceptions
1517 }
1518 }
1519
3b10bc60 1520Because Perl stringifies uncaught exception messages before display,
80d38338 1521you'll probably want to overload stringification operations on
52531d10
GS
1522exception objects. See L<overload> for details about that.
1523
19799a22
GS
1524You can arrange for a callback to be run just before the C<die>
1525does its deed, by setting the C<$SIG{__DIE__}> hook. The associated
3b10bc60 1526handler is called with the error text and can change the error
19799a22 1527message, if it sees fit, by calling C<die> again. See
96090e4f 1528L<perlvar/%SIG> for details on setting C<%SIG> entries, and
cf264981 1529L<"eval BLOCK"> for some examples. Although this feature was
19799a22 1530to be run only right before your program was to exit, this is not
3b10bc60 1531currently so: the C<$SIG{__DIE__}> hook is currently called
19799a22
GS
1532even inside eval()ed blocks/strings! If one wants the hook to do
1533nothing in such situations, put
fb73857a 1534
5ed4f2ec 1535 die @_ if $^S;
fb73857a 1536
19799a22
GS
1537as the first line of the handler (see L<perlvar/$^S>). Because
1538this promotes strange action at a distance, this counterintuitive
b76cc8ba 1539behavior may be fixed in a future release.
774d564b 1540
4c050ad5
NC
1541See also exit(), warn(), and the Carp module.
1542
a0d0e21e 1543=item do BLOCK
d74e8afc 1544X<do> X<block>
a0d0e21e 1545
c17cdb72
NC
1546=for Pod::Functions turn a BLOCK into a TERM
1547
a0d0e21e 1548Not really a function. Returns the value of the last command in the
6b275a1f
RGS
1549sequence of commands indicated by BLOCK. When modified by the C<while> or
1550C<until> loop modifier, executes the BLOCK once before testing the loop
391b733c 1551condition. (On other statements the loop modifiers test the conditional
6b275a1f 1552first.)
a0d0e21e 1553
4968c1e4 1554C<do BLOCK> does I<not> count as a loop, so the loop control statements
2b5ab1e7
TC
1555C<next>, C<last>, or C<redo> cannot be used to leave or restart the block.
1556See L<perlsyn> for alternative strategies.
4968c1e4 1557
a0d0e21e 1558=item do SUBROUTINE(LIST)
d74e8afc 1559X<do>
a0d0e21e 1560
51124b83
FC
1561This form of subroutine call is deprecated. SUBROUTINE can be a bareword,
1562a scalar variable or a subroutine beginning with C<&>.
a0d0e21e
LW
1563
1564=item do EXPR
d74e8afc 1565X<do>
a0d0e21e
LW
1566
1567Uses the value of EXPR as a filename and executes the contents of the
ea63ef19 1568file as a Perl script.
a0d0e21e
LW
1569
1570 do 'stat.pl';
1571
1572is just like
1573
986b19de 1574 eval `cat stat.pl`;
a0d0e21e 1575
2b5ab1e7 1576except that it's more efficient and concise, keeps track of the current
96090e4f
LB
1577filename for error messages, searches the C<@INC> directories, and updates
1578C<%INC> if the file is found. See L<perlvar/@INC> and L<perlvar/%INC> for
1579these variables. It also differs in that code evaluated with C<do FILENAME>
2b5ab1e7
TC
1580cannot see lexicals in the enclosing scope; C<eval STRING> does. It's the
1581same, however, in that it does reparse the file every time you call it,
1582so you probably don't want to do this inside a loop.
a0d0e21e 1583
8f1da26d 1584If C<do> can read the file but cannot compile it, it returns C<undef> and sets
9dc513c5
DG
1585an error message in C<$@>. If C<do> cannot read the file, it returns undef
1586and sets C<$!> to the error. Always check C<$@> first, as compilation
1587could fail in a way that also sets C<$!>. If the file is successfully
1588compiled, C<do> returns the value of the last expression evaluated.
8e30cc93 1589
80d38338 1590Inclusion of library modules is better done with the
19799a22 1591C<use> and C<require> operators, which also do automatic error checking
4633a7c4 1592and raise an exception if there's a problem.
a0d0e21e 1593
5a964f20
TC
1594You might like to use C<do> to read in a program configuration
1595file. Manual error checking can be done this way:
1596
b76cc8ba 1597 # read in config files: system first, then user
f86cebdf 1598 for $file ("/share/prog/defaults.rc",
b76cc8ba 1599 "$ENV{HOME}/.someprogrc")
a9a5a0dc
VP
1600 {
1601 unless ($return = do $file) {
1602 warn "couldn't parse $file: $@" if $@;
1603 warn "couldn't do $file: $!" unless defined $return;
1604 warn "couldn't run $file" unless $return;
1605 }
5a964f20
TC
1606 }
1607
a0d0e21e 1608=item dump LABEL
d74e8afc 1609X<dump> X<core> X<undump>
a0d0e21e 1610
1614b0e3
JD
1611=item dump
1612
c17cdb72
NC
1613=for Pod::Functions create an immediate core dump
1614
19799a22
GS
1615This function causes an immediate core dump. See also the B<-u>
1616command-line switch in L<perlrun>, which does the same thing.
1617Primarily this is so that you can use the B<undump> program (not
1618supplied) to turn your core dump into an executable binary after
1619having initialized all your variables at the beginning of the
1620program. When the new binary is executed it will begin by executing
1621a C<goto LABEL> (with all the restrictions that C<goto> suffers).
1622Think of it as a goto with an intervening core dump and reincarnation.
1623If C<LABEL> is omitted, restarts the program from the top.
1624
1625B<WARNING>: Any files opened at the time of the dump will I<not>
1626be open any more when the program is reincarnated, with possible
80d38338 1627resulting confusion by Perl.
19799a22 1628
59f521f4 1629This function is now largely obsolete, mostly because it's very hard to
391b733c 1630convert a core file into an executable. That's why you should now invoke
59f521f4 1631it as C<CORE::dump()>, if you don't want to be warned against a possible
ac206dc8 1632typo.
19799a22 1633
ea9eb35a
BJ
1634Portability issues: L<perlport/dump>.
1635
532eee96 1636=item each HASH
d74e8afc 1637X<each> X<hash, iterator>
aa689395 1638
532eee96 1639=item each ARRAY
aeedbbed
NC
1640X<array, iterator>
1641
f5a93a43
TC
1642=item each EXPR
1643
c17cdb72
NC
1644=for Pod::Functions retrieve the next key/value pair from a hash
1645
bade7fbc
TC
1646When called on a hash in list context, returns a 2-element list
1647consisting of the key and value for the next element of a hash. In Perl
16485.12 and later only, it will also return the index and value for the next
1649element of an array so that you can iterate over it; older Perls consider
1650this a syntax error. When called in scalar context, returns only the key
1651(not the value) in a hash, or the index in an array.
2f9daede 1652
aeedbbed 1653Hash entries are returned in an apparently random order. The actual random
3b10bc60 1654order is subject to change in future versions of Perl, but it is
504f80c1 1655guaranteed to be in the same order as either the C<keys> or C<values>
4546b9e6 1656function would produce on the same (unmodified) hash. Since Perl
22883ac5 16575.8.2 the ordering can be different even between different runs of Perl
4546b9e6 1658for security reasons (see L<perlsec/"Algorithmic Complexity Attacks">).
ab192400 1659
80d38338
TC
1660After C<each> has returned all entries from the hash or array, the next
1661call to C<each> returns the empty list in list context and C<undef> in
bade7fbc
TC
1662scalar context; the next call following I<that> one restarts iteration.
1663Each hash or array has its own internal iterator, accessed by C<each>,
1664C<keys>, and C<values>. The iterator is implicitly reset when C<each> has
1665reached the end as just described; it can be explicitly reset by calling
1666C<keys> or C<values> on the hash or array. If you add or delete a hash's
1667elements while iterating over it, entries may be skipped or duplicated--so
1668don't do that. Exception: In the current implementation, it is always safe
1669to delete the item most recently returned by C<each()>, so the following
1670code works properly:
74fc8b5f
MJD
1671
1672 while (($key, $value) = each %hash) {
1673 print $key, "\n";
1674 delete $hash{$key}; # This is safe
1675 }
aa689395 1676
80d38338 1677This prints out your environment like the printenv(1) program,
3b10bc60 1678but in a different order:
a0d0e21e
LW
1679
1680 while (($key,$value) = each %ENV) {
a9a5a0dc 1681 print "$key=$value\n";
a0d0e21e
LW
1682 }
1683
f5a93a43
TC
1684Starting with Perl 5.14, C<each> can take a scalar EXPR, which must hold
1685reference to an unblessed hash or array. The argument will be dereferenced
1686automatically. This aspect of C<each> is considered highly experimental.
1687The exact behaviour may change in a future version of Perl.
cba5a3b0
DG
1688
1689 while (($key,$value) = each $hashref) { ... }
1690
bade7fbc
TC
1691To avoid confusing would-be users of your code who are running earlier
1692versions of Perl with mysterious syntax errors, put this sort of thing at
1693the top of your file to signal that your code will work I<only> on Perls of
1694a recent vintage:
1695
1696 use 5.012; # so keys/values/each work on arrays
1697 use 5.014; # so keys/values/each work on scalars (experimental)
1698
8f1da26d 1699See also C<keys>, C<values>, and C<sort>.
a0d0e21e
LW
1700
1701=item eof FILEHANDLE
d74e8afc
ITB
1702X<eof>
1703X<end of file>
1704X<end-of-file>
a0d0e21e 1705
4633a7c4
LW
1706=item eof ()
1707
a0d0e21e
LW
1708=item eof
1709
c17cdb72
NC
1710=for Pod::Functions test a filehandle for its end
1711
8f1da26d 1712Returns 1 if the next read on FILEHANDLE will return end of file I<or> if
a0d0e21e 1713FILEHANDLE is not open. FILEHANDLE may be an expression whose value
5a964f20 1714gives the real filehandle. (Note that this function actually
80d38338 1715reads a character and then C<ungetc>s it, so isn't useful in an
748a9306 1716interactive context.) Do not read from a terminal file (or call
19799a22 1717C<eof(FILEHANDLE)> on it) after end-of-file is reached. File types such
748a9306
LW
1718as terminals may lose the end-of-file condition if you do.
1719
820475bd 1720An C<eof> without an argument uses the last file read. Using C<eof()>
80d38338 1721with empty parentheses is different. It refers to the pseudo file
820475bd 1722formed from the files listed on the command line and accessed via the
61eff3bc
JH
1723C<< <> >> operator. Since C<< <> >> isn't explicitly opened,
1724as a normal filehandle is, an C<eof()> before C<< <> >> has been
820475bd 1725used will cause C<@ARGV> to be examined to determine if input is
67408cae 1726available. Similarly, an C<eof()> after C<< <> >> has returned
efdd0218
RB
1727end-of-file will assume you are processing another C<@ARGV> list,
1728and if you haven't set C<@ARGV>, will read input from C<STDIN>;
1729see L<perlop/"I/O Operators">.
820475bd 1730
61eff3bc 1731In a C<< while (<>) >> loop, C<eof> or C<eof(ARGV)> can be used to
8f1da26d
TC
1732detect the end of each file, whereas C<eof()> will detect the end
1733of the very last file only. Examples:
a0d0e21e 1734
748a9306
LW
1735 # reset line numbering on each input file
1736 while (<>) {
a9a5a0dc
VP
1737 next if /^\s*#/; # skip comments
1738 print "$.\t$_";
5a964f20 1739 } continue {
a9a5a0dc 1740 close ARGV if eof; # Not eof()!
748a9306
LW
1741 }
1742
a0d0e21e
LW
1743 # insert dashes just before last line of last file
1744 while (<>) {
a9a5a0dc
VP
1745 if (eof()) { # check for end of last file
1746 print "--------------\n";
1747 }
1748 print;
4d0444a3 1749 last if eof(); # needed if we're reading from a terminal
a0d0e21e
LW
1750 }
1751
a0d0e21e 1752Practical hint: you almost never need to use C<eof> in Perl, because the
8f1da26d
TC
1753input operators typically return C<undef> when they run out of data or
1754encounter an error.
a0d0e21e
LW
1755
1756=item eval EXPR
d74e8afc 1757X<eval> X<try> X<catch> X<evaluate> X<parse> X<execute>
f723aae1 1758X<error, handling> X<exception, handling>
a0d0e21e
LW
1759
1760=item eval BLOCK
1761
ce2984c3
PF
1762=item eval
1763
c17cdb72
NC
1764=for Pod::Functions catch exceptions or compile and run code
1765
c7cc6f1c
GS
1766In the first form, the return value of EXPR is parsed and executed as if it
1767were a little Perl program. The value of the expression (which is itself
8f1da26d 1768determined within scalar context) is first parsed, and if there were no
2341804c 1769errors, executed as a block within the lexical context of the current Perl
df4833a8 1770program. This means, that in particular, any outer lexical variables are
2341804c
DM
1771visible to it, and any package variable settings or subroutine and format
1772definitions remain afterwards.
1773
1774Note that the value is parsed every time the C<eval> executes.
be3174d2
GS
1775If EXPR is omitted, evaluates C<$_>. This form is typically used to
1776delay parsing and subsequent execution of the text of EXPR until run time.
c7cc6f1c 1777
7289c5e6
FC
1778If the C<unicode_eval> feature is enabled (which is the default under a
1779C<use 5.16> or higher declaration), EXPR or C<$_> is treated as a string of
1780characters, so C<use utf8> declarations have no effect, and source filters
1781are forbidden. In the absence of the C<unicode_eval> feature, the string
1782will sometimes be treated as characters and sometimes as bytes, depending
1783on the internal encoding, and source filters activated within the C<eval>
1784exhibit the erratic, but historical, behaviour of affecting some outer file
1785scope that is still compiling. See also the L</evalbytes> keyword, which
1786always treats its input as a byte stream and works properly with source
1787filters, and the L<feature> pragma.
1788
c7cc6f1c 1789In the second form, the code within the BLOCK is parsed only once--at the
cf264981 1790same time the code surrounding the C<eval> itself was parsed--and executed
c7cc6f1c
GS
1791within the context of the current Perl program. This form is typically
1792used to trap exceptions more efficiently than the first (see below), while
1793also providing the benefit of checking the code within BLOCK at compile
1794time.
1795
1796The final semicolon, if any, may be omitted from the value of EXPR or within
1797the BLOCK.
1798
1799In both forms, the value returned is the value of the last expression
5a964f20 1800evaluated inside the mini-program; a return statement may be also used, just
c7cc6f1c 1801as with subroutines. The expression providing the return value is evaluated
cf264981
SP
1802in void, scalar, or list context, depending on the context of the C<eval>
1803itself. See L</wantarray> for more on how the evaluation context can be
1804determined.
a0d0e21e 1805
19799a22 1806If there is a syntax error or runtime error, or a C<die> statement is
8f1da26d 1807executed, C<eval> returns C<undef> in scalar context
774b80e8
FC
1808or an empty list in list context, and C<$@> is set to the error
1809message. (Prior to 5.16, a bug caused C<undef> to be returned
1810in list context for syntax errors, but not for runtime errors.)
1811If there was no error, C<$@> is set to the empty string. A
9cc672d4
FC
1812control flow operator like C<last> or C<goto> can bypass the setting of
1813C<$@>. Beware that using C<eval> neither silences Perl from printing
c7cc6f1c 1814warnings to STDERR, nor does it stuff the text of warning messages into C<$@>.
d9984052
A
1815To do either of those, you have to use the C<$SIG{__WARN__}> facility, or
1816turn off warnings inside the BLOCK or EXPR using S<C<no warnings 'all'>>.
1817See L</warn>, L<perlvar>, L<warnings> and L<perllexwarn>.
a0d0e21e 1818
19799a22
GS
1819Note that, because C<eval> traps otherwise-fatal errors, it is useful for
1820determining whether a particular feature (such as C<socket> or C<symlink>)
82bcec1b 1821is implemented. It is also Perl's exception-trapping mechanism, where
a0d0e21e
LW
1822the die operator is used to raise exceptions.
1823
5f1da31c
NT
1824If you want to trap errors when loading an XS module, some problems with
1825the binary interface (such as Perl version skew) may be fatal even with
df4833a8 1826C<eval> unless C<$ENV{PERL_DL_NONLAZY}> is set. See L<perlrun>.
5f1da31c 1827
a0d0e21e
LW
1828If the code to be executed doesn't vary, you may use the eval-BLOCK
1829form to trap run-time errors without incurring the penalty of
1830recompiling each time. The error, if any, is still returned in C<$@>.
1831Examples:
1832
54310121 1833 # make divide-by-zero nonfatal
a0d0e21e
LW
1834 eval { $answer = $a / $b; }; warn $@ if $@;
1835
1836 # same thing, but less efficient
1837 eval '$answer = $a / $b'; warn $@ if $@;
1838
1839 # a compile-time error
5ed4f2ec 1840 eval { $answer = }; # WRONG
a0d0e21e
LW
1841
1842 # a run-time error
5ed4f2ec 1843 eval '$answer ='; # sets $@
a0d0e21e 1844
cf264981
SP
1845Using the C<eval{}> form as an exception trap in libraries does have some
1846issues. Due to the current arguably broken state of C<__DIE__> hooks, you
1847may wish not to trigger any C<__DIE__> hooks that user code may have installed.
2b5ab1e7 1848You can use the C<local $SIG{__DIE__}> construct for this purpose,
80d38338 1849as this example shows:
774d564b 1850
80d38338 1851 # a private exception trap for divide-by-zero
f86cebdf
GS
1852 eval { local $SIG{'__DIE__'}; $answer = $a / $b; };
1853 warn $@ if $@;
774d564b 1854
1855This is especially significant, given that C<__DIE__> hooks can call
19799a22 1856C<die> again, which has the effect of changing their error messages:
774d564b 1857
1858 # __DIE__ hooks may modify error messages
1859 {
f86cebdf
GS
1860 local $SIG{'__DIE__'} =
1861 sub { (my $x = $_[0]) =~ s/foo/bar/g; die $x };
c7cc6f1c
GS
1862 eval { die "foo lives here" };
1863 print $@ if $@; # prints "bar lives here"
774d564b 1864 }
1865
19799a22 1866Because this promotes action at a distance, this counterintuitive behavior
2b5ab1e7
TC
1867may be fixed in a future release.
1868
19799a22 1869With an C<eval>, you should be especially careful to remember what's
a0d0e21e
LW
1870being looked at when:
1871
5ed4f2ec 1872 eval $x; # CASE 1
1873 eval "$x"; # CASE 2
a0d0e21e 1874
5ed4f2ec 1875 eval '$x'; # CASE 3
1876 eval { $x }; # CASE 4
a0d0e21e 1877
5ed4f2ec 1878 eval "\$$x++"; # CASE 5
1879 $$x++; # CASE 6
a0d0e21e 1880
2f9daede 1881Cases 1 and 2 above behave identically: they run the code contained in
19799a22 1882the variable $x. (Although case 2 has misleading double quotes making
2f9daede 1883the reader wonder what else might be happening (nothing is).) Cases 3
7660c0ab 1884and 4 likewise behave in the same way: they run the code C<'$x'>, which
19799a22 1885does nothing but return the value of $x. (Case 4 is preferred for
2f9daede
TP
1886purely visual reasons, but it also has the advantage of compiling at
1887compile-time instead of at run-time.) Case 5 is a place where
19799a22 1888normally you I<would> like to use double quotes, except that in this
2f9daede
TP
1889particular situation, you can just use symbolic references instead, as
1890in case 6.
a0d0e21e 1891
b6538e4f 1892Before Perl 5.14, the assignment to C<$@> occurred before restoration
bade7fbc 1893of localized variables, which means that for your code to run on older
b208c909 1894versions, a temporary is required if you want to mask some but not all
8a5a710d
DN
1895errors:
1896
1897 # alter $@ on nefarious repugnancy only
1898 {
1899 my $e;
1900 {
1901 local $@; # protect existing $@
1902 eval { test_repugnancy() };
b208c909 1903 # $@ =~ /nefarious/ and die $@; # Perl 5.14 and higher only
8a5a710d
DN
1904 $@ =~ /nefarious/ and $e = $@;
1905 }
1906 die $e if defined $e
1907 }
1908
4968c1e4 1909C<eval BLOCK> does I<not> count as a loop, so the loop control statements
2b5ab1e7 1910C<next>, C<last>, or C<redo> cannot be used to leave or restart the block.
4968c1e4 1911
3b10bc60 1912An C<eval ''> executed within the C<DB> package doesn't see the usual
1913surrounding lexical scope, but rather the scope of the first non-DB piece
df4833a8 1914of code that called it. You don't normally need to worry about this unless
3b10bc60 1915you are writing a Perl debugger.
d819b83a 1916
7289c5e6
FC
1917=item evalbytes EXPR
1918X<evalbytes>
1919
1920=item evalbytes
1921
d9b04284 1922=for Pod::Functions +evalbytes similar to string eval, but intend to parse a bytestream
c17cdb72 1923
7289c5e6
FC
1924This function is like L</eval> with a string argument, except it always
1925parses its argument, or C<$_> if EXPR is omitted, as a string of bytes. A
1926string containing characters whose ordinal value exceeds 255 results in an
1927error. Source filters activated within the evaluated code apply to the
1928code itself.
1929
1930This function is only available under the C<evalbytes> feature, a
1931C<use v5.16> (or higher) declaration, or with a C<CORE::> prefix. See
1932L<feature> for more information.
1933
a0d0e21e 1934=item exec LIST
d74e8afc 1935X<exec> X<execute>
a0d0e21e 1936
8bf3b016
GS
1937=item exec PROGRAM LIST
1938
c17cdb72
NC
1939=for Pod::Functions abandon this program to run another
1940
3b10bc60 1941The C<exec> function executes a system command I<and never returns>;
19799a22
GS
1942use C<system> instead of C<exec> if you want it to return. It fails and
1943returns false only if the command does not exist I<and> it is executed
fb73857a 1944directly instead of via your system's command shell (see below).
a0d0e21e 1945
19799a22 1946Since it's a common mistake to use C<exec> instead of C<system>, Perl
4642e50d
EB
1947warns you if C<exec> is called in void context and if there is a following
1948statement that isn't C<die>, C<warn>, or C<exit> (if C<-w> is set--but
1949you always do that, right?). If you I<really> want to follow an C<exec>
1950with some other statement, you can use one of these styles to avoid the warning:
55d729e4 1951
5a964f20
TC
1952 exec ('foo') or print STDERR "couldn't exec foo: $!";
1953 { exec ('foo') }; print STDERR "couldn't exec foo: $!";
55d729e4 1954
5a964f20 1955If there is more than one argument in LIST, or if LIST is an array
f86cebdf 1956with more than one value, calls execvp(3) with the arguments in LIST.
5a964f20
TC
1957If there is only one scalar argument or an array with one element in it,
1958the argument is checked for shell metacharacters, and if there are any,
1959the entire argument is passed to the system's command shell for parsing
1960(this is C</bin/sh -c> on Unix platforms, but varies on other platforms).
1961If there are no shell metacharacters in the argument, it is split into
b76cc8ba 1962words and passed directly to C<execvp>, which is more efficient.
19799a22 1963Examples:
a0d0e21e 1964
19799a22
GS
1965 exec '/bin/echo', 'Your arguments are: ', @ARGV;
1966 exec "sort $outfile | uniq";
a0d0e21e
LW
1967
1968If you don't really want to execute the first argument, but want to lie
1969to the program you are executing about its own name, you can specify
1970the program you actually want to run as an "indirect object" (without a
1971comma) in front of the LIST. (This always forces interpretation of the
54310121 1972LIST as a multivalued list, even if there is only a single scalar in
a0d0e21e
LW
1973the list.) Example:
1974
1975 $shell = '/bin/csh';
5ed4f2ec 1976 exec $shell '-sh'; # pretend it's a login shell
a0d0e21e
LW
1977
1978or, more directly,
1979
5ed4f2ec 1980 exec {'/bin/csh'} '-sh'; # pretend it's a login shell
a0d0e21e 1981
3b10bc60 1982When the arguments get executed via the system shell, results are
1983subject to its quirks and capabilities. See L<perlop/"`STRING`">
bb32b41a
GS
1984for details.
1985
19799a22
GS
1986Using an indirect object with C<exec> or C<system> is also more
1987secure. This usage (which also works fine with system()) forces
1988interpretation of the arguments as a multivalued list, even if the
1989list had just one argument. That way you're safe from the shell
1990expanding wildcards or splitting up words with whitespace in them.
5a964f20
TC
1991
1992 @args = ( "echo surprise" );
1993
2b5ab1e7 1994 exec @args; # subject to shell escapes
f86cebdf 1995 # if @args == 1
2b5ab1e7 1996 exec { $args[0] } @args; # safe even with one-arg list
5a964f20
TC
1997
1998The first version, the one without the indirect object, ran the I<echo>
80d38338
TC
1999program, passing it C<"surprise"> an argument. The second version didn't;
2000it tried to run a program named I<"echo surprise">, didn't find it, and set
2001C<$?> to a non-zero value indicating failure.
5a964f20 2002
80d38338 2003Beginning with v5.6.0, Perl attempts to flush all files opened for
0f897271
GS
2004output before the exec, but this may not be supported on some platforms
2005(see L<perlport>). To be safe, you may need to set C<$|> ($AUTOFLUSH
2006in English) or call the C<autoflush()> method of C<IO::Handle> on any
80d38338 2007open handles to avoid lost output.
0f897271 2008
80d38338
TC
2009Note that C<exec> will not call your C<END> blocks, nor will it invoke
2010C<DESTROY> methods on your objects.
7660c0ab 2011
ea9eb35a
BJ
2012Portability issues: L<perlport/exec>.
2013
a0d0e21e 2014=item exists EXPR
d74e8afc 2015X<exists> X<autovivification>
a0d0e21e 2016
c17cdb72
NC
2017=for Pod::Functions test whether a hash key is present
2018
d0a76353
RS
2019Given an expression that specifies an element of a hash, returns true if the
2020specified element in the hash has ever been initialized, even if the
2021corresponding value is undefined.
a0d0e21e 2022
5ed4f2ec 2023 print "Exists\n" if exists $hash{$key};
2024 print "Defined\n" if defined $hash{$key};
01020589
GS
2025 print "True\n" if $hash{$key};
2026
d0a76353 2027exists may also be called on array elements, but its behavior is much less
8f1da26d 2028obvious and is strongly tied to the use of L</delete> on arrays. B<Be aware>
d0a76353
RS
2029that calling exists on array values is deprecated and likely to be removed in
2030a future version of Perl.
2031
5ed4f2ec 2032 print "Exists\n" if exists $array[$index];
2033 print "Defined\n" if defined $array[$index];
01020589 2034 print "True\n" if $array[$index];
a0d0e21e 2035
8f1da26d 2036A hash or array element can be true only if it's defined and defined only if
a0d0e21e
LW
2037it exists, but the reverse doesn't necessarily hold true.
2038
afebc493
GS
2039Given an expression that specifies the name of a subroutine,
2040returns true if the specified subroutine has ever been declared, even
2041if it is undefined. Mentioning a subroutine name for exists or defined
80d38338 2042does not count as declaring it. Note that a subroutine that does not
847c7ebe
DD
2043exist may still be callable: its package may have an C<AUTOLOAD>
2044method that makes it spring into existence the first time that it is
3b10bc60 2045called; see L<perlsub>.
afebc493 2046
5ed4f2ec 2047 print "Exists\n" if exists &subroutine;
2048 print "Defined\n" if defined &subroutine;
afebc493 2049
a0d0e21e 2050Note that the EXPR can be arbitrarily complicated as long as the final
afebc493 2051operation is a hash or array key lookup or subroutine name:
a0d0e21e 2052
5ed4f2ec 2053 if (exists $ref->{A}->{B}->{$key}) { }
2054 if (exists $hash{A}{B}{$key}) { }
2b5ab1e7 2055
5ed4f2ec 2056 if (exists $ref->{A}->{B}->[$ix]) { }
2057 if (exists $hash{A}{B}[$ix]) { }
01020589 2058
afebc493
GS
2059 if (exists &{$ref->{A}{B}{$key}}) { }
2060
9590a7cd 2061Although the most deeply nested array or hash element will not spring into
3b10bc60 2062existence just because its existence was tested, any intervening ones will.
61eff3bc 2063Thus C<< $ref->{"A"} >> and C<< $ref->{"A"}->{"B"} >> will spring
01020589 2064into existence due to the existence test for the $key element above.
3b10bc60 2065This happens anywhere the arrow operator is used, including even here:
5a964f20 2066
2b5ab1e7 2067 undef $ref;
5ed4f2ec 2068 if (exists $ref->{"Some key"}) { }
2069 print $ref; # prints HASH(0x80d3d5c)
2b5ab1e7
TC
2070
2071This surprising autovivification in what does not at first--or even
2072second--glance appear to be an lvalue context may be fixed in a future
5a964f20 2073release.
a0d0e21e 2074
afebc493
GS
2075Use of a subroutine call, rather than a subroutine name, as an argument
2076to exists() is an error.
2077
5ed4f2ec 2078 exists &sub; # OK
2079 exists &sub(); # Error
afebc493 2080
a0d0e21e 2081=item exit EXPR
d74e8afc 2082X<exit> X<terminate> X<abort>
a0d0e21e 2083
ce2984c3
PF
2084=item exit
2085
c17cdb72
NC
2086=for Pod::Functions terminate this program
2087
2b5ab1e7 2088Evaluates EXPR and exits immediately with that value. Example:
a0d0e21e
LW
2089
2090 $ans = <STDIN>;
2091 exit 0 if $ans =~ /^[Xx]/;
2092
19799a22 2093See also C<die>. If EXPR is omitted, exits with C<0> status. The only
2b5ab1e7
TC
2094universally recognized values for EXPR are C<0> for success and C<1>
2095for error; other values are subject to interpretation depending on the
2096environment in which the Perl program is running. For example, exiting
209769 (EX_UNAVAILABLE) from a I<sendmail> incoming-mail filter will cause
2098the mailer to return the item undelivered, but that's not true everywhere.
a0d0e21e 2099
19799a22
GS
2100Don't use C<exit> to abort a subroutine if there's any chance that
2101someone might want to trap whatever error happened. Use C<die> instead,
2102which can be trapped by an C<eval>.
28757baa 2103
19799a22 2104The exit() function does not always exit immediately. It calls any
2b5ab1e7 2105defined C<END> routines first, but these C<END> routines may not
19799a22 2106themselves abort the exit. Likewise any object destructors that need to
60275626 2107be called are called before the real exit. C<END> routines and destructors
391b733c 2108can change the exit status by modifying C<$?>. If this is a problem, you
2b5ab1e7 2109can call C<POSIX:_exit($status)> to avoid END and destructor processing.
87275199 2110See L<perlmod> for details.
5a964f20 2111
ea9eb35a
BJ
2112Portability issues: L<perlport/exit>.
2113
a0d0e21e 2114=item exp EXPR
d74e8afc 2115X<exp> X<exponential> X<antilog> X<antilogarithm> X<e>
a0d0e21e 2116
54310121 2117=item exp
bbce6d69 2118
c17cdb72
NC
2119=for Pod::Functions raise I<e> to a power
2120
b76cc8ba 2121Returns I<e> (the natural logarithm base) to the power of EXPR.
a0d0e21e
LW
2122If EXPR is omitted, gives C<exp($_)>.
2123
628253b8
BF
2124=item fc EXPR
2125X<fc> X<foldcase> X<casefold> X<fold-case> X<case-fold>
2126
2127=item fc
2128
d9b04284 2129=for Pod::Functions +fc return casefolded version of a string
c17cdb72 2130
628253b8
BF
2131Returns the casefolded version of EXPR. This is the internal function
2132implementing the C<\F> escape in double-quoted strings.
2133
2134Casefolding is the process of mapping strings to a form where case
2135differences are erased; comparing two strings in their casefolded
2136form is effectively a way of asking if two strings are equal,
2137regardless of case.
2138
2139Roughly, if you ever found yourself writing this
2140
2141 lc($this) eq lc($that) # Wrong!
2142 # or
2143 uc($this) eq uc($that) # Also wrong!
2144 # or
2145 $this =~ /\Q$that/i # Right!
2146
2147Now you can write
2148
2149 fc($this) eq fc($that)
2150
2151And get the correct results.
2152
2153Perl only implements the full form of casefolding.
2154For further information on casefolding, refer to
2155the Unicode Standard, specifically sections 3.13 C<Default Case Operations>,
21564.2 C<Case-Normative>, and 5.18 C<Case Mappings>,
2157available at L<http://www.unicode.org/versions/latest/>, as well as the
2158Case Charts available at L<http://www.unicode.org/charts/case/>.
2159
2160If EXPR is omitted, uses C<$_>.
2161
2162This function behaves the same way under various pragma, such as in a locale,
2163as L</lc> does.
2164
2165While the Unicode Standard defines two additional forms of casefolding,
2166one for Turkic languages and one that never maps one character into multiple
2167characters, these are not provided by the Perl core; However, the CPAN module
2168C<Unicode::Casing> may be used to provide an implementation.
2169
2170This keyword is available only when the C<"fc"> feature is enabled,
2171or when prefixed with C<CORE::>; See L<feature>. Alternately,
2172include a C<use v5.16> or later to the current scope.
2173
a0d0e21e 2174=item fcntl FILEHANDLE,FUNCTION,SCALAR
d74e8afc 2175X<fcntl>
a0d0e21e 2176
c17cdb72
NC
2177=for Pod::Functions file control system call
2178
f86cebdf 2179Implements the fcntl(2) function. You'll probably have to say
a0d0e21e
LW
2180
2181 use Fcntl;
2182
0ade1984 2183first to get the correct constant definitions. Argument processing and
3b10bc60 2184value returned work just like C<ioctl> below.
a0d0e21e
LW
2185For example:
2186
2187 use Fcntl;
5a964f20 2188 fcntl($filehandle, F_GETFL, $packed_return_buffer)
a9a5a0dc 2189 or die "can't fcntl F_GETFL: $!";
5a964f20 2190
554ad1fc 2191You don't have to check for C<defined> on the return from C<fcntl>.
951ba7fe
GS
2192Like C<ioctl>, it maps a C<0> return from the system call into
2193C<"0 but true"> in Perl. This string is true in boolean context and C<0>
2b5ab1e7
TC
2194in numeric context. It is also exempt from the normal B<-w> warnings
2195on improper numeric conversions.
5a964f20 2196
3b10bc60 2197Note that C<fcntl> raises an exception if used on a machine that
2b5ab1e7
TC
2198doesn't implement fcntl(2). See the Fcntl module or your fcntl(2)
2199manpage to learn what functions are available on your system.
a0d0e21e 2200
be2f7487
TH
2201Here's an example of setting a filehandle named C<REMOTE> to be
2202non-blocking at the system level. You'll have to negotiate C<$|>
2203on your own, though.
2204
2205 use Fcntl qw(F_GETFL F_SETFL O_NONBLOCK);
2206
2207 $flags = fcntl(REMOTE, F_GETFL, 0)
2208 or die "Can't get flags for the socket: $!\n";
2209
2210 $flags = fcntl(REMOTE, F_SETFL, $flags | O_NONBLOCK)
2211 or die "Can't set flags for the socket: $!\n";
2212
ea9eb35a
BJ
2213Portability issues: L<perlport/fcntl>.
2214
cfa52385
FC
2215=item __FILE__
2216X<__FILE__>
2217
c17cdb72
NC
2218=for Pod::Functions the name of the current source file
2219
cfa52385
FC
2220A special token that returns the name of the file in which it occurs.
2221
a0d0e21e 2222=item fileno FILEHANDLE
d74e8afc 2223X<fileno>
a0d0e21e 2224
c17cdb72
NC
2225=for Pod::Functions return file descriptor from filehandle
2226
2b5ab1e7 2227Returns the file descriptor for a filehandle, or undefined if the
a7c1632d
FC
2228filehandle is not open. If there is no real file descriptor at the OS
2229level, as can happen with filehandles connected to memory objects via
2230C<open> with a reference for the third argument, -1 is returned.
2231
2232This is mainly useful for constructing
19799a22 2233bitmaps for C<select> and low-level POSIX tty-handling operations.
2b5ab1e7
TC
2234If FILEHANDLE is an expression, the value is taken as an indirect
2235filehandle, generally its name.
5a964f20 2236
b76cc8ba 2237You can use this to find out whether two handles refer to the
5a964f20
TC
2238same underlying descriptor:
2239
2240 if (fileno(THIS) == fileno(THAT)) {
a9a5a0dc 2241 print "THIS and THAT are dups\n";
b76cc8ba
NIS
2242 }
2243
a0d0e21e 2244=item flock FILEHANDLE,OPERATION
d74e8afc 2245X<flock> X<lock> X<locking>
a0d0e21e 2246
c17cdb72
NC
2247=for Pod::Functions lock an entire file with an advisory lock
2248
19799a22
GS
2249Calls flock(2), or an emulation of it, on FILEHANDLE. Returns true
2250for success, false on failure. Produces a fatal error if used on a
2b5ab1e7 2251machine that doesn't implement flock(2), fcntl(2) locking, or lockf(3).
dbfe1e81 2252C<flock> is Perl's portable file-locking interface, although it locks
3b10bc60 2253entire files only, not records.
2b5ab1e7
TC
2254
2255Two potentially non-obvious but traditional C<flock> semantics are
2256that it waits indefinitely until the lock is granted, and that its locks
dbfe1e81
FC
2257are B<merely advisory>. Such discretionary locks are more flexible, but
2258offer fewer guarantees. This means that programs that do not also use
2259C<flock> may modify files locked with C<flock>. See L<perlport>,
8f1da26d 2260your port's specific documentation, and your system-specific local manpages
2b5ab1e7
TC
2261for details. It's best to assume traditional behavior if you're writing
2262portable programs. (But if you're not, you should as always feel perfectly
2263free to write for your own system's idiosyncrasies (sometimes called
2264"features"). Slavish adherence to portability concerns shouldn't get
2265in the way of your getting your job done.)
a3cb178b 2266
8ebc5c01 2267OPERATION is one of LOCK_SH, LOCK_EX, or LOCK_UN, possibly combined with
2268LOCK_NB. These constants are traditionally valued 1, 2, 8 and 4, but
8f1da26d
TC
2269you can use the symbolic names if you import them from the L<Fcntl> module,
2270either individually, or as a group using the C<:flock> tag. LOCK_SH
68dc0745 2271requests a shared lock, LOCK_EX requests an exclusive lock, and LOCK_UN
ea3105be 2272releases a previously requested lock. If LOCK_NB is bitwise-or'ed with
8f1da26d 2273LOCK_SH or LOCK_EX, then C<flock> returns immediately rather than blocking
3b10bc60 2274waiting for the lock; check the return status to see if you got it.
68dc0745 2275
2b5ab1e7
TC
2276To avoid the possibility of miscoordination, Perl now flushes FILEHANDLE
2277before locking or unlocking it.
8ebc5c01 2278
f86cebdf 2279Note that the emulation built with lockf(3) doesn't provide shared
8ebc5c01 2280locks, and it requires that FILEHANDLE be open with write intent. These
2b5ab1e7 2281are the semantics that lockf(3) implements. Most if not all systems
f86cebdf 2282implement lockf(3) in terms of fcntl(2) locking, though, so the
8ebc5c01 2283differing semantics shouldn't bite too many people.
2284
becacb53
TM
2285Note that the fcntl(2) emulation of flock(3) requires that FILEHANDLE
2286be open with read intent to use LOCK_SH and requires that it be open
2287with write intent to use LOCK_EX.
2288
19799a22
GS
2289Note also that some versions of C<flock> cannot lock things over the
2290network; you would need to use the more system-specific C<fcntl> for
f86cebdf
GS
2291that. If you like you can force Perl to ignore your system's flock(2)
2292function, and so provide its own fcntl(2)-based emulation, by passing
8ebc5c01 2293the switch C<-Ud_flock> to the F<Configure> program when you configure
8f1da26d 2294and build a new Perl.
4633a7c4
LW
2295
2296Here's a mailbox appender for BSD systems.
a0d0e21e 2297
7ed5353d 2298 use Fcntl qw(:flock SEEK_END); # import LOCK_* and SEEK_END constants
a0d0e21e
LW
2299
2300 sub lock {
a9a5a0dc
VP
2301 my ($fh) = @_;
2302 flock($fh, LOCK_EX) or die "Cannot lock mailbox - $!\n";
7ed5353d 2303
a9a5a0dc
VP
2304 # and, in case someone appended while we were waiting...
2305 seek($fh, 0, SEEK_END) or die "Cannot seek - $!\n";
a0d0e21e
LW
2306 }
2307
2308 sub unlock {
a9a5a0dc
VP
2309 my ($fh) = @_;
2310 flock($fh, LOCK_UN) or die "Cannot unlock mailbox - $!\n";
a0d0e21e
LW
2311 }
2312
b0169937 2313 open(my $mbox, ">>", "/usr/spool/mail/$ENV{'USER'}")
5ed4f2ec 2314 or die "Can't open mailbox: $!";
a0d0e21e 2315
7ed5353d 2316 lock($mbox);
b0169937 2317 print $mbox $msg,"\n\n";
7ed5353d 2318 unlock($mbox);
a0d0e21e 2319
3b10bc60 2320On systems that support a real flock(2), locks are inherited across fork()
2321calls, whereas those that must resort to the more capricious fcntl(2)
2322function lose their locks, making it seriously harder to write servers.
2b5ab1e7 2323
cb1a09d0 2324See also L<DB_File> for other flock() examples.
a0d0e21e 2325
ea9eb35a
BJ
2326Portability issues: L<perlport/flock>.
2327
a0d0e21e 2328=item fork
d74e8afc 2329X<fork> X<child> X<parent>
a0d0e21e 2330
c17cdb72
NC
2331=for Pod::Functions create a new process just like this one
2332
2b5ab1e7
TC
2333Does a fork(2) system call to create a new process running the
2334same program at the same point. It returns the child pid to the
2335parent process, C<0> to the child process, or C<undef> if the fork is
2336unsuccessful. File descriptors (and sometimes locks on those descriptors)
2337are shared, while everything else is copied. On most systems supporting
2338fork(), great care has gone into making it extremely efficient (for
2339example, using copy-on-write technology on data pages), making it the
2340dominant paradigm for multitasking over the last few decades.
5a964f20 2341
80d38338 2342Beginning with v5.6.0, Perl attempts to flush all files opened for
0f897271
GS
2343output before forking the child process, but this may not be supported
2344on some platforms (see L<perlport>). To be safe, you may need to set
2345C<$|> ($AUTOFLUSH in English) or call the C<autoflush()> method of
80d38338 2346C<IO::Handle> on any open handles to avoid duplicate output.
a0d0e21e 2347
19799a22 2348If you C<fork> without ever waiting on your children, you will
2b5ab1e7
TC
2349accumulate zombies. On some systems, you can avoid this by setting
2350C<$SIG{CHLD}> to C<"IGNORE">. See also L<perlipc> for more examples of
2351forking and reaping moribund children.
cb1a09d0 2352
28757baa 2353Note that if your forked child inherits system file descriptors like
2354STDIN and STDOUT that are actually connected by a pipe or socket, even
2b5ab1e7 2355if you exit, then the remote server (such as, say, a CGI script or a
19799a22 2356backgrounded job launched from a remote shell) won't think you're done.
2b5ab1e7 2357You should reopen those to F</dev/null> if it's any issue.
28757baa 2358
ea9eb35a 2359On some platforms such as Windows, where the fork() system call is not available,
391b733c
FC
2360Perl can be built to emulate fork() in the Perl interpreter.
2361The emulation is designed, at the level of the Perl program,
2362to be as compatible as possible with the "Unix" fork().
6d17f725 2363However it has limitations that have to be considered in code intended to be portable.
ea9eb35a
BJ
2364See L<perlfork> for more details.
2365
2366Portability issues: L<perlport/fork>.
2367
cb1a09d0 2368=item format
d74e8afc 2369X<format>
cb1a09d0 2370
c17cdb72
NC
2371=for Pod::Functions declare a picture format with use by the write() function
2372
19799a22 2373Declare a picture format for use by the C<write> function. For
cb1a09d0
AD
2374example:
2375
54310121 2376 format Something =
a9a5a0dc
VP
2377 Test: @<<<<<<<< @||||| @>>>>>
2378 $str, $%, '$' . int($num)
cb1a09d0
AD
2379 .
2380
2381 $str = "widget";
184e9718 2382 $num = $cost/$quantity;
cb1a09d0
AD
2383 $~ = 'Something';
2384 write;
2385
2386See L<perlform> for many details and examples.
2387
8903cb82 2388=item formline PICTURE,LIST
d74e8afc 2389X<formline>
a0d0e21e 2390
c17cdb72
NC
2391=for Pod::Functions internal function used for formats
2392
5a964f20 2393This is an internal function used by C<format>s, though you may call it,
a0d0e21e
LW
2394too. It formats (see L<perlform>) a list of values according to the
2395contents of PICTURE, placing the output into the format output
7660c0ab 2396accumulator, C<$^A> (or C<$ACCUMULATOR> in English).
19799a22 2397Eventually, when a C<write> is done, the contents of
cf264981
SP
2398C<$^A> are written to some filehandle. You could also read C<$^A>
2399and then set C<$^A> back to C<"">. Note that a format typically
19799a22 2400does one C<formline> per line of form, but the C<formline> function itself
748a9306 2401doesn't care how many newlines are embedded in the PICTURE. This means
3b10bc60 2402that the C<~> and C<~~> tokens treat the entire PICTURE as a single line.
748a9306 2403You may therefore need to use multiple formlines to implement a single
3b10bc60 2404record format, just like the C<format> compiler.
748a9306 2405
19799a22 2406Be careful if you put double quotes around the picture, because an C<@>
748a9306 2407character may be taken to mean the beginning of an array name.
19799a22 2408C<formline> always returns true. See L<perlform> for other examples.
a0d0e21e 2409
445b09e5
FC
2410If you are trying to use this instead of C<write> to capture the output,
2411you may find it easier to open a filehandle to a scalar
2412(C<< open $fh, ">", \$output >>) and write to that instead.
2413
a0d0e21e 2414=item getc FILEHANDLE
f723aae1 2415X<getc> X<getchar> X<character> X<file, read>
a0d0e21e
LW
2416
2417=item getc
2418
c17cdb72
NC
2419=for Pod::Functions get the next character from the filehandle
2420
a0d0e21e 2421Returns the next character from the input file attached to FILEHANDLE,
3b10bc60 2422or the undefined value at end of file or if there was an error (in
b5fe5ca2
SR
2423the latter case C<$!> is set). If FILEHANDLE is omitted, reads from
2424STDIN. This is not particularly efficient. However, it cannot be
2425used by itself to fetch single characters without waiting for the user
2426to hit enter. For that, try something more like:
4633a7c4
LW
2427
2428 if ($BSD_STYLE) {
a9a5a0dc 2429 system "stty cbreak </dev/tty >/dev/tty 2>&1";
4633a7c4
LW
2430 }
2431 else {
a9a5a0dc 2432 system "stty", '-icanon', 'eol', "\001";
4633a7c4
LW
2433 }
2434
2435 $key = getc(STDIN);
2436
2437 if ($BSD_STYLE) {
a9a5a0dc 2438 system "stty -cbreak </dev/tty >/dev/tty 2>&1";
4633a7c4
LW
2439 }
2440 else {
3b10bc60 2441 system 'stty', 'icanon', 'eol', '^@'; # ASCII NUL
4633a7c4
LW
2442 }
2443 print "\n";
2444
54310121 2445Determination of whether $BSD_STYLE should be set
2446is left as an exercise to the reader.
cb1a09d0 2447
19799a22 2448The C<POSIX::getattr> function can do this more portably on
2b5ab1e7 2449systems purporting POSIX compliance. See also the C<Term::ReadKey>
a3390c9f 2450module from your nearest CPAN site; details on CPAN can be found under
2b5ab1e7 2451L<perlmodlib/CPAN>.
a0d0e21e
LW
2452
2453=item getlogin
d74e8afc 2454X<getlogin> X<login>
a0d0e21e 2455
c17cdb72
NC
2456=for Pod::Functions return who logged in at this tty
2457
cf264981 2458This implements the C library function of the same name, which on most
3b10bc60 2459systems returns the current login from F</etc/utmp>, if any. If it
2460returns the empty string, use C<getpwuid>.
a0d0e21e 2461
f86702cc 2462 $login = getlogin || getpwuid($<) || "Kilroy";
a0d0e21e 2463
19799a22
GS
2464Do not consider C<getlogin> for authentication: it is not as
2465secure as C<getpwuid>.
4633a7c4 2466
ea9eb35a
BJ
2467Portability issues: L<perlport/getlogin>.
2468
a0d0e21e 2469=item getpeername SOCKET
d74e8afc 2470X<getpeername> X<peer>
a0d0e21e 2471
c17cdb72
NC
2472=for Pod::Functions find the other end of a socket connection
2473
a3390c9f
FC
2474Returns the packed sockaddr address of the other end of the SOCKET
2475connection.
a0d0e21e 2476
4633a7c4
LW
2477 use Socket;
2478 $hersockaddr = getpeername(SOCK);
19799a22 2479 ($port, $iaddr) = sockaddr_in($hersockaddr);
4633a7c4
LW
2480 $herhostname = gethostbyaddr($iaddr, AF_INET);
2481 $herstraddr = inet_ntoa($iaddr);
a0d0e21e
LW
2482
2483=item getpgrp PID
d74e8afc 2484X<getpgrp> X<group>
a0d0e21e 2485
c17cdb72
NC
2486=for Pod::Functions get process group
2487
47e29363 2488Returns the current process group for the specified PID. Use
7660c0ab 2489a PID of C<0> to get the current process group for the
4633a7c4 2490current process. Will raise an exception if used on a machine that
a3390c9f
FC
2491doesn't implement getpgrp(2). If PID is omitted, returns the process
2492group of the current process. Note that the POSIX version of C<getpgrp>
7660c0ab 2493does not accept a PID argument, so only C<PID==0> is truly portable.
a0d0e21e 2494
ea9eb35a
BJ
2495Portability issues: L<perlport/getpgrp>.
2496
a0d0e21e 2497=item getppid
d74e8afc 2498X<getppid> X<parent> X<pid>
a0d0e21e 2499
c17cdb72
NC
2500=for Pod::Functions get parent process ID
2501
a0d0e21e
LW
2502Returns the process id of the parent process.
2503
d7c042c9
AB
2504Note for Linux users: Between v5.8.1 and v5.16.0 Perl would work
2505around non-POSIX thread semantics the minority of Linux systems (and
2506Debian GNU/kFreeBSD systems) that used LinuxThreads, this emulation
2507has since been removed. See the documentation for L<$$|perlvar/$$> for
2508details.
4d76a344 2509
ea9eb35a
BJ
2510Portability issues: L<perlport/getppid>.
2511
a0d0e21e 2512=item getpriority WHICH,WHO
d74e8afc 2513X<getpriority> X<priority> X<nice>
a0d0e21e 2514
c17cdb72
NC
2515=for Pod::Functions get current nice value
2516
4633a7c4 2517Returns the current priority for a process, a process group, or a user.
01aa884e 2518(See L<getpriority(2)>.) Will raise a fatal exception if used on a
f86cebdf 2519machine that doesn't implement getpriority(2).
a0d0e21e 2520
ea9eb35a
BJ
2521Portability issues: L<perlport/getpriority>.
2522
a0d0e21e 2523=item getpwnam NAME
d74e8afc
ITB
2524X<getpwnam> X<getgrnam> X<gethostbyname> X<getnetbyname> X<getprotobyname>
2525X<getpwuid> X<getgrgid> X<getservbyname> X<gethostbyaddr> X<getnetbyaddr>
2526X<getprotobynumber> X<getservbyport> X<getpwent> X<getgrent> X<gethostent>
2527X<getnetent> X<getprotoent> X<getservent> X<setpwent> X<setgrent> X<sethostent>
2528X<setnetent> X<setprotoent> X<setservent> X<endpwent> X<endgrent> X<endhostent>
2529X<endnetent> X<endprotoent> X<endservent>
a0d0e21e 2530
c17cdb72
NC
2531=for Pod::Functions get passwd record given user login name
2532
a0d0e21e
LW
2533=item getgrnam NAME
2534
c17cdb72
NC
2535=for Pod::Functions get group record given group name
2536
a0d0e21e
LW
2537=item gethostbyname NAME
2538
c17cdb72
NC
2539=for Pod::Functions get host record given name
2540
a0d0e21e
LW
2541=item getnetbyname NAME
2542
c17cdb72
NC
2543=for Pod::Functions get networks record given name
2544
a0d0e21e
LW
2545=item getprotobyname NAME
2546
c17cdb72
NC
2547=for Pod::Functions get protocol record given name
2548
a0d0e21e
LW
2549=item getpwuid UID
2550
c17cdb72
NC
2551=for Pod::Functions get passwd record given user ID
2552
a0d0e21e
LW
2553=item getgrgid GID
2554
c17cdb72
NC
2555=for Pod::Functions get group record given group user ID
2556
a0d0e21e
LW
2557=item getservbyname NAME,PROTO
2558
c17cdb72
NC
2559=for Pod::Functions get services record given its name
2560
a0d0e21e
LW
2561=item gethostbyaddr ADDR,ADDRTYPE
2562
c17cdb72
NC
2563=for Pod::Functions get host record given its address
2564
a0d0e21e
LW
2565=item getnetbyaddr ADDR,ADDRTYPE
2566
c17cdb72
NC
2567=for Pod::Functions get network record given its address
2568
a0d0e21e
LW
2569=item getprotobynumber NUMBER
2570
c17cdb72
NC
2571=for Pod::Functions get protocol record numeric protocol
2572
a0d0e21e
LW
2573=item getservbyport PORT,PROTO
2574
c17cdb72
NC
2575=for Pod::Functions get services record given numeric port
2576
a0d0e21e
LW
2577=item getpwent
2578
c17cdb72
NC
2579=for Pod::Functions get next passwd record
2580
a0d0e21e
LW
2581=item getgrent
2582
c17cdb72
NC
2583=for Pod::Functions get next group record
2584
a0d0e21e
LW
2585=item gethostent
2586
c17cdb72
NC
2587=for Pod::Functions get next hosts record
2588
a0d0e21e
LW
2589=item getnetent
2590
c17cdb72
NC
2591=for Pod::Functions get next networks record
2592
a0d0e21e
LW
2593=item getprotoent
2594
c17cdb72
NC
2595=for Pod::Functions get next protocols record
2596
a0d0e21e
LW
2597=item getservent
2598
c17cdb72
NC
2599=for Pod::Functions get next services record
2600
a0d0e21e
LW
2601=item setpwent
2602
c17cdb72
NC
2603=for Pod::Functions prepare passwd file for use
2604
a0d0e21e
LW
2605=item setgrent
2606
c17cdb72
NC
2607=for Pod::Functions prepare group file for use
2608
a0d0e21e
LW
2609=item sethostent STAYOPEN
2610
c17cdb72
NC
2611=for Pod::Functions prepare hosts file for use
2612
a0d0e21e
LW
2613=item setnetent STAYOPEN
2614
c17cdb72
NC
2615=for Pod::Functions prepare networks file for use
2616
a0d0e21e
LW
2617=item setprotoent STAYOPEN
2618
c17cdb72
NC
2619=for Pod::Functions prepare protocols file for use
2620
a0d0e21e
LW
2621=item setservent STAYOPEN
2622
c17cdb72
NC
2623=for Pod::Functions prepare services file for use
2624
a0d0e21e
LW
2625=item endpwent
2626
c17cdb72
NC
2627=for Pod::Functions be done using passwd file
2628
a0d0e21e
LW
2629=item endgrent
2630
c17cdb72
NC
2631=for Pod::Functions be done using group file
2632
a0d0e21e
LW
2633=item endhostent
2634
c17cdb72
NC
2635=for Pod::Functions be done using hosts file
2636
a0d0e21e
LW
2637=item endnetent
2638
c17cdb72
NC
2639=for Pod::Functions be done using networks file
2640
a0d0e21e
LW
2641=item endprotoent
2642
c17cdb72
NC
2643=for Pod::Functions be done using protocols file
2644
a0d0e21e
LW
2645=item endservent
2646
c17cdb72
NC
2647=for Pod::Functions be done using services file
2648
80d38338
TC
2649These routines are the same as their counterparts in the
2650system C library. In list context, the return values from the
a0d0e21e
LW
2651various get routines are as follows:
2652
2653 ($name,$passwd,$uid,$gid,
6ee623d5 2654 $quota,$comment,$gcos,$dir,$shell,$expire) = getpw*
a0d0e21e
LW
2655 ($name,$passwd,$gid,$members) = getgr*
2656 ($name,$aliases,$addrtype,$length,@addrs) = gethost*
2657 ($name,$aliases,$addrtype,$net) = getnet*
2658 ($name,$aliases,$proto) = getproto*
2659 ($name,$aliases,$port,$proto) = getserv*
2660
3b10bc60 2661(If the entry doesn't exist you get an empty list.)
a0d0e21e 2662
4602f195
JH
2663The exact meaning of the $gcos field varies but it usually contains
2664the real name of the user (as opposed to the login name) and other
2665information pertaining to the user. Beware, however, that in many
2666system users are able to change this information and therefore it
106325ad 2667cannot be trusted and therefore the $gcos is tainted (see
2959b6e3 2668L<perlsec>). The $passwd and $shell, user's encrypted password and
a3390c9f 2669login shell, are also tainted, for the same reason.
4602f195 2670
5a964f20 2671In scalar context, you get the name, unless the function was a
a0d0e21e
LW
2672lookup by name, in which case you get the other thing, whatever it is.
2673(If the entry doesn't exist you get the undefined value.) For example:
2674
5a964f20
TC
2675 $uid = getpwnam($name);
2676 $name = getpwuid($num);
2677 $name = getpwent();
2678 $gid = getgrnam($name);
08a33e13 2679 $name = getgrgid($num);
5a964f20
TC
2680 $name = getgrent();
2681 #etc.
a0d0e21e 2682
4602f195 2683In I<getpw*()> the fields $quota, $comment, and $expire are special
80d38338 2684in that they are unsupported on many systems. If the
4602f195
JH
2685$quota is unsupported, it is an empty scalar. If it is supported, it
2686usually encodes the disk quota. If the $comment field is unsupported,
2687it is an empty scalar. If it is supported it usually encodes some
2688administrative comment about the user. In some systems the $quota
2689field may be $change or $age, fields that have to do with password
2690aging. In some systems the $comment field may be $class. The $expire
2691field, if present, encodes the expiration period of the account or the
2692password. For the availability and the exact meaning of these fields
8f1da26d 2693in your system, please consult getpwnam(3) and your system's
4602f195
JH
2694F<pwd.h> file. You can also find out from within Perl what your
2695$quota and $comment fields mean and whether you have the $expire field
2696by using the C<Config> module and the values C<d_pwquota>, C<d_pwage>,
2697C<d_pwchange>, C<d_pwcomment>, and C<d_pwexpire>. Shadow password
3b10bc60 2698files are supported only if your vendor has implemented them in the
4602f195 2699intuitive fashion that calling the regular C library routines gets the
5d3a0a3b 2700shadow versions if you're running under privilege or if there exists
cf264981 2701the shadow(3) functions as found in System V (this includes Solaris
a3390c9f 2702and Linux). Those systems that implement a proprietary shadow password
5d3a0a3b 2703facility are unlikely to be supported.
6ee623d5 2704
a3390c9f 2705The $members value returned by I<getgr*()> is a space-separated list of
a0d0e21e
LW
2706the login names of the members of the group.
2707
2708For the I<gethost*()> functions, if the C<h_errno> variable is supported in
2709C, it will be returned to you via C<$?> if the function call fails. The
3b10bc60 2710C<@addrs> value returned by a successful call is a list of raw
2711addresses returned by the corresponding library call. In the
2712Internet domain, each address is four bytes long; you can unpack it
a0d0e21e
LW
2713by saying something like:
2714
f337b084 2715 ($a,$b,$c,$d) = unpack('W4',$addr[0]);
a0d0e21e 2716
2b5ab1e7
TC
2717The Socket library makes this slightly easier:
2718
2719 use Socket;
2720 $iaddr = inet_aton("127.1"); # or whatever address
2721 $name = gethostbyaddr($iaddr, AF_INET);
2722
2723 # or going the other way
19799a22 2724 $straddr = inet_ntoa($iaddr);
2b5ab1e7 2725
d760c846
GS
2726In the opposite way, to resolve a hostname to the IP address
2727you can write this:
2728
2729 use Socket;
2730 $packed_ip = gethostbyname("www.perl.org");
2731 if (defined $packed_ip) {
2732 $ip_address = inet_ntoa($packed_ip);
2733 }
2734
b018eaf1 2735Make sure C<gethostbyname()> is called in SCALAR context and that
d760c846
GS
2736its return value is checked for definedness.
2737
0d043efa
FC
2738The C<getprotobynumber> function, even though it only takes one argument,
2739has the precedence of a list operator, so beware:
2740
2741 getprotobynumber $number eq 'icmp' # WRONG
2742 getprotobynumber($number eq 'icmp') # actually means this
2743 getprotobynumber($number) eq 'icmp' # better this way
2744
19799a22
GS
2745If you get tired of remembering which element of the return list
2746contains which return value, by-name interfaces are provided
2747in standard modules: C<File::stat>, C<Net::hostent>, C<Net::netent>,
2748C<Net::protoent>, C<Net::servent>, C<Time::gmtime>, C<Time::localtime>,
2749and C<User::grent>. These override the normal built-ins, supplying
2750versions that return objects with the appropriate names
2751for each field. For example:
5a964f20
TC
2752
2753 use File::stat;
2754 use User::pwent;
2755 $is_his = (stat($filename)->uid == pwent($whoever)->uid);
2756
a3390c9f 2757Even though it looks as though they're the same method calls (uid),
b76cc8ba 2758they aren't, because a C<File::stat> object is different from
19799a22 2759a C<User::pwent> object.
5a964f20 2760
ea9eb35a
BJ
2761Portability issues: L<perlport/getpwnam> to L<perlport/endservent>.
2762
a0d0e21e 2763=item getsockname SOCKET
d74e8afc 2764X<getsockname>
a0d0e21e 2765
c17cdb72
NC
2766=for Pod::Functions retrieve the sockaddr for a given socket
2767
19799a22
GS
2768Returns the packed sockaddr address of this end of the SOCKET connection,
2769in case you don't know the address because you have several different
2770IPs that the connection might have come in on.
a0d0e21e 2771
4633a7c4
LW
2772 use Socket;
2773 $mysockaddr = getsockname(SOCK);
19799a22 2774 ($port, $myaddr) = sockaddr_in($mysockaddr);
b76cc8ba 2775 printf "Connect to %s [%s]\n",
19799a22
GS
2776 scalar gethostbyaddr($myaddr, AF_INET),
2777 inet_ntoa($myaddr);
a0d0e21e
LW
2778
2779=item getsockopt SOCKET,LEVEL,OPTNAME
d74e8afc 2780X<getsockopt>
a0d0e21e 2781
c17cdb72
NC
2782=for Pod::Functions get socket options on a given socket
2783
636e6b1f
TH
2784Queries the option named OPTNAME associated with SOCKET at a given LEVEL.
2785Options may exist at multiple protocol levels depending on the socket
2786type, but at least the uppermost socket level SOL_SOCKET (defined in the
391b733c 2787C<Socket> module) will exist. To query options at another level the
636e6b1f 2788protocol number of the appropriate protocol controlling the option
391b733c 2789should be supplied. For example, to indicate that an option is to be
636e6b1f 2790interpreted by the TCP protocol, LEVEL should be set to the protocol
80d38338 2791number of TCP, which you can get using C<getprotobyname>.
636e6b1f 2792
80d38338 2793The function returns a packed string representing the requested socket
3b10bc60 2794option, or C<undef> on error, with the reason for the error placed in
391b733c 2795C<$!>. Just what is in the packed string depends on LEVEL and OPTNAME;
80d38338
TC
2796consult getsockopt(2) for details. A common case is that the option is an
2797integer, in which case the result is a packed integer, which you can decode
2798using C<unpack> with the C<i> (or C<I>) format.
636e6b1f 2799
8f1da26d 2800Here's an example to test whether Nagle's algorithm is enabled on a socket:
636e6b1f 2801
4852725b 2802 use Socket qw(:all);
636e6b1f
TH
2803
2804 defined(my $tcp = getprotobyname("tcp"))
a9a5a0dc 2805 or die "Could not determine the protocol number for tcp";
4852725b
DD
2806 # my $tcp = IPPROTO_TCP; # Alternative
2807 my $packed = getsockopt($socket, $tcp, TCP_NODELAY)
80d38338 2808 or die "getsockopt TCP_NODELAY: $!";
636e6b1f
TH
2809 my $nodelay = unpack("I", $packed);
2810 print "Nagle's algorithm is turned ", $nodelay ? "off\n" : "on\n";
2811
ea9eb35a 2812Portability issues: L<perlport/getsockopt>.
a0d0e21e 2813
15a348aa
NC
2814=item given EXPR BLOCK
2815X<given>
2816
2817=item given BLOCK
2818
c17cdb72
NC
2819=for Pod::Functions !RT #108848
2820
391b733c
FC
2821C<given> is analogous to the C<switch>
2822keyword in other languages. C<given>
15a348aa 2823and C<when> are used in Perl to implement C<switch>/C<case> like statements.
8f1da26d 2824Only available after Perl 5.10. For example:
15a348aa 2825
8f1da26d 2826 use v5.10;
15a348aa
NC
2827 given ($fruit) {
2828 when (/apples?/) {
2829 print "I like apples."
2830 }
2831 when (/oranges?/) {
2832 print "I don't like oranges."
2833 }
2834 default {
2835 print "I don't like anything"
2836 }
2837 }
2838
48238296 2839See L<perlsyn/"Switch Statements"> for detailed information.
15a348aa 2840
a0d0e21e 2841=item glob EXPR
d74e8afc 2842X<glob> X<wildcard> X<filename, expansion> X<expand>
a0d0e21e 2843
0a753a76 2844=item glob
2845
c17cdb72
NC
2846=for Pod::Functions expand filenames using wildcards
2847
d9a9d457 2848In list context, returns a (possibly empty) list of filename expansions on
391b733c 2849the value of EXPR such as the standard Unix shell F</bin/csh> would do. In
d9a9d457 2850scalar context, glob iterates through such filename expansions, returning
391b733c
FC
2851undef when the list is exhausted. This is the internal function
2852implementing the C<< <*.c> >> operator, but you can use it directly. If
d9a9d457
JL
2853EXPR is omitted, C<$_> is used. The C<< <*.c> >> operator is discussed in
2854more detail in L<perlop/"I/O Operators">.
a0d0e21e 2855
80d38338
TC
2856Note that C<glob> splits its arguments on whitespace and treats
2857each segment as separate pattern. As such, C<glob("*.c *.h")>
2858matches all files with a F<.c> or F<.h> extension. The expression
b474a1b1 2859C<glob(".* *")> matches all files in the current working directory.
a91bb7b1
TC
2860If you want to glob filenames that might contain whitespace, you'll
2861have to use extra quotes around the spacey filename to protect it.
2862For example, to glob filenames that have an C<e> followed by a space
2863followed by an C<f>, use either of:
2864
2865 @spacies = <"*e f*">;
2866 @spacies = glob '"*e f*"';
2867 @spacies = glob q("*e f*");
2868
2869If you had to get a variable through, you could do this:
2870
2871 @spacies = glob "'*${var}e f*'";
2872 @spacies = glob qq("*${var}e f*");
80d38338
TC
2873
2874If non-empty braces are the only wildcard characters used in the
2875C<glob>, no filenames are matched, but potentially many strings
2876are returned. For example, this produces nine strings, one for
2877each pairing of fruits and colors:
2878
2879 @many = glob "{apple,tomato,cherry}={green,yellow,red}";
5c0c9249 2880
3a4b19e4 2881Beginning with v5.6.0, this operator is implemented using the standard
5c0c9249
PF
2882C<File::Glob> extension. See L<File::Glob> for details, including
2883C<bsd_glob> which does not treat whitespace as a pattern separator.
3a4b19e4 2884
ea9eb35a
BJ
2885Portability issues: L<perlport/glob>.
2886
a0d0e21e 2887=item gmtime EXPR
d74e8afc 2888X<gmtime> X<UTC> X<Greenwich>
a0d0e21e 2889
ce2984c3
PF
2890=item gmtime
2891
c17cdb72
NC
2892=for Pod::Functions convert UNIX time into record or string using Greenwich time
2893
4509d391 2894Works just like L</localtime> but the returned values are
435fbc73 2895localized for the standard Greenwich time zone.
a0d0e21e 2896
a3390c9f
FC
2897Note: When called in list context, $isdst, the last value
2898returned by gmtime, is always C<0>. There is no
435fbc73 2899Daylight Saving Time in GMT.
0a753a76 2900
ea9eb35a 2901Portability issues: L<perlport/gmtime>.
62aa5637 2902
a0d0e21e 2903=item goto LABEL
d74e8afc 2904X<goto> X<jump> X<jmp>
a0d0e21e 2905
748a9306
LW
2906=item goto EXPR
2907
a0d0e21e
LW
2908=item goto &NAME
2909
c17cdb72
NC
2910=for Pod::Functions create spaghetti code
2911
b500e03b 2912The C<goto-LABEL> form finds the statement labeled with LABEL and
391b733c 2913resumes execution there. It can't be used to get out of a block or
b500e03b
GG
2914subroutine given to C<sort>. It can be used to go almost anywhere
2915else within the dynamic scope, including out of subroutines, but it's
2916usually better to use some other construct such as C<last> or C<die>.
2917The author of Perl has never felt the need to use this form of C<goto>
3b10bc60 2918(in Perl, that is; C is another matter). (The difference is that C
b500e03b
GG
2919does not offer named loops combined with loop control. Perl does, and
2920this replaces most structured uses of C<goto> in other languages.)
a0d0e21e 2921
7660c0ab
A
2922The C<goto-EXPR> form expects a label name, whose scope will be resolved
2923dynamically. This allows for computed C<goto>s per FORTRAN, but isn't
748a9306
LW
2924necessarily recommended if you're optimizing for maintainability:
2925
2926 goto ("FOO", "BAR", "GLARCH")[$i];
2927
887d89fd 2928As shown in this example, C<goto-EXPR> is exempt from the "looks like a
391b733c
FC
2929function" rule. A pair of parentheses following it does not (necessarily)
2930delimit its argument. C<goto("NE")."XT"> is equivalent to C<goto NEXT>.
887d89fd 2931
b500e03b 2932Use of C<goto-LABEL> or C<goto-EXPR> to jump into a construct is
0b98bec9 2933deprecated and will issue a warning. Even then, it may not be used to
b500e03b
GG
2934go into any construct that requires initialization, such as a
2935subroutine or a C<foreach> loop. It also can't be used to go into a
0b98bec9 2936construct that is optimized away.
b500e03b 2937
1b6921cb
BT
2938The C<goto-&NAME> form is quite different from the other forms of
2939C<goto>. In fact, it isn't a goto in the normal sense at all, and
2940doesn't have the stigma associated with other gotos. Instead, it
2941exits the current subroutine (losing any changes set by local()) and
2942immediately calls in its place the named subroutine using the current
2943value of @_. This is used by C<AUTOLOAD> subroutines that wish to
2944load another subroutine and then pretend that the other subroutine had
2945been called in the first place (except that any modifications to C<@_>
6cb9131c
GS
2946in the current subroutine are propagated to the other subroutine.)
2947After the C<goto>, not even C<caller> will be able to tell that this
2948routine was called first.
2949
2950NAME needn't be the name of a subroutine; it can be a scalar variable
8f1da26d 2951containing a code reference or a block that evaluates to a code
6cb9131c 2952reference.
a0d0e21e
LW
2953
2954=item grep BLOCK LIST
d74e8afc 2955X<grep>
a0d0e21e
LW
2956
2957=item grep EXPR,LIST
2958
c17cdb72
NC
2959=for Pod::Functions locate elements in a list test true against a given criterion
2960
2b5ab1e7
TC
2961This is similar in spirit to, but not the same as, grep(1) and its
2962relatives. In particular, it is not limited to using regular expressions.
2f9daede 2963
a0d0e21e 2964Evaluates the BLOCK or EXPR for each element of LIST (locally setting
7660c0ab 2965C<$_> to each element) and returns the list value consisting of those
19799a22
GS
2966elements for which the expression evaluated to true. In scalar
2967context, returns the number of times the expression was true.
a0d0e21e
LW
2968
2969 @foo = grep(!/^#/, @bar); # weed out comments
2970
2971or equivalently,
2972
2973 @foo = grep {!/^#/} @bar; # weed out comments
2974
be3174d2
GS
2975Note that C<$_> is an alias to the list value, so it can be used to
2976modify the elements of the LIST. While this is useful and supported,
2977it can cause bizarre results if the elements of LIST are not variables.
2b5ab1e7
TC
2978Similarly, grep returns aliases into the original list, much as a for
2979loop's index variable aliases the list elements. That is, modifying an
19799a22
GS
2980element of a list returned by grep (for example, in a C<foreach>, C<map>
2981or another C<grep>) actually modifies the element in the original list.
2b5ab1e7 2982This is usually something to be avoided when writing clear code.
a0d0e21e 2983
a4fb8298 2984If C<$_> is lexical in the scope where the C<grep> appears (because it has
cf264981 2985been declared with C<my $_>) then, in addition to being locally aliased to
80d38338 2986the list elements, C<$_> keeps being lexical inside the block; i.e., it
a4fb8298
RGS
2987can't be seen from the outside, avoiding any potential side-effects.
2988
19799a22 2989See also L</map> for a list composed of the results of the BLOCK or EXPR.
38325410 2990
a0d0e21e 2991=item hex EXPR
d74e8afc 2992X<hex> X<hexadecimal>
a0d0e21e 2993
54310121 2994=item hex
bbce6d69 2995
c17cdb72
NC
2996=for Pod::Functions convert a string to a hexadecimal number
2997
2b5ab1e7 2998Interprets EXPR as a hex string and returns the corresponding value.
38366c11 2999(To convert strings that might start with either C<0>, C<0x>, or C<0b>, see
2b5ab1e7 3000L</oct>.) If EXPR is omitted, uses C<$_>.
2f9daede
TP
3001
3002 print hex '0xAf'; # prints '175'
3003 print hex 'aF'; # same
a0d0e21e 3004
19799a22 3005Hex strings may only represent integers. Strings that would cause
53305cf1 3006integer overflow trigger a warning. Leading whitespace is not stripped,
391b733c 3007unlike oct(). To present something as hex, look into L</printf>,
8f1da26d 3008L</sprintf>, and L</unpack>.
19799a22 3009
ce2984c3 3010=item import LIST
d74e8afc 3011X<import>
a0d0e21e 3012
c17cdb72
NC
3013=for Pod::Functions patch a module's namespace into your own
3014
19799a22 3015There is no builtin C<import> function. It is just an ordinary
4633a7c4 3016method (subroutine) defined (or inherited) by modules that wish to export
19799a22 3017names to another module. The C<use> function calls the C<import> method
cea6626f 3018for the package used. See also L</use>, L<perlmod>, and L<Exporter>.
a0d0e21e
LW
3019
3020=item index STR,SUBSTR,POSITION
d74e8afc 3021X<index> X<indexOf> X<InStr>
a0d0e21e
LW
3022
3023=item index STR,SUBSTR
3024
c17cdb72
NC
3025=for Pod::Functions find a substring within a string
3026
2b5ab1e7
TC
3027The index function searches for one string within another, but without
3028the wildcard-like behavior of a full regular-expression pattern match.
3029It returns the position of the first occurrence of SUBSTR in STR at
3030or after POSITION. If POSITION is omitted, starts searching from the
26f149de
YST
3031beginning of the string. POSITION before the beginning of the string
3032or after its end is treated as if it were the beginning or the end,
e1dccc0d
Z
3033respectively. POSITION and the return value are based at zero.
3034If the substring is not found, C<index> returns -1.
a0d0e21e
LW
3035
3036=item int EXPR
f723aae1 3037X<int> X<integer> X<truncate> X<trunc> X<floor>
a0d0e21e 3038
54310121 3039=item int
bbce6d69 3040
c17cdb72
NC
3041=for Pod::Functions get the integer portion of a number
3042
7660c0ab 3043Returns the integer portion of EXPR. If EXPR is omitted, uses C<$_>.
2b5ab1e7 3044You should not use this function for rounding: one because it truncates
3b10bc60 3045towards C<0>, and two because machine representations of floating-point
2b5ab1e7
TC
3046numbers can sometimes produce counterintuitive results. For example,
3047C<int(-6.725/0.025)> produces -268 rather than the correct -269; that's
3048because it's really more like -268.99999999999994315658 instead. Usually,
19799a22 3049the C<sprintf>, C<printf>, or the C<POSIX::floor> and C<POSIX::ceil>
2b5ab1e7 3050functions will serve you better than will int().
a0d0e21e
LW
3051
3052=item ioctl FILEHANDLE,FUNCTION,SCALAR
d74e8afc 3053X<ioctl>
a0d0e21e 3054
c17cdb72
NC
3055=for Pod::Functions system-dependent device control system call
3056
2b5ab1e7 3057Implements the ioctl(2) function. You'll probably first have to say
a0d0e21e 3058
5ed4f2ec 3059 require "sys/ioctl.ph"; # probably in $Config{archlib}/sys/ioctl.ph
a0d0e21e 3060
a11c483f 3061to get the correct function definitions. If F<sys/ioctl.ph> doesn't
a0d0e21e 3062exist or doesn't have the correct definitions you'll have to roll your
61eff3bc 3063own, based on your C header files such as F<< <sys/ioctl.h> >>.
5a964f20 3064(There is a Perl script called B<h2ph> that comes with the Perl kit that
54310121 3065may help you in this, but it's nontrivial.) SCALAR will be read and/or
3b10bc60 3066written depending on the FUNCTION; a C pointer to the string value of SCALAR
19799a22 3067will be passed as the third argument of the actual C<ioctl> call. (If SCALAR
4633a7c4
LW
3068has no string value but does have a numeric value, that value will be
3069passed rather than a pointer to the string value. To guarantee this to be
19799a22
GS
3070true, add a C<0> to the scalar before using it.) The C<pack> and C<unpack>
3071functions may be needed to manipulate the values of structures used by
b76cc8ba 3072C<ioctl>.
a0d0e21e 3073
19799a22 3074The return value of C<ioctl> (and C<fcntl>) is as follows:
a0d0e21e 3075
5ed4f2ec 3076 if OS returns: then Perl returns:
3077 -1 undefined value
3078 0 string "0 but true"
3079 anything else that number
a0d0e21e 3080
19799a22 3081Thus Perl returns true on success and false on failure, yet you can
a0d0e21e
LW
3082still easily determine the actual value returned by the operating
3083system:
3084
2b5ab1e7 3085 $retval = ioctl(...) || -1;
a0d0e21e
LW
3086 printf "System returned %d\n", $retval;
3087
be2f7487 3088The special string C<"0 but true"> is exempt from B<-w> complaints
5a964f20
TC
3089about improper numeric conversions.
3090
ea9eb35a
BJ
3091Portability issues: L<perlport/ioctl>.
3092
a0d0e21e 3093=item join EXPR,LIST
d74e8afc 3094X<join>
a0d0e21e 3095
c17cdb72
NC
3096=for Pod::Functions join a list into a string using a separator
3097
2b5ab1e7
TC
3098Joins the separate strings of LIST into a single string with fields
3099separated by the value of EXPR, and returns that new string. Example:
a0d0e21e 3100
2b5ab1e7 3101 $rec = join(':', $login,$passwd,$uid,$gid,$gcos,$home,$shell);
a0d0e21e 3102
eb6e2d6f
GS
3103Beware that unlike C<split>, C<join> doesn't take a pattern as its
3104first argument. Compare L</split>.
a0d0e21e 3105
532eee96 3106=item keys HASH
d74e8afc 3107X<keys> X<key>
aa689395 3108
532eee96 3109=item keys ARRAY
aeedbbed 3110
f5a93a43
TC
3111=item keys EXPR
3112
c17cdb72
NC
3113=for Pod::Functions retrieve list of indices from a hash
3114
bade7fbc
TC
3115Called in list context, returns a list consisting of all the keys of the
3116named hash, or in Perl 5.12 or later only, the indices of an array. Perl
3117releases prior to 5.12 will produce a syntax error if you try to use an
3118array argument. In scalar context, returns the number of keys or indices.
504f80c1 3119
aeedbbed 3120The keys of a hash are returned in an apparently random order. The actual
3b10bc60 3121random order is subject to change in future versions of Perl, but it
504f80c1 3122is guaranteed to be the same order as either the C<values> or C<each>
4546b9e6 3123function produces (given that the hash has not been modified). Since
c5f61d2f 3124Perl 5.8.1 the ordering can be different even between different runs of
4546b9e6 3125Perl for security reasons (see L<perlsec/"Algorithmic Complexity
d6df3700 3126Attacks">).
504f80c1 3127
8f1da26d 3128As a side effect, calling keys() resets the internal interator of the HASH or ARRAY
cf264981
SP
3129(see L</each>). In particular, calling keys() in void context resets
3130the iterator with no other overhead.
a0d0e21e 3131
aa689395 3132Here is yet another way to print your environment:
a0d0e21e
LW
3133
3134 @keys = keys %ENV;
3135 @values = values %ENV;
b76cc8ba 3136 while (@keys) {
a9a5a0dc 3137 print pop(@keys), '=', pop(@values), "\n";
a0d0e21e
LW
3138 }
3139
3140or how about sorted by key:
3141
3142 foreach $key (sort(keys %ENV)) {
a9a5a0dc 3143 print $key, '=', $ENV{$key}, "\n";
a0d0e21e
LW
3144 }
3145
8ea1e5d4
GS
3146The returned values are copies of the original keys in the hash, so
3147modifying them will not affect the original hash. Compare L</values>.
3148
19799a22 3149To sort a hash by value, you'll need to use a C<sort> function.
aa689395 3150Here's a descending numeric sort of a hash by its values:
4633a7c4 3151
5a964f20 3152 foreach $key (sort { $hash{$b} <=> $hash{$a} } keys %hash) {
a9a5a0dc 3153 printf "%4d %s\n", $hash{$key}, $key;
4633a7c4
LW
3154 }
3155
3b10bc60 3156Used as an lvalue, C<keys> allows you to increase the number of hash buckets
aa689395 3157allocated for the given hash. This can gain you a measure of efficiency if
3158you know the hash is going to get big. (This is similar to pre-extending
3159an array by assigning a larger number to $#array.) If you say
55497cff 3160
3161 keys %hash = 200;
3162
ab192400
GS
3163then C<%hash> will have at least 200 buckets allocated for it--256 of them,
3164in fact, since it rounds up to the next power of two. These
55497cff 3165buckets will be retained even if you do C<%hash = ()>, use C<undef
3166%hash> if you want to free the storage while C<%hash> is still in scope.
3167You can't shrink the number of buckets allocated for the hash using
19799a22 3168C<keys> in this way (but you needn't worry about doing this by accident,
0d3e3823 3169as trying has no effect). C<keys @array> in an lvalue context is a syntax
aeedbbed 3170error.
55497cff 3171
f5a93a43
TC
3172Starting with Perl 5.14, C<keys> can take a scalar EXPR, which must contain
3173a reference to an unblessed hash or array. The argument will be
3174dereferenced automatically. This aspect of C<keys> is considered highly
3175experimental. The exact behaviour may change in a future version of Perl.
cba5a3b0
DG
3176
3177 for (keys $hashref) { ... }
3178 for (keys $obj->get_arrayref) { ... }
3179
bade7fbc
TC
3180To avoid confusing would-be users of your code who are running earlier
3181versions of Perl with mysterious syntax errors, put this sort of thing at
3182the top of your file to signal that your code will work I<only> on Perls of
3183a recent vintage:
3184
3185 use 5.012; # so keys/values/each work on arrays
3186 use 5.014; # so keys/values/each work on scalars (experimental)
3187
8f1da26d 3188See also C<each>, C<values>, and C<sort>.
ab192400 3189
b350dd2f 3190=item kill SIGNAL, LIST
9c7e4b76
KW
3191
3192=item kill SIGNAL
d74e8afc 3193X<kill> X<signal>
a0d0e21e 3194
c17cdb72
NC
3195=for Pod::Functions send a signal to a process or process group
3196
b350dd2f 3197Sends a signal to a list of processes. Returns the number of
517db077
GS
3198processes successfully signaled (which is not necessarily the
3199same as the number actually killed).
a0d0e21e
LW
3200
3201 $cnt = kill 1, $child1, $child2;
3202 kill 9, @goners;
3203
3b10bc60 3204If SIGNAL is zero, no signal is sent to the process, but C<kill>
3205checks whether it's I<possible> to send a signal to it (that
70fb64f6 3206means, to be brief, that the process is owned by the same user, or we are
3b10bc60 3207the super-user). This is useful to check that a child process is still
81fd35db
DN
3208alive (even if only as a zombie) and hasn't changed its UID. See
3209L<perlport> for notes on the portability of this construct.
b350dd2f 3210
e2c0f81f 3211Unlike in the shell, if SIGNAL is negative, it kills process groups instead
391b733c
FC
3212of processes. That means you usually
3213want to use positive not negative signals.
e2c0f81f
DG
3214You may also use a signal name in quotes.
3215
3216The behavior of kill when a I<PROCESS> number is zero or negative depends on
3217the operating system. For example, on POSIX-conforming systems, zero will
3218signal the current process group and -1 will signal all processes.
1e9c1022
JL
3219
3220See L<perlipc/"Signals"> for more details.
a0d0e21e 3221
ea9eb35a
BJ
3222On some platforms such as Windows where the fork() system call is not available.
3223Perl can be built to emulate fork() at the interpreter level.
6d17f725 3224This emulation has limitations related to kill that have to be considered,
ea9eb35a
BJ
3225for code running on Windows and in code intended to be portable.
3226
3227See L<perlfork> for more details.
3228
9c7e4b76
KW
3229If there is no I<LIST> of processes, no signal is sent, and the return
3230value is 0. This form is sometimes used, however, because it causes
3231tainting checks to be run. But see
3232L<perlsec/Laundering and Detecting Tainted Data>.
3233
ea9eb35a
BJ
3234Portability issues: L<perlport/kill>.
3235
a0d0e21e 3236=item last LABEL
d74e8afc 3237X<last> X<break>
a0d0e21e
LW
3238
3239=item last
3240
c17cdb72
NC
3241=for Pod::Functions exit a block prematurely
3242
a0d0e21e
LW
3243The C<last> command is like the C<break> statement in C (as used in
3244loops); it immediately exits the loop in question. If the LABEL is
3245omitted, the command refers to the innermost enclosing loop. The
3246C<continue> block, if any, is not executed:
3247
4633a7c4 3248 LINE: while (<STDIN>) {
a9a5a0dc
VP
3249 last LINE if /^$/; # exit when done with header
3250 #...
a0d0e21e
LW
3251 }
3252
80d38338 3253C<last> cannot be used to exit a block that returns a value such as
8f1da26d 3254C<eval {}>, C<sub {}>, or C<do {}>, and should not be used to exit
2b5ab1e7 3255a grep() or map() operation.
4968c1e4 3256
6c1372ed
GS
3257Note that a block by itself is semantically identical to a loop
3258that executes once. Thus C<last> can be used to effect an early
3259exit out of such a block.
3260
98293880
JH
3261See also L</continue> for an illustration of how C<last>, C<next>, and
3262C<redo> work.
1d2dff63 3263
a0d0e21e 3264=item lc EXPR
d74e8afc 3265X<lc> X<lowercase>
a0d0e21e 3266
54310121 3267=item lc
bbce6d69 3268
c17cdb72
NC
3269=for Pod::Functions return lower-case version of a string
3270
d1be9408 3271Returns a lowercased version of EXPR. This is the internal function
3980dc9c 3272implementing the C<\L> escape in double-quoted strings.
a0d0e21e 3273
7660c0ab 3274If EXPR is omitted, uses C<$_>.
bbce6d69 3275
3980dc9c
KW
3276What gets returned depends on several factors:
3277
3278=over
3279
3280=item If C<use bytes> is in effect:
3281
3282=over
3283
3284=item On EBCDIC platforms
3285
3286The results are what the C language system call C<tolower()> returns.
3287
3288=item On ASCII platforms
3289
3290The results follow ASCII semantics. Only characters C<A-Z> change, to C<a-z>
3291respectively.
3292
3293=back
3294
66cbab2c 3295=item Otherwise, if C<use locale> (but not C<use locale ':not_characters'>) is in effect:
3980dc9c 3296
094a2f8c
KW
3297Respects current LC_CTYPE locale for code points < 256; and uses Unicode
3298semantics for the remaining code points (this last can only happen if
3299the UTF8 flag is also set). See L<perllocale>.
3980dc9c 3300
094a2f8c
KW
3301A deficiency in this is that case changes that cross the 255/256
3302boundary are not well-defined. For example, the lower case of LATIN CAPITAL
3303LETTER SHARP S (U+1E9E) in Unicode semantics is U+00DF (on ASCII
3304platforms). But under C<use locale>, the lower case of U+1E9E is
3305itself, because 0xDF may not be LATIN SMALL LETTER SHARP S in the
3306current locale, and Perl has no way of knowing if that character even
3307exists in the locale, much less what code point it is. Perl returns
3308the input character unchanged, for all instances (and there aren't
3309many) where the 255/256 boundary would otherwise be crossed.
3980dc9c 3310
66cbab2c 3311=item Otherwise, If EXPR has the UTF8 flag set:
094a2f8c
KW
3312
3313Unicode semantics are used for the case change.
3980dc9c 3314
66cbab2c 3315=item Otherwise, if C<use feature 'unicode_strings'> or C<use locale ':not_characters'>) is in effect:
3980dc9c 3316
5d1892be 3317Unicode semantics are used for the case change.
3980dc9c
KW
3318
3319=item Otherwise:
3320
3321=over
3322
3323=item On EBCDIC platforms
3324
3325The results are what the C language system call C<tolower()> returns.
3326
3327=item On ASCII platforms
3328
3329ASCII semantics are used for the case change. The lowercase of any character
3330outside the ASCII range is the character itself.
3331
3332=back
3333
3334=back
3335
a0d0e21e 3336=item lcfirst EXPR
d74e8afc 3337X<lcfirst> X<lowercase>
a0d0e21e 3338
54310121 3339=item lcfirst
bbce6d69 3340
c17cdb72
NC
3341=for Pod::Functions return a string with just the next letter in lower case
3342
ad0029c4
JH
3343Returns the value of EXPR with the first character lowercased. This
3344is the internal function implementing the C<\l> escape in
3980dc9c 3345double-quoted strings.
a0d0e21e 3346
7660c0ab 3347If EXPR is omitted, uses C<$_>.
bbce6d69 3348
15dbbbab 3349This function behaves the same way under various pragmata, such as in a locale,
3980dc9c
KW
3350as L</lc> does.
3351
a0d0e21e 3352=item length EXPR
d74e8afc 3353X<length> X<size>
a0d0e21e 3354
54310121 3355=item length
bbce6d69 3356
c17cdb72
NC
3357=for Pod::Functions return the number of bytes in a string
3358
974da8e5 3359Returns the length in I<characters> of the value of EXPR. If EXPR is
15dbbbab
FC
3360omitted, returns the length of C<$_>. If EXPR is undefined, returns
3361C<undef>.
3b10bc60 3362
3363This function cannot be used on an entire array or hash to find out how
3364many elements these have. For that, use C<scalar @array> and C<scalar keys
3365%hash>, respectively.
3366
3367Like all Perl character operations, length() normally deals in logical
3368characters, not physical bytes. For how many bytes a string encoded as
3369UTF-8 would take up, use C<length(Encode::encode_utf8(EXPR))> (you'll have
3370to C<use Encode> first). See L<Encode> and L<perlunicode>.
974da8e5 3371
cfa52385
FC
3372=item __LINE__
3373X<__LINE__>
3374
c17cdb72
NC
3375=for Pod::Functions the current source line number
3376
cfa52385
FC
3377A special token that compiles to the current line number.
3378
a0d0e21e 3379=item link OLDFILE,NEWFILE
d74e8afc 3380X<link>
a0d0e21e 3381
c17cdb72
NC
3382=for Pod::Functions create a hard link in the filesystem
3383
19799a22 3384Creates a new filename linked to the old filename. Returns true for
b76cc8ba 3385success, false otherwise.
a0d0e21e 3386
ea9eb35a
BJ
3387Portability issues: L<perlport/link>.
3388
a0d0e21e 3389=item listen SOCKET,QUEUESIZE
d74e8afc 3390X<listen>
a0d0e21e 3391
c17cdb72
NC
3392=for Pod::Functions register your socket as a server
3393
3b10bc60 3394Does the same thing that the listen(2) system call does. Returns true if
b76cc8ba 3395it succeeded, false otherwise. See the example in
cea6626f 3396L<perlipc/"Sockets: Client/Server Communication">.
a0d0e21e
LW
3397
3398=item local EXPR
d74e8afc 3399X<local>
a0d0e21e 3400
c17cdb72
NC
3401=for Pod::Functions create a temporary value for a global variable (dynamic scoping)
3402
19799a22 3403You really probably want to be using C<my> instead, because C<local> isn't
b76cc8ba 3404what most people think of as "local". See
13a2d996 3405L<perlsub/"Private Variables via my()"> for details.
2b5ab1e7 3406
5a964f20
TC
3407A local modifies the listed variables to be local to the enclosing
3408block, file, or eval. If more than one value is listed, the list must
3409be placed in parentheses. See L<perlsub/"Temporary Values via local()">
3410for details, including issues with tied arrays and hashes.
a0d0e21e 3411
d361fafa
VP
3412The C<delete local EXPR> construct can also be used to localize the deletion
3413of array/hash elements to the current block.
3414See L<perlsub/"Localized deletion of elements of composite types">.
3415
a0d0e21e 3416=item localtime EXPR
435fbc73 3417X<localtime> X<ctime>
a0d0e21e 3418
ba053783
AL
3419=item localtime
3420
c17cdb72
NC
3421=for Pod::Functions convert UNIX time into record or string using local time
3422
19799a22 3423Converts a time as returned by the time function to a 9-element list
5f05dabc 3424with the time analyzed for the local time zone. Typically used as
a0d0e21e
LW
3425follows:
3426
54310121 3427 # 0 1 2 3 4 5 6 7 8
a0d0e21e 3428 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
ba053783 3429 localtime(time);
a0d0e21e 3430
8f1da26d 3431All list elements are numeric and come straight out of the C `struct
ba053783
AL
3432tm'. C<$sec>, C<$min>, and C<$hour> are the seconds, minutes, and hours
3433of the specified time.
48a26b3a 3434
8f1da26d
TC
3435C<$mday> is the day of the month and C<$mon> the month in
3436the range C<0..11>, with 0 indicating January and 11 indicating December.
ba053783 3437This makes it easy to get a month name from a list:
54310121 3438
ba053783
AL
3439 my @abbr = qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec );
3440 print "$abbr[$mon] $mday";
3441 # $mon=9, $mday=18 gives "Oct 18"
abd75f24 3442
0d3e3823 3443C<$year> contains the number of years since 1900. To get a 4-digit
570b1bb1 3444year write:
abd75f24 3445
ba053783 3446 $year += 1900;
abd75f24 3447
8f1da26d 3448To get the last two digits of the year (e.g., "01" in 2001) do:
ba053783
AL
3449
3450 $year = sprintf("%02d", $year % 100);
3451
3452C<$wday> is the day of the week, with 0 indicating Sunday and 3 indicating
3453Wednesday. C<$yday> is the day of the year, in the range C<0..364>
3454(or C<0..365> in leap years.)
3455
3456C<$isdst> is true if the specified time occurs during Daylight Saving
3457Time, false otherwise.
abd75f24 3458
e1998452 3459If EXPR is omitted, C<localtime()> uses the current time (as returned
e3176d09 3460by time(3)).
a0d0e21e 3461
48a26b3a 3462In scalar context, C<localtime()> returns the ctime(3) value:
a0d0e21e 3463
5f05dabc 3464 $now_string = localtime; # e.g., "Thu Oct 13 04:54:34 1994"
a0d0e21e 3465
391b733c
FC
3466The format of this scalar value is B<not> locale-dependent
3467but built into Perl. For GMT instead of local
3468time use the L</gmtime> builtin. See also the
8f1da26d 3469C<Time::Local> module (for converting seconds, minutes, hours, and such back to
fe86afc2
NC
3470the integer value returned by time()), and the L<POSIX> module's strftime(3)
3471and mktime(3) functions.
3472
15dbbbab 3473To get somewhat similar but locale-dependent date strings, set up your
fe86afc2
NC
3474locale environment variables appropriately (please see L<perllocale>) and
3475try for example:
a3cb178b 3476
5a964f20 3477 use POSIX qw(strftime);
2b5ab1e7 3478 $now_string = strftime "%a %b %e %H:%M:%S %Y", localtime;
fe86afc2
NC
3479 # or for GMT formatted appropriately for your locale:
3480 $now_string = strftime "%a %b %e %H:%M:%S %Y", gmtime;
a3cb178b
GS
3481
3482Note that the C<%a> and C<%b>, the short forms of the day of the week
3483and the month of the year, may not necessarily be three characters wide.
a0d0e21e 3484
15dbbbab 3485The L<Time::gmtime> and L<Time::localtime> modules provide a convenient,
435fbc73
GS
3486by-name access mechanism to the gmtime() and localtime() functions,
3487respectively.
3488
3489For a comprehensive date and time representation look at the
3490L<DateTime> module on CPAN.
3491
ea9eb35a
BJ
3492Portability issues: L<perlport/localtime>.
3493
07698885 3494=item lock THING
d74e8afc 3495X<lock>
19799a22 3496
d9b04284 3497=for Pod::Functions +5.005 get a thread lock on a variable, subroutine, or method
c17cdb72 3498
15dbbbab 3499This function places an advisory lock on a shared variable or referenced
03730085 3500object contained in I<THING> until the lock goes out of scope.
a6d5524e 3501
904028df 3502The value returned is the scalar itself, if the argument is a scalar, or a
f79aa60b 3503reference, if the argument is a hash, array or subroutine.
904028df 3504
f3a23afb 3505lock() is a "weak keyword" : this means that if you've defined a function
67408cae 3506by this name (before any calls to it), that function will be called
7b043ca5
RGS
3507instead. If you are not under C<use threads::shared> this does nothing.
3508See L<threads::shared>.
19799a22 3509
a0d0e21e 3510=item log EXPR
d74e8afc 3511X<log> X<logarithm> X<e> X<ln> X<base>
a0d0e21e 3512
54310121 3513=item log
bbce6d69 3514
c17cdb72
NC
3515=for Pod::Functions retrieve the natural logarithm for a number
3516
2b5ab1e7 3517Returns the natural logarithm (base I<e>) of EXPR. If EXPR is omitted,
15dbbbab
FC
3518returns the log of C<$_>. To get the
3519log of another base, use basic algebra:
19799a22 3520The base-N log of a number is equal to the natural log of that number
2b5ab1e7
TC
3521divided by the natural log of N. For example:
3522
3523 sub log10 {
a9a5a0dc
VP
3524 my $n = shift;
3525 return log($n)/log(10);
b76cc8ba 3526 }
2b5ab1e7
TC
3527
3528See also L</exp> for the inverse operation.
a0d0e21e 3529
7ded94be 3530=item lstat FILEHANDLE
d74e8afc 3531X<lstat>
a0d0e21e 3532
7ded94be
FC
3533=item lstat EXPR
3534
3535=item lstat DIRHANDLE
3536
54310121 3537=item lstat
bbce6d69 3538
c17cdb72
NC
3539=for Pod::Functions stat a symbolic link
3540
19799a22 3541Does the same thing as the C<stat> function (including setting the
5a964f20
TC
3542special C<_> filehandle) but stats a symbolic link instead of the file
3543the symbolic link points to. If symbolic links are unimplemented on
c837d5b4
DP
3544your system, a normal C<stat> is done. For much more detailed
3545information, please see the documentation for C<stat>.
a0d0e21e 3546
7660c0ab 3547If EXPR is omitted, stats C<$_>.
bbce6d69 3548
ea9eb35a
BJ
3549Portability issues: L<perlport/lstat>.
3550
a0d0e21e
LW
3551=item m//
3552
c17cdb72
NC
3553=for Pod::Functions match a string with a regular expression pattern
3554
9f4b9cd0 3555The match operator. See L<perlop/"Regexp Quote-Like Operators">.
a0d0e21e
LW
3556
3557=item map BLOCK LIST
d74e8afc 3558X<map>
a0d0e21e
LW
3559
3560=item map EXPR,LIST
3561
c17cdb72
NC
3562=for Pod::Functions apply a change to a list to get back a new list with the changes
3563
19799a22
GS
3564Evaluates the BLOCK or EXPR for each element of LIST (locally setting
3565C<$_> to each element) and returns the list value composed of the
3566results of each such evaluation. In scalar context, returns the
3567total number of elements so generated. Evaluates BLOCK or EXPR in
3568list context, so each element of LIST may produce zero, one, or
3569more elements in the returned value.
dd99ebda 3570
f9476272 3571 @chars = map(chr, @numbers);
a0d0e21e 3572
f9476272
AH
3573translates a list of numbers to the corresponding characters.
3574
3575 my @squares = map { $_ * $_ } @numbers;
3576
3577translates a list of numbers to their squared values.
3578
3579 my @squares = map { $_ > 5 ? ($_ * $_) : () } @numbers;
3580
3581shows that number of returned elements can differ from the number of
391b733c 3582input elements. To omit an element, return an empty list ().
f9476272
AH
3583This could also be achieved by writing
3584
3585 my @squares = map { $_ * $_ } grep { $_ > 5 } @numbers;
3586
3587which makes the intention more clear.
3588
15dbbbab
FC
3589Map always returns a list, which can be
3590assigned to a hash such that the elements
391b733c 3591become key/value pairs. See L<perldata> for more details.
a0d0e21e 3592
d8216f19 3593 %hash = map { get_a_key_for($_) => $_ } @array;
a0d0e21e
LW
3594
3595is just a funny way to write
3596
3597 %hash = ();
d8216f19 3598 foreach (@array) {
a9a5a0dc 3599 $hash{get_a_key_for($_)} = $_;
a0d0e21e
LW
3600 }
3601
be3174d2
GS
3602Note that C<$_> is an alias to the list value, so it can be used to
3603modify the elements of the LIST. While this is useful and supported,
3604it can cause bizarre results if the elements of LIST are not variables.
2b5ab1e7
TC
3605Using a regular C<foreach> loop for this purpose would be clearer in
3606most cases. See also L</grep> for an array composed of those items of
3607the original list for which the BLOCK or EXPR evaluates to true.
fb73857a 3608
a4fb8298 3609If C<$_> is lexical in the scope where the C<map> appears (because it has
d8216f19
RGS
3610been declared with C<my $_>), then, in addition to being locally aliased to
3611the list elements, C<$_> keeps being lexical inside the block; that is, it
a4fb8298
RGS
3612can't be seen from the outside, avoiding any potential side-effects.
3613
205fdb4d 3614C<{> starts both hash references and blocks, so C<map { ...> could be either
391b733c 3615the start of map BLOCK LIST or map EXPR, LIST. Because Perl doesn't look
80d38338 3616ahead for the closing C<}> it has to take a guess at which it's dealing with
391b733c
FC
3617based on what it finds just after the
3618C<{>. Usually it gets it right, but if it
205fdb4d 3619doesn't it won't realize something is wrong until it gets to the C<}> and
391b733c 3620encounters the missing (or unexpected) comma. The syntax error will be
80d38338 3621reported close to the C<}>, but you'll need to change something near the C<{>
3b10bc60 3622such as using a unary C<+> to give Perl some help:
205fdb4d 3623
3b10bc60 3624 %hash = map { "\L$_" => 1 } @array # perl guesses EXPR. wrong
3625 %hash = map { +"\L$_" => 1 } @array # perl guesses BLOCK. right
3626 %hash = map { ("\L$_" => 1) } @array # this also works
3627 %hash = map { lc($_) => 1 } @array # as does this.
3628 %hash = map +( lc($_) => 1 ), @array # this is EXPR and works!
cea6626f 3629
3b10bc60 3630 %hash = map ( lc($_), 1 ), @array # evaluates to (1, @array)
205fdb4d 3631
d8216f19 3632or to force an anon hash constructor use C<+{>:
205fdb4d 3633
3b10bc60 3634 @hashes = map +{ lc($_) => 1 }, @array # EXPR, so needs comma at end
205fdb4d 3635
3b10bc60 3636to get a list of anonymous hashes each with only one entry apiece.
205fdb4d 3637
19799a22 3638=item mkdir FILENAME,MASK
d74e8afc 3639X<mkdir> X<md> X<directory, create>
a0d0e21e 3640
5a211162
GS
3641=item mkdir FILENAME
3642
491873e5
RGS
3643=item mkdir
3644
c17cdb72
NC
3645=for Pod::Functions create a directory
3646
0591cd52 3647Creates the directory specified by FILENAME, with permissions
19799a22 3648specified by MASK (as modified by C<umask>). If it succeeds it
8f1da26d
TC
3649returns true; otherwise it returns false and sets C<$!> (errno).
3650MASK defaults to 0777 if omitted, and FILENAME defaults
3651to C<$_> if omitted.
0591cd52 3652
8f1da26d
TC
3653In general, it is better to create directories with a permissive MASK
3654and let the user modify that with their C<umask> than it is to supply
19799a22 3655a restrictive MASK and give the user no way to be more permissive.
0591cd52
NT
3656The exceptions to this rule are when the file or directory should be
3657kept private (mail files, for instance). The perlfunc(1) entry on
19799a22 3658C<umask> discusses the choice of MASK in more detail.
a0d0e21e 3659
cc1852e8
JH
3660Note that according to the POSIX 1003.1-1996 the FILENAME may have any
3661number of trailing slashes. Some operating and filesystems do not get
3662this right, so Perl automatically removes all trailing slashes to keep
3663everyone happy.
3664
80d38338 3665To recursively create a directory structure, look at
dd184578
RGS
3666the C<mkpath> function of the L<File::Path> module.
3667
a0d0e21e 3668=item msgctl ID,CMD,ARG
d74e8afc 3669X<msgctl>
a0d0e21e 3670
c17cdb72
NC
3671=for Pod::Functions SysV IPC message control operations
3672
f86cebdf 3673Calls the System V IPC function msgctl(2). You'll probably have to say
0ade1984
JH
3674
3675 use IPC::SysV;
3676
7660c0ab 3677first to get the correct constant definitions. If CMD is C<IPC_STAT>,
cf264981 3678then ARG must be a variable that will hold the returned C<msqid_ds>
951ba7fe
GS
3679structure. Returns like C<ioctl>: the undefined value for error,
3680C<"0 but true"> for zero, or the actual return value otherwise. See also
15dbbbab
FC
3681L<perlipc/"SysV IPC"> and the documentation for C<IPC::SysV> and
3682C<IPC::Semaphore>.
a0d0e21e 3683
ea9eb35a
BJ
3684Portability issues: L<perlport/msgctl>.
3685
a0d0e21e 3686=item msgget KEY,FLAGS
d74e8afc 3687X<msgget>
a0d0e21e 3688
c17cdb72
NC
3689=for Pod::Functions get SysV IPC message queue
3690
f86cebdf 3691Calls the System V IPC function msgget(2). Returns the message queue
8f1da26d 3692id, or C<undef> on error. See also
15dbbbab
FC
3693L<perlipc/"SysV IPC"> and the documentation for C<IPC::SysV> and
3694C<IPC::Msg>.
a0d0e21e 3695
ea9eb35a
BJ
3696Portability issues: L<perlport/msgget>.
3697
a0d0e21e 3698=item msgrcv ID,VAR,SIZE,TYPE,FLAGS
d74e8afc 3699X<msgrcv>
a0d0e21e 3700
c17cdb72
NC
3701=for Pod::Functions receive a SysV IPC message from a message queue
3702
a0d0e21e
LW
3703Calls the System V IPC function msgrcv to receive a message from
3704message queue ID into variable VAR with a maximum message size of
41d6edb2
JH
3705SIZE. Note that when a message is received, the message type as a
3706native long integer will be the first thing in VAR, followed by the
3707actual message. This packing may be opened with C<unpack("l! a*")>.
8f1da26d
TC
3708Taints the variable. Returns true if successful, false
3709on error. See also L<perlipc/"SysV IPC"> and the documentation for
15dbbbab 3710C<IPC::SysV> and C<IPC::SysV::Msg>.
41d6edb2 3711
ea9eb35a
BJ
3712Portability issues: L<perlport/msgrcv>.
3713
41d6edb2 3714=item msgsnd ID,MSG,FLAGS
d74e8afc 3715X<msgsnd>
41d6edb2 3716
c17cdb72
NC
3717=for Pod::Functions send a SysV IPC message to a message queue
3718
41d6edb2
JH
3719Calls the System V IPC function msgsnd to send the message MSG to the
3720message queue ID. MSG must begin with the native long integer message
8f1da26d 3721type, be followed by the length of the actual message, and then finally
41d6edb2
JH
3722the message itself. This kind of packing can be achieved with
3723C<pack("l! a*", $type, $message)>. Returns true if successful,
8f1da26d 3724false on error. See also the C<IPC::SysV>
41d6edb2 3725and C<IPC::SysV::Msg> documentation.
a0d0e21e 3726
ea9eb35a
BJ
3727Portability issues: L<perlport/msgsnd>.
3728
a0d0e21e 3729=item my EXPR
d74e8afc 3730X<my>
a0d0e21e 3731
307ea6df
JH
3732=item my TYPE EXPR
3733
1d2de774 3734=item my EXPR : ATTRS
09bef843 3735
1d2de774 3736=item my TYPE EXPR : ATTRS
307ea6df 3737
c17cdb72
NC
3738=for Pod::Functions declare and assign a local variable (lexical scoping)
3739
19799a22 3740A C<my> declares the listed variables to be local (lexically) to the
1d2de774
JH
3741enclosing block, file, or C<eval>. If more than one value is listed,
3742the list must be placed in parentheses.
307ea6df 3743
1d2de774 3744The exact semantics and interface of TYPE and ATTRS are still
15dbbbab 3745evolving. TYPE is currently bound to the use of the C<fields> pragma,
307ea6df
JH
3746and attributes are handled using the C<attributes> pragma, or starting
3747from Perl 5.8.0 also via the C<Attribute::Handlers> module. See
3748L<perlsub/"Private Variables via my()"> for details, and L<fields>,
3749L<attributes>, and L<Attribute::Handlers>.
4633a7c4 3750
a0d0e21e 3751=item next LABEL
d74e8afc 3752X<next> X<continue>
a0d0e21e
LW
3753
3754=item next
3755
c17cdb72
NC
3756=for Pod::Functions iterate a block prematurely
3757
a0d0e21e
LW
3758The C<next> command is like the C<continue> statement in C; it starts
3759the next iteration of the loop:
3760
4633a7c4 3761 LINE: while (<STDIN>) {
a9a5a0dc
VP
3762 next LINE if /^#/; # discard comments
3763 #...
a0d0e21e
LW
3764 }
3765
3766Note that if there were a C<continue> block on the above, it would get
3b10bc60 3767executed even on discarded lines. If LABEL is omitted, the command
a0d0e21e
LW
3768refers to the innermost enclosing loop.
3769
4968c1e4 3770C<next> cannot be used to exit a block which returns a value such as
8f1da26d 3771C<eval {}>, C<sub {}>, or C<do {}>, and should not be used to exit
2b5ab1e7 3772a grep() or map() operation.
4968c1e4 3773
6c1372ed
GS
3774Note that a block by itself is semantically identical to a loop
3775that executes once. Thus C<next> will exit such a block early.
3776
98293880
JH
3777See also L</continue> for an illustration of how C<last>, C<next>, and
3778C<redo> work.
1d2dff63 3779
3b10bc60 3780=item no MODULE VERSION LIST
3781X<no declarations>
3782X<unimporting>
4a66ea5a 3783
3b10bc60 3784=item no MODULE VERSION
4a66ea5a 3785
3b10bc60 3786=item no MODULE LIST
a0d0e21e 3787
3b10bc60 3788=item no MODULE
4a66ea5a 3789
c986422f
RGS
3790=item no VERSION
3791
c17cdb72
NC
3792=for Pod::Functions unimport some module symbols or semantics at compile time
3793
593b9c14 3794See the C<use> function, of which C<no> is the opposite.
a0d0e21e
LW
3795
3796=item oct EXPR
d74e8afc 3797X<oct> X<octal> X<hex> X<hexadecimal> X<binary> X<bin>
a0d0e21e 3798
54310121 3799=item oct
bbce6d69 3800
c17cdb72
NC
3801=for Pod::Functions convert a string to an octal number
3802
4633a7c4 3803Interprets EXPR as an octal string and returns the corresponding
4f19785b
WSI
3804value. (If EXPR happens to start off with C<0x>, interprets it as a
3805hex string. If EXPR starts off with C<0b>, it is interpreted as a
53305cf1 3806binary string. Leading whitespace is ignored in all three cases.)
3b10bc60 3807The following will handle decimal, binary, octal, and hex in standard
3808Perl notation:
a0d0e21e
LW
3809
3810 $val = oct($val) if $val =~ /^0/;
3811
19799a22
GS
3812If EXPR is omitted, uses C<$_>. To go the other way (produce a number
3813in octal), use sprintf() or printf():
3814
3b10bc60 3815 $dec_perms = (stat("filename"))[2] & 07777;
3816 $oct_perm_str = sprintf "%o", $perms;
19799a22
GS
3817
3818The oct() function is commonly used when a string such as C<644> needs
3b10bc60 3819to be converted into a file mode, for example. Although Perl
3820automatically converts strings into numbers as needed, this automatic
3821conversion assumes base 10.
3822
3823Leading white space is ignored without warning, as too are any trailing
3824non-digits, such as a decimal point (C<oct> only handles non-negative
3825integers, not negative integers or floating point).
a0d0e21e
LW
3826
3827=item open FILEHANDLE,EXPR
d74e8afc 3828X<open> X<pipe> X<file, open> X<fopen>
a0d0e21e 3829
68bd7414
NIS
3830=item open FILEHANDLE,MODE,EXPR
3831
3832=item open FILEHANDLE,MODE,EXPR,LIST
3833
ba964c95
T
3834=item open FILEHANDLE,MODE,REFERENCE
3835
a0d0e21e
LW
3836=item open FILEHANDLE
3837
c17cdb72
NC
3838=for Pod::Functions open a file, pipe, or descriptor
3839
a0d0e21e 3840Opens the file whose filename is given by EXPR, and associates it with
ed53a2bb
JH
3841FILEHANDLE.
3842
460b70c2
GS
3843Simple examples to open a file for reading:
3844
8f1da26d
TC
3845 open(my $fh, "<", "input.txt")
3846 or die "cannot open < input.txt: $!";
460b70c2
GS
3847
3848and for writing:
3849
8f1da26d
TC
3850 open(my $fh, ">", "output.txt")
3851 or die "cannot open > output.txt: $!";
460b70c2 3852
ed53a2bb
JH
3853(The following is a comprehensive reference to open(): for a gentler
3854introduction you may consider L<perlopentut>.)
3855
8f1da26d
TC
3856If FILEHANDLE is an undefined scalar variable (or array or hash element), a
3857new filehandle is autovivified, meaning that the variable is assigned a
3858reference to a newly allocated anonymous filehandle. Otherwise if
3859FILEHANDLE is an expression, its value is the real filehandle. (This is
3860considered a symbolic reference, so C<use strict "refs"> should I<not> be
3861in effect.)
3862
3863If EXPR is omitted, the global (package) scalar variable of the same
3864name as the FILEHANDLE contains the filename. (Note that lexical
3865variables--those declared with C<my> or C<state>--will not work for this
3866purpose; so if you're using C<my> or C<state>, specify EXPR in your
3867call to open.)
3868
3869If three (or more) arguments are specified, the open mode (including
3870optional encoding) in the second argument are distinct from the filename in
3871the third. If MODE is C<< < >> or nothing, the file is opened for input.
3872If MODE is C<< > >>, the file is opened for output, with existing files
3873first being truncated ("clobbered") and nonexisting files newly created.
3874If MODE is C<<< >> >>>, the file is opened for appending, again being
3875created if necessary.
3876
3877You can put a C<+> in front of the C<< > >> or C<< < >> to
ed53a2bb 3878indicate that you want both read and write access to the file; thus
8f1da26d 3879C<< +< >> is almost always preferred for read/write updates--the
1dfd3418 3880C<< +> >> mode would clobber the file first. You can't usually use
ed53a2bb 3881either read-write mode for updating textfiles, since they have
bea6df1c 3882variable-length records. See the B<-i> switch in L<perlrun> for a
ed53a2bb 3883better approach. The file is created with permissions of C<0666>
e1020413 3884modified by the process's C<umask> value.
ed53a2bb 3885
8f1da26d
TC
3886These various prefixes correspond to the fopen(3) modes of C<r>,
3887C<r+>, C<w>, C<w+>, C<a>, and C<a+>.
5f05dabc 3888
8f1da26d
TC
3889In the one- and two-argument forms of the call, the mode and filename
3890should be concatenated (in that order), preferably separated by white
3891space. You can--but shouldn't--omit the mode in these forms when that mode
3892is C<< < >>. It is always safe to use the two-argument form of C<open> if
3893the filename argument is a known literal.
6170680b 3894
8f1da26d 3895For three or more arguments if MODE is C<|->, the filename is
ed53a2bb 3896interpreted as a command to which output is to be piped, and if MODE
8f1da26d 3897is C<-|>, the filename is interpreted as a command that pipes
3b10bc60 3898output to us. In the two-argument (and one-argument) form, one should
8f1da26d 3899replace dash (C<->) with the command.
ed53a2bb
JH
3900See L<perlipc/"Using open() for IPC"> for more examples of this.
3901(You are not allowed to C<open> to a command that pipes both in I<and>
3902out, but see L<IPC::Open2>, L<IPC::Open3>, and
96090e4f
LB
3903L<perlipc/"Bidirectional Communication with Another Process"> for
3904alternatives.)
ed53a2bb 3905
3b10bc60 3906In the form of pipe opens taking three or more arguments, if LIST is specified
ed53a2bb
JH
3907(extra arguments after the command name) then LIST becomes arguments
3908to the command invoked if the platform supports it. The meaning of
3909C<open> with more than three arguments for non-pipe modes is not yet
3b10bc60 3910defined, but experimental "layers" may give extra LIST arguments
ed53a2bb 3911meaning.
6170680b 3912
8f1da26d
TC
3913In the two-argument (and one-argument) form, opening C<< <- >>
3914or C<-> opens STDIN and opening C<< >- >> opens STDOUT.
6170680b 3915
8f1da26d
TC
3916You may (and usually should) use the three-argument form of open to specify
3917I/O layers (sometimes referred to as "disciplines") to apply to the handle
fae2c0fb 3918that affect how the input and output are processed (see L<open> and
391b733c 3919L<PerlIO> for more details). For example:
7207e29d 3920
3b10bc60 3921 open(my $fh, "<:encoding(UTF-8)", "filename")
3922 || die "can't open UTF-8 encoded filename: $!";
9124316e 3923
8f1da26d 3924opens the UTF8-encoded file containing Unicode characters;
391b733c 3925see L<perluniintro>. Note that if layers are specified in the
3b10bc60 3926three-argument form, then default layers stored in ${^OPEN} (see L<perlvar>;
6d5e88a0 3927usually set by the B<open> pragma or the switch B<-CioD>) are ignored.
c0fd9d21
FC
3928Those layers will also be ignored if you specifying a colon with no name
3929following it. In that case the default layer for the operating system
3930(:raw on Unix, :crlf on Windows) is used.
ed53a2bb 3931
80d38338 3932Open returns nonzero on success, the undefined value otherwise. If
ed53a2bb
JH
3933the C<open> involved a pipe, the return value happens to be the pid of
3934the subprocess.
cb1a09d0 3935
ed53a2bb
JH
3936If you're running Perl on a system that distinguishes between text
3937files and binary files, then you should check out L</binmode> for tips
3938for dealing with this. The key distinction between systems that need
3939C<binmode> and those that don't is their text file formats. Systems
80d38338
TC
3940like Unix, Mac OS, and Plan 9, that end lines with a single
3941character and encode that character in C as C<"\n"> do not
ed53a2bb 3942need C<binmode>. The rest need it.
cb1a09d0 3943
80d38338
TC
3944When opening a file, it's seldom a good idea to continue
3945if the request failed, so C<open> is frequently used with
19799a22 3946C<die>. Even if C<die> won't do what you want (say, in a CGI script,
80d38338
TC
3947where you want to format a suitable error message (but there are
3948modules that can help with that problem)) always check
3949the return value from opening a file.
fb73857a 3950
8f1da26d 3951As a special case the three-argument form with a read/write mode and the third
ed53a2bb 3952argument being C<undef>:
b76cc8ba 3953
460b70c2 3954 open(my $tmp, "+>", undef) or die ...
b76cc8ba 3955
8f1da26d 3956opens a filehandle to an anonymous temporary file. Also using C<< +< >>
f253e835
JH
3957works for symmetry, but you really should consider writing something
3958to the temporary file first. You will need to seek() to do the
3959reading.
b76cc8ba 3960
3b10bc60 3961Since v5.8.0, Perl has built using PerlIO by default. Unless you've
8f1da26d
TC
3962changed this (such as building Perl with C<Configure -Uuseperlio>), you can
3963open filehandles directly to Perl scalars via:
ba964c95 3964
8f1da26d 3965 open($fh, ">", \$variable) || ..
b996200f 3966
3b10bc60 3967To (re)open C<STDOUT> or C<STDERR> as an in-memory file, close it first:
b996200f
SB
3968
3969 close STDOUT;
8f1da26d
TC
3970 open(STDOUT, ">", \$variable)
3971 or die "Can't open STDOUT: $!";
ba964c95 3972
3b10bc60 3973General examples:
a0d0e21e
LW
3974
3975 $ARTICLE = 100;
8f1da26d 3976 open(ARTICLE) or die "Can't find article $ARTICLE: $!\n";
a0d0e21e
LW
3977 while (<ARTICLE>) {...
3978
8f1da26d 3979 open(LOG, ">>/usr/spool/news/twitlog"); # (log is reserved)
fb73857a 3980 # if the open fails, output is discarded
a0d0e21e 3981
8f1da26d 3982 open(my $dbase, "+<", "dbase.mine") # open for update
a9a5a0dc 3983 or die "Can't open 'dbase.mine' for update: $!";
cb1a09d0 3984
8f1da26d 3985 open(my $dbase, "+<dbase.mine") # ditto
a9a5a0dc 3986 or die "Can't open 'dbase.mine' for update: $!";
6170680b 3987
8f1da26d 3988 open(ARTICLE, "-|", "caesar <$article") # decrypt article
a9a5a0dc 3989 or die "Can't start caesar: $!";
a0d0e21e 3990
5ed4f2ec 3991 open(ARTICLE, "caesar <$article |") # ditto
a9a5a0dc 3992 or die "Can't start caesar: $!";
6170680b 3993
5ed4f2ec 3994 open(EXTRACT, "|sort >Tmp$$") # $$ is our process id
a9a5a0dc 3995 or die "Can't start sort: $!";
a0d0e21e 3996
3b10bc60 3997 # in-memory files
8f1da26d 3998 open(MEMORY, ">", \$var)
a9a5a0dc 3999 or die "Can't open memory file: $!";
80d38338 4000 print MEMORY "foo!\n"; # output will appear in $var
ba964c95 4001
a0d0e21e
LW
4002 # process argument list of files along with any includes
4003
4004 foreach $file (@ARGV) {
8f1da26d 4005 process($file, "fh00");
a0d0e21e
LW
4006 }
4007
4008 sub process {
a9a5a0dc
VP
4009 my($filename, $input) = @_;
4010 $input++; # this is a string increment
8f1da26d 4011 unless (open($input, "<", $filename)) {
a9a5a0dc
VP
4012 print STDERR "Can't open $filename: $!\n";
4013 return;
4014 }
5ed4f2ec 4015
a9a5a0dc
VP
4016 local $_;
4017 while (<$input>) { # note use of indirection
4018 if (/^#include "(.*)"/) {
4019 process($1, $input);
4020 next;
4021 }
4022 #... # whatever
5ed4f2ec 4023 }
a0d0e21e
LW
4024 }
4025
ae4c5402 4026See L<perliol> for detailed info on PerlIO.
2ce64696 4027
a0d0e21e 4028You may also, in the Bourne shell tradition, specify an EXPR beginning
8f1da26d 4029with C<< >& >>, in which case the rest of the string is interpreted
00cafafa 4030as the name of a filehandle (or file descriptor, if numeric) to be
f4084e39 4031duped (as C<dup(2)>) and opened. You may use C<&> after C<< > >>,
00cafafa
JH
4032C<<< >> >>>, C<< < >>, C<< +> >>, C<<< +>> >>>, and C<< +< >>.
4033The mode you specify should match the mode of the original filehandle.
4034(Duping a filehandle does not take into account any existing contents
391b733c
FC
4035of IO buffers.) If you use the three-argument
4036form, then you can pass either a
8f1da26d 4037number, the name of a filehandle, or the normal "reference to a glob".
6170680b 4038
eae1b76b
SB
4039Here is a script that saves, redirects, and restores C<STDOUT> and
4040C<STDERR> using various methods:
a0d0e21e
LW
4041
4042 #!/usr/bin/perl
8f1da26d
TC
4043 open(my $oldout, ">&STDOUT") or die "Can't dup STDOUT: $!";
4044 open(OLDERR, ">&", \*STDERR) or die "Can't dup STDERR: $!";
818c4caa 4045
8f1da26d
TC
4046 open(STDOUT, '>', "foo.out") or die "Can't redirect STDOUT: $!";
4047 open(STDERR, ">&STDOUT") or die "Can't dup STDOUT: $!";
a0d0e21e 4048
5ed4f2ec 4049 select STDERR; $| = 1; # make unbuffered
4050 select STDOUT; $| = 1; # make unbuffered
a0d0e21e 4051
5ed4f2ec 4052 print STDOUT "stdout 1\n"; # this works for
4053 print STDERR "stderr 1\n"; # subprocesses too
a0d0e21e 4054
8f1da26d
TC
4055 open(STDOUT, ">&", $oldout) or die "Can't dup \$oldout: $!";
4056 open(STDERR, ">&OLDERR") or die "Can't dup OLDERR: $!";
a0d0e21e
LW
4057
4058 print STDOUT "stdout 2\n";
4059 print STDERR "stderr 2\n";
4060
ef8b303f
JH
4061If you specify C<< '<&=X' >>, where C<X> is a file descriptor number
4062or a filehandle, then Perl will do an equivalent of C's C<fdopen> of
f4084e39 4063that file descriptor (and not call C<dup(2)>); this is more
ef8b303f 4064parsimonious of file descriptors. For example:
a0d0e21e 4065
00cafafa 4066 # open for input, reusing the fileno of $fd
a0d0e21e 4067 open(FILEHANDLE, "<&=$fd")
df632fdf 4068
b76cc8ba 4069or
df632fdf 4070
b76cc8ba 4071 open(FILEHANDLE, "<&=", $fd)
a0d0e21e 4072
00cafafa
JH
4073or
4074
4075 # open for append, using the fileno of OLDFH
4076 open(FH, ">>&=", OLDFH)
4077
4078or
4079
4080 open(FH, ">>&=OLDFH")
4081
ef8b303f
JH
4082Being parsimonious on filehandles is also useful (besides being
4083parsimonious) for example when something is dependent on file
4084descriptors, like for example locking using flock(). If you do just
8f1da26d
TC
4085C<< open(A, ">>&B") >>, the filehandle A will not have the same file
4086descriptor as B, and therefore flock(A) will not flock(B) nor vice
4087versa. But with C<< open(A, ">>&=B") >>, the filehandles will share
4088the same underlying system file descriptor.
4089
4090Note that under Perls older than 5.8.0, Perl uses the standard C library's'
4091fdopen() to implement the C<=> functionality. On many Unix systems,
4092fdopen() fails when file descriptors exceed a certain value, typically 255.
4093For Perls 5.8.0 and later, PerlIO is (most often) the default.
4094
4095You can see whether your Perl was built with PerlIO by running C<perl -V>
4096and looking for the C<useperlio=> line. If C<useperlio> is C<define>, you
4097have PerlIO; otherwise you don't.
4098
4099If you open a pipe on the command C<-> (that is, specify either C<|-> or C<-|>
4100with the one- or two-argument forms of C<open>),
4101an implicit C<fork> is done, so C<open> returns twice: in the parent
4102process it returns the pid
4103of the child process, and in the child process it returns (a defined) C<0>.
4104Use C<defined($pid)> or C<//> to determine whether the open was successful.
4105
4106For example, use either
4107
5f64ea7a 4108 $child_pid = open(FROM_KID, "-|") // die "can't fork: $!";
8f1da26d
TC
4109
4110or
4111 $child_pid = open(TO_KID, "|-") // die "can't fork: $!";
4112
4113followed by
4114
4115 if ($child_pid) {
4116 # am the parent:
4117 # either write TO_KID or else read FROM_KID
4118 ...
4119 wait $child_pid;
4120 } else {
4121 # am the child; use STDIN/STDOUT normally
4122 ...
4123 exit;
4124 }
4125
3b10bc60 4126The filehandle behaves normally for the parent, but I/O to that
a0d0e21e 4127filehandle is piped from/to the STDOUT/STDIN of the child process.
3b10bc60 4128In the child process, the filehandle isn't opened--I/O happens from/to
4129the new STDOUT/STDIN. Typically this is used like the normal
a0d0e21e 4130piped open when you want to exercise more control over just how the
3b10bc60 4131pipe command gets executed, such as when running setuid and
4132you don't want to have to scan shell commands for metacharacters.
4133
5b867647 4134The following blocks are more or less equivalent:
a0d0e21e
LW
4135
4136 open(FOO, "|tr '[a-z]' '[A-Z]'");
8f1da26d
TC
4137 open(FOO, "|-", "tr '[a-z]' '[A-Z]'");
4138 open(FOO, "|-") || exec 'tr', '[a-z]', '[A-Z]';
4139 open(FOO, "|-", "tr", '[a-z]', '[A-Z]');
a0d0e21e
LW
4140
4141 open(FOO, "cat -n '$file'|");
8f1da26d
TC
4142 open(FOO, "-|", "cat -n '$file'");
4143 open(FOO, "-|") || exec "cat", "-n", $file;
4144 open(FOO, "-|", "cat", "-n", $file);
b76cc8ba 4145
8f1da26d 4146The last two examples in each block show the pipe as "list form", which is
64da03b2 4147not yet supported on all platforms. A good rule of thumb is that if
8f1da26d
TC
4148your platform has a real C<fork()> (in other words, if your platform is
4149Unix, including Linux and MacOS X), you can use the list form. You would
4150want to use the list form of the pipe so you can pass literal arguments
4151to the command without risk of the shell interpreting any shell metacharacters
4152in them. However, this also bars you from opening pipes to commands
4153that intentionally contain shell metacharacters, such as:
4154
4155 open(FOO, "|cat -n | expand -4 | lpr")
4156 // die "Can't open pipeline to lpr: $!";
a0d0e21e 4157
4633a7c4
LW
4158See L<perlipc/"Safe Pipe Opens"> for more examples of this.
4159
0f897271
GS
4160Beginning with v5.6.0, Perl will attempt to flush all files opened for
4161output before any operation that may do a fork, but this may not be
4162supported on some platforms (see L<perlport>). To be safe, you may need
4163to set C<$|> ($AUTOFLUSH in English) or call the C<autoflush()> method
4164of C<IO::Handle> on any open handles.
4165
ed53a2bb
JH
4166On systems that support a close-on-exec flag on files, the flag will
4167be set for the newly opened file descriptor as determined by the value
8f1da26d 4168of C<$^F>. See L<perlvar/$^F>.
a0d0e21e 4169
0dccf244 4170Closing any piped filehandle causes the parent process to wait for the
8f1da26d 4171child to finish, then returns the status value in C<$?> and
e5218da5 4172C<${^CHILD_ERROR_NATIVE}>.
0dccf244 4173
8f1da26d
TC
4174The filename passed to the one- and two-argument forms of open() will
4175have leading and trailing whitespace deleted and normal
ed53a2bb 4176redirection characters honored. This property, known as "magic open",
5a964f20 4177can often be used to good effect. A user could specify a filename of
7660c0ab 4178F<"rsh cat file |">, or you could change certain filenames as needed:
5a964f20
TC
4179
4180 $filename =~ s/(.*\.gz)\s*$/gzip -dc < $1|/;
4181 open(FH, $filename) or die "Can't open $filename: $!";
4182
8f1da26d 4183Use the three-argument form to open a file with arbitrary weird characters in it,
6170680b 4184
8f1da26d
TC
4185 open(FOO, "<", $file)
4186 || die "can't open < $file: $!";
6170680b
IZ
4187
4188otherwise it's necessary to protect any leading and trailing whitespace:
5a964f20
TC
4189
4190 $file =~ s#^(\s)#./$1#;
8f1da26d
TC
4191 open(FOO, "< $file\0")
4192 || die "open failed: $!";
5a964f20 4193
a31a806a 4194(this may not work on some bizarre filesystems). One should
8f1da26d 4195conscientiously choose between the I<magic> and I<three-argument> form
6170680b
IZ
4196of open():
4197
8f1da26d 4198 open(IN, $ARGV[0]) || die "can't open $ARGV[0]: $!";
6170680b
IZ
4199
4200will allow the user to specify an argument of the form C<"rsh cat file |">,
80d38338 4201but will not work on a filename that happens to have a trailing space, while
6170680b 4202
8f1da26d
TC
4203 open(IN, "<", $ARGV[0])
4204 || die "can't open < $ARGV[0]: $!";
6170680b
IZ
4205
4206will have exactly the opposite restrictions.
4207
01aa884e 4208If you want a "real" C C<open> (see L<open(2)> on your system), then you
8f1da26d
TC
4209should use the C<sysopen> function, which involves no such magic (but may
4210use subtly different filemodes than Perl open(), which is mapped to C
4211fopen()). This is another way to protect your filenames from
4212interpretation. For example:
5a964f20
TC
4213
4214 use IO::Handle;
4215 sysopen(HANDLE, $path, O_RDWR|O_CREAT|O_EXCL)
a9a5a0dc 4216 or die "sysopen $path: $!";
5a964f20 4217 $oldfh = select(HANDLE); $| = 1; select($oldfh);
38762f02 4218 print HANDLE "stuff $$\n";
5a964f20
TC
4219 seek(HANDLE, 0, 0);
4220 print "File contains: ", <HANDLE>;
4221
7660c0ab
A
4222Using the constructor from the C<IO::Handle> package (or one of its
4223subclasses, such as C<IO::File> or C<IO::Socket>), you can generate anonymous
8f1da26d
TC
4224filehandles that have the scope of the variables used to hold them, then
4225automatically (but silently) close once their reference counts become
4226zero, typically at scope exit:
c07a80fd 4227
5f05dabc 4228 use IO::File;
5a964f20 4229 #...
c07a80fd 4230 sub read_myfile_munged {
a9a5a0dc 4231 my $ALL = shift;
8f1da26d 4232 # or just leave it undef to autoviv
a9a5a0dc 4233 my $handle = IO::File->new;
8f1da26d 4234 open($handle, "<", "myfile") or die "myfile: $!";
a9a5a0dc
VP
4235 $first = <$handle>
4236 or return (); # Automatically closed here.
8f1da26d
TC
4237 mung($first) or die "mung failed"; # Or here.
4238 return (first, <$handle>) if $ALL; # Or here.
4239 return $first; # Or here.
c07a80fd 4240 }
4241
8f1da26d
TC
4242B<WARNING:> The previous example has a bug because the automatic
4243close that happens when the refcount on C<handle> does not
4244properly detect and report failures. I<Always> close the handle
4245yourself and inspect the return value.
4246
4247 close($handle)
4248 || warn "close failed: $!";
4249
b687b08b 4250See L</seek> for some details about mixing reading and writing.
a0d0e21e 4251
ea9eb35a
BJ
4252Portability issues: L<perlport/open>.
4253
a0d0e21e 4254=item opendir DIRHANDLE,EXPR
d74e8afc 4255X<opendir>
a0d0e21e 4256
c17cdb72
NC
4257=for Pod::Functions open a directory
4258
19799a22
GS
4259Opens a directory named EXPR for processing by C<readdir>, C<telldir>,
4260C<seekdir>, C<rewinddir>, and C<closedir>. Returns true if successful.
a28cd5c9
NT
4261DIRHANDLE may be an expression whose value can be used as an indirect
4262dirhandle, usually the real dirhandle name. If DIRHANDLE is an undefined
4263scalar variable (or array or hash element), the variable is assigned a
8f1da26d 4264reference to a new anonymous dirhandle; that is, it's autovivified.
a0d0e21e
LW
4265DIRHANDLEs have their own namespace separate from FILEHANDLEs.
4266
bea6df1c 4267See the example at C<readdir>.
b0169937 4268
a0d0e21e 4269=item ord EXPR
d74e8afc 4270X<ord> X<encoding>
a0d0e21e 4271
54310121 4272=item ord
bbce6d69 4273
c17cdb72
NC
4274=for Pod::Functions find a character's numeric representation
4275
c9b06361 4276Returns the numeric value of the first character of EXPR.
8f1da26d
TC
4277If EXPR is an empty string, returns 0. If EXPR is omitted, uses C<$_>.
4278(Note I<character>, not byte.)
121910a4
JH
4279
4280For the reverse, see L</chr>.
2575c402 4281See L<perlunicode> for more about Unicode.
a0d0e21e 4282
77ca0c92 4283=item our EXPR
d74e8afc 4284X<our> X<global>
77ca0c92 4285
36fb85f3 4286=item our TYPE EXPR
307ea6df 4287
1d2de774 4288=item our EXPR : ATTRS
9969eac4 4289
1d2de774 4290=item our TYPE EXPR : ATTRS
307ea6df 4291
d9b04284 4292=for Pod::Functions +5.6.0 declare and assign a package variable (lexical scoping)
c17cdb72 4293
85d8b7d5 4294C<our> associates a simple name with a package variable in the current
65c680eb
MS
4295package for use within the current scope. When C<use strict 'vars'> is in
4296effect, C<our> lets you use declared global variables without qualifying
4297them with package names, within the lexical scope of the C<our> declaration.
bea6df1c 4298In this way C<our> differs from C<use vars>, which is package-scoped.
65c680eb 4299
8f1da26d
TC
4300Unlike C<my> or C<state>, which allocates storage for a variable and
4301associates a simple name with that storage for use within the current
4302scope, C<our> associates a simple name with a package (read: global)
4303variable in the current package, for use within the current lexical scope.
4304In other words, C<our> has the same scoping rules as C<my> or C<state>, but
4305does not necessarily create a variable.
65c680eb
MS
4306
4307If more than one value is listed, the list must be placed
4308in parentheses.
85d8b7d5
MS
4309
4310 our $foo;
4311 our($bar, $baz);
77ca0c92 4312
f472eb5c
GS
4313An C<our> declaration declares a global variable that will be visible
4314across its entire lexical scope, even across package boundaries. The
4315package in which the variable is entered is determined at the point
4316of the declaration, not at the point of use. This means the following
4317behavior holds:
4318
4319 package Foo;
5ed4f2ec 4320 our $bar; # declares $Foo::bar for rest of lexical scope
f472eb5c
GS
4321 $bar = 20;
4322
4323 package Bar;
5ed4f2ec 4324 print $bar; # prints 20, as it refers to $Foo::bar
f472eb5c 4325
65c680eb
MS
4326Multiple C<our> declarations with the same name in the same lexical
4327scope are allowed if they are in different packages. If they happen
4328to be in the same package, Perl will emit warnings if you have asked
4329for them, just like multiple C<my> declarations. Unlike a second
4330C<my> declaration, which will bind the name to a fresh variable, a
4331second C<our> declaration in the same package, in the same scope, is
4332merely redundant.
f472eb5c
GS
4333
4334 use warnings;
4335 package Foo;
5ed4f2ec 4336 our $bar; # declares $Foo::bar for rest of lexical scope
f472eb5c
GS
4337 $bar = 20;
4338
4339 package Bar;
5ed4f2ec 4340 our $bar = 30; # declares $Bar::bar for rest of lexical scope
4341 print $bar; # prints 30
f472eb5c 4342
5ed4f2ec 4343 our $bar; # emits warning but has no other effect
4344 print $bar; # still prints 30
f472eb5c 4345
9969eac4 4346An C<our> declaration may also have a list of attributes associated
307ea6df
JH
4347with it.
4348
1d2de774 4349The exact semantics and interface of TYPE and ATTRS are still
bade7fbc
TC
4350evolving. TYPE is currently bound to the use of the C<fields> pragma,
4351and attributes are handled using the C<attributes> pragma, or, starting
4352from Perl 5.8.0, also via the C<Attribute::Handlers> module. See
307ea6df
JH
4353L<perlsub/"Private Variables via my()"> for details, and L<fields>,
4354L<attributes>, and L<Attribute::Handlers>.
4355
a0d0e21e 4356=item pack TEMPLATE,LIST
d74e8afc 4357X<pack>
a0d0e21e 4358
c17cdb72
NC
4359=for Pod::Functions convert a list into a binary representation
4360
2b6c5635
GS
4361Takes a LIST of values and converts it into a string using the rules
4362given by the TEMPLATE. The resulting string is the concatenation of
4363the converted values. Typically, each converted value looks
4364like its machine-level representation. For example, on 32-bit machines
3980dc9c
KW
4365an integer may be represented by a sequence of 4 bytes, which will in
4366Perl be presented as a string that's 4 characters long.
4367
4368See L<perlpacktut> for an introduction to this function.
e1b711da 4369
18529408
IZ
4370The TEMPLATE is a sequence of characters that give the order and type
4371of values, as follows:
a0d0e21e 4372
5ed4f2ec 4373 a A string with arbitrary binary data, will be null padded.
4374 A A text (ASCII) string, will be space padded.
3b10bc60 4375 Z A null-terminated (ASCIZ) string, will be null padded.
5a929a98 4376
4d0444a3
FC
4377 b A bit string (ascending bit order inside each byte,
4378 like vec()).
5ed4f2ec 4379 B A bit string (descending bit order inside each byte).
4380 h A hex string (low nybble first).
4381 H A hex string (high nybble first).
a0d0e21e 4382
5ed4f2ec 4383 c A signed char (8-bit) value.
4384 C An unsigned char (octet) value.
3b10bc60 4385 W An unsigned char value (can be greater than 255).
96e4d5b1 4386
5ed4f2ec 4387 s A signed short (16-bit) value.
4388 S An unsigned short value.
96e4d5b1 4389
5ed4f2ec 4390 l A signed long (32-bit) value.
4391 L An unsigned long value.
a0d0e21e 4392
5ed4f2ec 4393 q A signed quad (64-bit) value.
4394 Q An unsigned quad value.
4d0444a3
FC
4395 (Quads are available only if your system supports 64-bit
4396 integer values _and_ if Perl has been compiled to support
4397 those. Raises an exception otherwise.)
dae0da7a 4398
5ed4f2ec 4399 i A signed integer value.
4400 I A unsigned integer value.
4d0444a3
FC
4401 (This 'integer' is _at_least_ 32 bits wide. Its exact
4402 size depends on what a local C compiler calls 'int'.)
2b191d53 4403
5ed4f2ec 4404 n An unsigned short (16-bit) in "network" (big-endian) order.
4405 N An unsigned long (32-bit) in "network" (big-endian) order.
4406 v An unsigned short (16-bit) in "VAX" (little-endian) order.
4407 V An unsigned long (32-bit) in "VAX" (little-endian) order.
1109a392 4408
4d0444a3
FC
4409 j A Perl internal signed integer value (IV).
4410 J A Perl internal unsigned integer value (UV).
92d41999 4411
3b10bc60 4412 f A single-precision float in native format.
4413 d A double-precision float in native format.
a0d0e21e 4414
3b10bc60 4415 F A Perl internal floating-point value (NV) in native format
4416 D A float of long-double precision in native format.
4d0444a3
FC
4417 (Long doubles are available only if your system supports
4418 long double values _and_ if Perl has been compiled to
4419 support those. Raises an exception otherwise.)
92d41999 4420
5ed4f2ec 4421 p A pointer to a null-terminated string.
4422 P A pointer to a structure (fixed-length string).
a0d0e21e 4423
5ed4f2ec 4424 u A uuencoded string.
4d0444a3
FC
4425 U A Unicode character number. Encodes to a character in char-
4426 acter mode and UTF-8 (or UTF-EBCDIC in EBCDIC platforms) in
4427 byte mode.
a0d0e21e 4428
4d0444a3
FC
4429 w A BER compressed integer (not an ASN.1 BER, see perlpacktut
4430 for details). Its bytes represent an unsigned integer in
4431 base 128, most significant digit first, with as few digits
4432 as possible. Bit eight (the high bit) is set on each byte
4433 except the last.
def98dd4 4434
3b10bc60 4435 x A null byte (a.k.a ASCII NUL, "\000", chr(0))
5ed4f2ec 4436 X Back up a byte.
3b10bc60 4437 @ Null-fill or truncate to absolute position, counted from the
4438 start of the innermost ()-group.
4d0444a3
FC
4439 . Null-fill or truncate to absolute position specified by
4440 the value.
5ed4f2ec 4441 ( Start of a ()-group.
a0d0e21e 4442
3b10bc60 4443One or more modifiers below may optionally follow certain letters in the
4444TEMPLATE (the second column lists letters for which the modifier is valid):
1109a392
MHM
4445
4446 ! sSlLiI Forces native (short, long, int) sizes instead
4447 of fixed (16-/32-bit) sizes.
4448
4449 xX Make x and X act as alignment commands.
4450
4451 nNvV Treat integers as signed instead of unsigned.
4452
28be1210 4453 @. Specify position as byte offset in the internal
391b733c
FC
4454 representation of the packed string. Efficient
4455 but dangerous.
28be1210 4456
1109a392
MHM
4457 > sSiIlLqQ Force big-endian byte-order on the type.
4458 jJfFdDpP (The "big end" touches the construct.)
4459
4460 < sSiIlLqQ Force little-endian byte-order on the type.
4461 jJfFdDpP (The "little end" touches the construct.)
4462
3b10bc60 4463The C<< > >> and C<< < >> modifiers can also be used on C<()> groups
4464to force a particular byte-order on all components in that group,
4465including all its subgroups.
66c611c5 4466
5a929a98
VU
4467The following rules apply:
4468
3b10bc60 4469=over
5a929a98
VU
4470
4471=item *
4472
3b10bc60 4473Each letter may optionally be followed by a number indicating the repeat
4474count. A numeric repeat count may optionally be enclosed in brackets, as
4475in C<pack("C[80]", @arr)>. The repeat count gobbles that many values from
4476the LIST when used with all format types other than C<a>, C<A>, C<Z>, C<b>,
4477C<B>, C<h>, C<H>, C<@>, C<.>, C<x>, C<X>, and C<P>, where it means
7698aede 4478something else, described below. Supplying a C<*> for the repeat count
3b10bc60 4479instead of a number means to use however many items are left, except for:
4480
4481=over
4482
4483=item *
4484
4485C<@>, C<x>, and C<X>, where it is equivalent to C<0>.
4486
4487=item *
4488
4489<.>, where it means relative to the start of the string.
4490
4491=item *
4492
4493C<u>, where it is equivalent to 1 (or 45, which here is equivalent).
4494
4495=back
4496
4497One can replace a numeric repeat count with a template letter enclosed in
4498brackets to use the packed byte length of the bracketed template for the
4499repeat count.
4500
4501For example, the template C<x[L]> skips as many bytes as in a packed long,
4502and the template C<"$t X[$t] $t"> unpacks twice whatever $t (when
4503variable-expanded) unpacks. If the template in brackets contains alignment
4504commands (such as C<x![d]>), its packed length is calculated as if the
4505start of the template had the maximal possible alignment.
4506
4507When used with C<Z>, a C<*> as the repeat count is guaranteed to add a
4508trailing null byte, so the resulting string is always one byte longer than
4509the byte length of the item itself.
2b6c5635 4510
28be1210 4511When used with C<@>, the repeat count represents an offset from the start
3b10bc60 4512of the innermost C<()> group.
4513
4514When used with C<.>, the repeat count determines the starting position to
4515calculate the value offset as follows:
4516
4517=over
4518
4519=item *
4520
4521If the repeat count is C<0>, it's relative to the current position.
28be1210 4522
3b10bc60 4523=item *
4524
4525If the repeat count is C<*>, the offset is relative to the start of the
4526packed string.
4527
4528=item *
4529
4530And if it's an integer I<n>, the offset is relative to the start of the
8f1da26d 4531I<n>th innermost C<( )> group, or to the start of the string if I<n> is
3b10bc60 4532bigger then the group level.
4533
4534=back
28be1210 4535
951ba7fe 4536The repeat count for C<u> is interpreted as the maximal number of bytes
391b733c 4537to encode per line of output, with 0, 1 and 2 replaced by 45. The repeat
f337b084 4538count should not be more than 65.
5a929a98
VU
4539
4540=item *
4541
951ba7fe 4542The C<a>, C<A>, and C<Z> types gobble just one value, but pack it as a
3b10bc60 4543string of length count, padding with nulls or spaces as needed. When
18bdf90a 4544unpacking, C<A> strips trailing whitespace and nulls, C<Z> strips everything
8f1da26d 4545after the first null, and C<a> returns data with no stripping at all.
2b6c5635 4546
3b10bc60 4547If the value to pack is too long, the result is truncated. If it's too
4548long and an explicit count is provided, C<Z> packs only C<$count-1> bytes,
4549followed by a null byte. Thus C<Z> always packs a trailing null, except
8f1da26d 4550when the count is 0.
5a929a98
VU
4551
4552=item *
4553
3b10bc60 4554Likewise, the C<b> and C<B> formats pack a string that's that many bits long.
8f1da26d
TC
4555Each such format generates 1 bit of the result. These are typically followed
4556by a repeat count like C<B8> or C<B64>.
3b10bc60 4557
c73032f5 4558Each result bit is based on the least-significant bit of the corresponding
f337b084 4559input character, i.e., on C<ord($char)%2>. In particular, characters C<"0">
3b10bc60 4560and C<"1"> generate bits 0 and 1, as do characters C<"\000"> and C<"\001">.
c73032f5 4561
3b10bc60 4562Starting from the beginning of the input string, each 8-tuple
4563of characters is converted to 1 character of output. With format C<b>,
f337b084 4564the first character of the 8-tuple determines the least-significant bit of a
3b10bc60 4565character; with format C<B>, it determines the most-significant bit of
f337b084 4566a character.
c73032f5 4567
3b10bc60 4568If the length of the input string is not evenly divisible by 8, the
f337b084 4569remainder is packed as if the input string were padded by null characters
3b10bc60 4570at the end. Similarly during unpacking, "extra" bits are ignored.
c73032f5 4571
3b10bc60 4572If the input string is longer than needed, remaining characters are ignored.
4573
4574A C<*> for the repeat count uses all characters of the input field.
8f1da26d 4575On unpacking, bits are converted to a string of C<0>s and C<1>s.
5a929a98
VU
4576
4577=item *
4578
3b10bc60 4579The C<h> and C<H> formats pack a string that many nybbles (4-bit groups,
4580representable as hexadecimal digits, C<"0".."9"> C<"a".."f">) long.
5a929a98 4581
8f1da26d 4582For each such format, pack() generates 4 bits of result.
3b10bc60 4583With non-alphabetical characters, the result is based on the 4 least-significant
f337b084
TH
4584bits of the input character, i.e., on C<ord($char)%16>. In particular,
4585characters C<"0"> and C<"1"> generate nybbles 0 and 1, as do bytes
ce7b6f06 4586C<"\000"> and C<"\001">. For characters C<"a".."f"> and C<"A".."F">, the result
c73032f5 4587is compatible with the usual hexadecimal digits, so that C<"a"> and
8f1da26d
TC
4588C<"A"> both generate the nybble C<0xA==10>. Use only these specific hex
4589characters with this format.
c73032f5 4590
3b10bc60 4591Starting from the beginning of the template to pack(), each pair
4592of characters is converted to 1 character of output. With format C<h>, the
f337b084 4593first character of the pair determines the least-significant nybble of the
3b10bc60 4594output character; with format C<H>, it determines the most-significant
c73032f5
IZ
4595nybble.
4596
3b10bc60 4597If the length of the input string is not even, it behaves as if padded by
4598a null character at the end. Similarly, "extra" nybbles are ignored during
4599unpacking.
4600
4601If the input string is longer than needed, extra characters are ignored.
c73032f5 4602
3b10bc60 4603A C<*> for the repeat count uses all characters of the input field. For
4604unpack(), nybbles are converted to a string of hexadecimal digits.
c73032f5 4605
5a929a98
VU
4606=item *
4607
3b10bc60 4608The C<p> format packs a pointer to a null-terminated string. You are
4609responsible for ensuring that the string is not a temporary value, as that
4610could potentially get deallocated before you got around to using the packed
4611result. The C<P> format packs a pointer to a structure of the size indicated
4612by the length. A null pointer is created if the corresponding value for
4613C<p> or C<P> is C<undef>; similarly with unpack(), where a null pointer
4614unpacks into C<undef>.
5a929a98 4615
3b10bc60 4616If your system has a strange pointer size--meaning a pointer is neither as
4617big as an int nor as big as a long--it may not be possible to pack or
1109a392 4618unpack pointers in big- or little-endian byte order. Attempting to do
3b10bc60 4619so raises an exception.
1109a392 4620
5a929a98
VU
4621=item *
4622
246f24af 4623The C</> template character allows packing and unpacking of a sequence of
3b10bc60 4624items where the packed structure contains a packed item count followed by
4625the packed items themselves. This is useful when the structure you're
4626unpacking has encoded the sizes or repeat counts for some of its fields
4627within the structure itself as separate fields.
4628
4629For C<pack>, you write I<length-item>C</>I<sequence-item>, and the
391b733c 4630I<length-item> describes how the length value is packed. Formats likely
3b10bc60 4631to be of most use are integer-packing ones like C<n> for Java strings,
4632C<w> for ASN.1 or SNMP, and C<N> for Sun XDR.
4633
4634For C<pack>, I<sequence-item> may have a repeat count, in which case
4635the minimum of that and the number of available items is used as the argument
391b733c 4636for I<length-item>. If it has no repeat count or uses a '*', the number
54f961c9
PD
4637of available items is used.
4638
3b10bc60 4639For C<unpack>, an internal stack of integer arguments unpacked so far is
391b733c
FC
4640used. You write C</>I<sequence-item> and the repeat count is obtained by
4641popping off the last element from the stack. The I<sequence-item> must not
54f961c9 4642have a repeat count.
246f24af 4643
3b10bc60 4644If I<sequence-item> refers to a string type (C<"A">, C<"a">, or C<"Z">),
4645the I<length-item> is the string length, not the number of strings. With
4646an explicit repeat count for pack, the packed string is adjusted to that
4647length. For example:
246f24af 4648
4d0444a3
FC
4649 This code: gives this result:
4650
4651 unpack("W/a", "\004Gurusamy") ("Guru")
4652 unpack("a3/A A*", "007 Bond J ") (" Bond", "J")
4653 unpack("a3 x2 /A A*", "007: Bond, J.") ("Bond, J", ".")
3b10bc60 4654
4d0444a3
FC
4655 pack("n/a* w/a","hello,","world") "\000\006hello,\005world"
4656 pack("a/W2", ord("a") .. ord("z")) "2ab"
43192e07
IP
4657
4658The I<length-item> is not returned explicitly from C<unpack>.
4659
3b10bc60 4660Supplying a count to the I<length-item> format letter is only useful with
4661C<A>, C<a>, or C<Z>. Packing with a I<length-item> of C<a> or C<Z> may
4662introduce C<"\000"> characters, which Perl does not regard as legal in
4663numeric strings.
43192e07
IP
4664
4665=item *
4666
951ba7fe 4667The integer types C<s>, C<S>, C<l>, and C<L> may be
3b10bc60 4668followed by a C<!> modifier to specify native shorts or
4669longs. As shown in the example above, a bare C<l> means
4670exactly 32 bits, although the native C<long> as seen by the local C compiler
4671may be larger. This is mainly an issue on 64-bit platforms. You can
4672see whether using C<!> makes any difference this way:
4673
4674 printf "format s is %d, s! is %d\n",
4675 length pack("s"), length pack("s!");
726ea183 4676
3b10bc60 4677 printf "format l is %d, l! is %d\n",
4678 length pack("l"), length pack("l!");
ef54e1a4 4679
3b10bc60 4680
4681C<i!> and C<I!> are also allowed, but only for completeness' sake:
951ba7fe 4682they are identical to C<i> and C<I>.
ef54e1a4 4683
19799a22 4684The actual sizes (in bytes) of native shorts, ints, longs, and long
3b10bc60 4685longs on the platform where Perl was built are also available from
4686the command line:
4687
4688 $ perl -V:{short,int,long{,long}}size
4689 shortsize='2';
4690 intsize='4';
4691 longsize='4';
4692 longlongsize='8';
4693
4694or programmatically via the C<Config> module:
19799a22
GS
4695
4696 use Config;
4697 print $Config{shortsize}, "\n";
4698 print $Config{intsize}, "\n";
4699 print $Config{longsize}, "\n";
4700 print $Config{longlongsize}, "\n";
ef54e1a4 4701
3b10bc60 4702C<$Config{longlongsize}> is undefined on systems without
4703long long support.
851646ae 4704
ef54e1a4
JH
4705=item *
4706
3b10bc60 4707The integer formats C<s>, C<S>, C<i>, C<I>, C<l>, C<L>, C<j>, and C<J> are
4708inherently non-portable between processors and operating systems because
4709they obey native byteorder and endianness. For example, a 4-byte integer
47100x12345678 (305419896 decimal) would be ordered natively (arranged in and
4711handled by the CPU registers) into bytes as
61eff3bc 4712
5ed4f2ec 4713 0x12 0x34 0x56 0x78 # big-endian
4714 0x78 0x56 0x34 0x12 # little-endian
61eff3bc 4715
3b10bc60 4716Basically, Intel and VAX CPUs are little-endian, while everybody else,
4717including Motorola m68k/88k, PPC, Sparc, HP PA, Power, and Cray, are
8f1da26d
TC
4718big-endian. Alpha and MIPS can be either: Digital/Compaq uses (well, used)
4719them in little-endian mode, but SGI/Cray uses them in big-endian mode.
719a3cf5 4720
3b10bc60 4721The names I<big-endian> and I<little-endian> are comic references to the
4722egg-eating habits of the little-endian Lilliputians and the big-endian
4723Blefuscudians from the classic Jonathan Swift satire, I<Gulliver's Travels>.
4724This entered computer lingo via the paper "On Holy Wars and a Plea for
4725Peace" by Danny Cohen, USC/ISI IEN 137, April 1, 1980.
61eff3bc 4726
140cb37e 4727Some systems may have even weirder byte orders such as
61eff3bc 4728
5ed4f2ec 4729 0x56 0x78 0x12 0x34
4730 0x34 0x12 0x78 0x56
61eff3bc 4731
3b10bc60 4732You can determine your system endianness with this incantation:
ef54e1a4 4733
3b10bc60 4734 printf("%#02x ", $_) for unpack("W*", pack L=>0x12345678);
ef54e1a4 4735
d99ad34e 4736The byteorder on the platform where Perl was built is also available
726ea183 4737via L<Config>:
ef54e1a4 4738
5ed4f2ec 4739 use Config;
3b10bc60 4740 print "$Config{byteorder}\n";
4741
4742or from the command line:
ef54e1a4 4743
3b10bc60 4744 $ perl -V:byteorder
719a3cf5 4745
3b10bc60 4746Byteorders C<"1234"> and C<"12345678"> are little-endian; C<"4321">
4747and C<"87654321"> are big-endian.
4748
4749For portably packed integers, either use the formats C<n>, C<N>, C<v>,
4750and C<V> or else use the C<< > >> and C<< < >> modifiers described
4751immediately below. See also L<perlport>.
ef54e1a4
JH
4752
4753=item *
4754
3b10bc60 4755Starting with Perl 5.9.2, integer and floating-point formats, along with
4756the C<p> and C<P> formats and C<()> groups, may all be followed by the
4757C<< > >> or C<< < >> endianness modifiers to respectively enforce big-
4758or little-endian byte-order. These modifiers are especially useful
8f1da26d 4759given how C<n>, C<N>, C<v>, and C<V> don't cover signed integers,
3b10bc60 476064-bit integers, or floating-point values.
4761
bea6df1c 4762Here are some concerns to keep in mind when using an endianness modifier:
3b10bc60 4763
4764=over
4765
4766=item *
4767
4768Exchanging signed integers between different platforms works only
4769when all platforms store them in the same format. Most platforms store
4770signed integers in two's-complement notation, so usually this is not an issue.
1109a392 4771
3b10bc60 4772=item *
1109a392 4773
3b10bc60 4774The C<< > >> or C<< < >> modifiers can only be used on floating-point
1109a392 4775formats on big- or little-endian machines. Otherwise, attempting to
3b10bc60 4776use them raises an exception.
1109a392 4777
3b10bc60 4778=item *
4779
4780Forcing big- or little-endian byte-order on floating-point values for
4781data exchange can work only if all platforms use the same
4782binary representation such as IEEE floating-point. Even if all
4783platforms are using IEEE, there may still be subtle differences. Being able
4784to use C<< > >> or C<< < >> on floating-point values can be useful,
80d38338 4785but also dangerous if you don't know exactly what you're doing.
3b10bc60 4786It is not a general way to portably store floating-point values.
4787
4788=item *
1109a392 4789
3b10bc60 4790When using C<< > >> or C<< < >> on a C<()> group, this affects
4791all types inside the group that accept byte-order modifiers,
4792including all subgroups. It is silently ignored for all other
66c611c5
MHM
4793types. You are not allowed to override the byte-order within a group
4794that already has a byte-order modifier suffix.
4795
3b10bc60 4796=back
4797
1109a392
MHM
4798=item *
4799
3b10bc60 4800Real numbers (floats and doubles) are in native machine format only.
4801Due to the multiplicity of floating-point formats and the lack of a
4802standard "network" representation for them, no facility for interchange has been
4803made. This means that packed floating-point data written on one machine
4804may not be readable on another, even if both use IEEE floating-point
4805arithmetic (because the endianness of the memory representation is not part
851646ae 4806of the IEEE spec). See also L<perlport>.
5a929a98 4807
3b10bc60 4808If you know I<exactly> what you're doing, you can use the C<< > >> or C<< < >>
4809modifiers to force big- or little-endian byte-order on floating-point values.
1109a392 4810
3b10bc60 4811Because Perl uses doubles (or long doubles, if configured) internally for
4812all numeric calculation, converting from double into float and thence
4813to double again loses precision, so C<unpack("f", pack("f", $foo)>)
4814will not in general equal $foo.
5a929a98 4815
851646ae
JH
4816=item *
4817
3b10bc60 4818Pack and unpack can operate in two modes: character mode (C<C0> mode) where
4819the packed string is processed per character, and UTF-8 mode (C<U0> mode)
f337b084 4820where the packed string is processed in its UTF-8-encoded Unicode form on
391b733c
FC
4821a byte-by-byte basis. Character mode is the default
4822unless the format string starts with C<U>. You
4823can always switch mode mid-format with an explicit
3b10bc60 4824C<C0> or C<U0> in the format. This mode remains in effect until the next
4825mode change, or until the end of the C<()> group it (directly) applies to.
036b4402 4826
8f1da26d
TC
4827Using C<C0> to get Unicode characters while using C<U0> to get I<non>-Unicode
4828bytes is not necessarily obvious. Probably only the first of these
4829is what you want:
4830
4831 $ perl -CS -E 'say "\x{3B1}\x{3C9}"' |
4832 perl -CS -ne 'printf "%v04X\n", $_ for unpack("C0A*", $_)'
4833 03B1.03C9
4834 $ perl -CS -E 'say "\x{3B1}\x{3C9}"' |
4835 perl -CS -ne 'printf "%v02X\n", $_ for unpack("U0A*", $_)'
4836 CE.B1.CF.89
4837 $ perl -CS -E 'say "\x{3B1}\x{3C9}"' |
4838 perl -C0 -ne 'printf "%v02X\n", $_ for unpack("C0A*", $_)'
4839 CE.B1.CF.89
4840 $ perl -CS -E 'say "\x{3B1}\x{3C9}"' |
4841 perl -C0 -ne 'printf "%v02X\n", $_ for unpack("U0A*", $_)'
4842 C3.8E.C2.B1.C3.8F.C2.89
4843
4844Those examples also illustrate that you should not try to use
4845C<pack>/C<unpack> as a substitute for the L<Encode> module.
4846
036b4402
GS
4847=item *
4848
3b10bc60 4849You must yourself do any alignment or padding by inserting, for example,
4850enough C<"x">es while packing. There is no way for pack() and unpack()
4851to know where characters are going to or coming from, so they
4852handle their output and input as flat sequences of characters.
851646ae 4853
17f4a12d
IZ
4854=item *
4855
3b10bc60 4856A C<()> group is a sub-TEMPLATE enclosed in parentheses. A group may
4857take a repeat count either as postfix, or for unpack(), also via the C</>
4858template character. Within each repetition of a group, positioning with
391b733c 4859C<@> starts over at 0. Therefore, the result of
49704364 4860
3b10bc60 4861 pack("@1A((@2A)@3A)", qw[X Y Z])
49704364 4862
3b10bc60 4863is the string C<"\0X\0\0YZ">.
49704364 4864
18529408
IZ
4865=item *
4866
3b10bc60 4867C<x> and C<X> accept the C<!> modifier to act as alignment commands: they
4868jump forward or back to the closest position aligned at a multiple of C<count>
391b733c 4869characters. For example, to pack() or unpack() a C structure like
666f95b9 4870
3b10bc60 4871 struct {
4872 char c; /* one signed, 8-bit character */
4873 double d;
4874 char cc[2];
4875 }
4876
4877one may need to use the template C<c x![d] d c[2]>. This assumes that
4878doubles must be aligned to the size of double.
4879
4880For alignment commands, a C<count> of 0 is equivalent to a C<count> of 1;
4881both are no-ops.
666f95b9 4882
62f95557
IZ
4883=item *
4884
3b10bc60 4885C<n>, C<N>, C<v> and C<V> accept the C<!> modifier to
4886represent signed 16-/32-bit integers in big-/little-endian order.
4887This is portable only when all platforms sharing packed data use the
4888same binary representation for signed integers; for example, when all
4889platforms use two's-complement representation.
068bd2e7
MHM
4890
4891=item *
4892
3b10bc60 4893Comments can be embedded in a TEMPLATE using C<#> through the end of line.
4894White space can separate pack codes from each other, but modifiers and
4895repeat counts must follow immediately. Breaking complex templates into
4896individual line-by-line components, suitably annotated, can do as much to
4897improve legibility and maintainability of pack/unpack formats as C</x> can
4898for complicated pattern matches.
17f4a12d 4899
2b6c5635
GS
4900=item *
4901
bea6df1c 4902If TEMPLATE requires more arguments than pack() is given, pack()
cf264981 4903assumes additional C<""> arguments. If TEMPLATE requires fewer arguments
3b10bc60 4904than given, extra arguments are ignored.
2b6c5635 4905
5a929a98 4906=back
a0d0e21e
LW
4907
4908Examples:
4909
f337b084 4910 $foo = pack("WWWW",65,66,67,68);
a0d0e21e 4911 # foo eq "ABCD"
f337b084 4912 $foo = pack("W4",65,66,67,68);
a0d0e21e 4913 # same thing
f337b084
TH
4914 $foo = pack("W4",0x24b6,0x24b7,0x24b8,0x24b9);
4915 # same thing with Unicode circled letters.
a0ed51b3 4916 $foo = pack("U4",0x24b6,0x24b7,0x24b8,0x24b9);
391b733c 4917 # same thing with Unicode circled letters. You don't get the
4d0444a3
FC
4918 # UTF-8 bytes because the U at the start of the format caused
4919 # a switch to U0-mode, so the UTF-8 bytes get joined into
4920 # characters
f337b084
TH
4921 $foo = pack("C0U4",0x24b6,0x24b7,0x24b8,0x24b9);
4922 # foo eq "\xe2\x92\xb6\xe2\x92\xb7\xe2\x92\xb8\xe2\x92\xb9"
4d0444a3
FC
4923 # This is the UTF-8 encoding of the string in the
4924 # previous example
a0d0e21e
LW
4925
4926 $foo = pack("ccxxcc",65,66,67,68);
4927 # foo eq "AB\0\0CD"
4928
3b10bc60 4929 # NOTE: The examples above featuring "W" and "c" are true
9ccd05c0 4930 # only on ASCII and ASCII-derived systems such as ISO Latin 1
3b10bc60 4931 # and UTF-8. On EBCDIC systems, the first example would be
4932 # $foo = pack("WWWW",193,194,195,196);
9ccd05c0 4933
a0d0e21e 4934 $foo = pack("s2",1,2);
ce7b6f06
KW
4935 # "\001\000\002\000" on little-endian
4936 # "\000\001\000\002" on big-endian
a0d0e21e
LW
4937
4938 $foo = pack("a4","abcd","x","y","z");
4939 # "abcd"
4940
4941 $foo = pack("aaaa","abcd","x","y","z");
4942 # "axyz"
4943
4944 $foo = pack("a14","abcdefg");
4945 # "abcdefg\0\0\0\0\0\0\0"
4946
4947 $foo = pack("i9pl", gmtime);
4948 # a real struct tm (on my system anyway)
4949
5a929a98
VU
4950 $utmp_template = "Z8 Z8 Z16 L";
4951 $utmp = pack($utmp_template, @utmp1);
4952 # a struct utmp (BSDish)
4953
4954 @utmp2 = unpack($utmp_template, $utmp);
4955 # "@utmp1" eq "@utmp2"
4956
a0d0e21e 4957 sub bintodec {
a9a5a0dc 4958 unpack("N", pack("B32", substr("0" x 32 . shift, -32)));
a0d0e21e
LW
4959 }
4960
851646ae
JH
4961 $foo = pack('sx2l', 12, 34);
4962 # short 12, two zero bytes padding, long 34
4963 $bar = pack('s@4l', 12, 34);
4964 # short 12, zero fill to position 4, long 34
4965 # $foo eq $bar
28be1210
TH
4966 $baz = pack('s.l', 12, 4, 34);
4967 # short 12, zero fill to position 4, long 34
851646ae 4968
1109a392
MHM
4969 $foo = pack('nN', 42, 4711);
4970 # pack big-endian 16- and 32-bit unsigned integers
4971 $foo = pack('S>L>', 42, 4711);
4972 # exactly the same
4973 $foo = pack('s<l<', -42, 4711);
4974 # pack little-endian 16- and 32-bit signed integers
66c611c5
MHM
4975 $foo = pack('(sl)<', -42, 4711);
4976 # exactly the same
1109a392 4977
5a929a98 4978The same template may generally also be used in unpack().
a0d0e21e 4979
8f1da26d
TC
4980=item package NAMESPACE
4981
6fa4d285
DG
4982=item package NAMESPACE VERSION
4983X<package> X<module> X<namespace> X<version>
4984
8f1da26d 4985=item package NAMESPACE BLOCK
cb1a09d0 4986
4e4da3ac
Z
4987=item package NAMESPACE VERSION BLOCK
4988X<package> X<module> X<namespace> X<version>
4989
c17cdb72
NC
4990=for Pod::Functions declare a separate global namespace
4991
8f1da26d
TC
4992Declares the BLOCK or the rest of the compilation unit as being in the
4993given namespace. The scope of the package declaration is either the
4e4da3ac 4994supplied code BLOCK or, in the absence of a BLOCK, from the declaration
8f1da26d
TC
4995itself through the end of current scope (the enclosing block, file, or
4996C<eval>). That is, the forms without a BLOCK are operative through the end
4997of the current scope, just like the C<my>, C<state>, and C<our> operators.
4998All unqualified dynamic identifiers in this scope will be in the given
4999namespace, except where overridden by another C<package> declaration or
5000when they're one of the special identifiers that qualify into C<main::>,
5001like C<STDOUT>, C<ARGV>, C<ENV>, and the punctuation variables.
4e4da3ac 5002
3b10bc60 5003A package statement affects dynamic variables only, including those
5004you've used C<local> on, but I<not> lexical variables, which are created
8f1da26d 5005with C<my>, C<state>, or C<our>. Typically it would be the first
3b10bc60 5006declaration in a file included by C<require> or C<use>. You can switch into a
5007package in more than one place, since this only determines which default
5008symbol table the compiler uses for the rest of that block. You can refer to
5009identifiers in other packages than the current one by prefixing the identifier
5010with the package name and a double colon, as in C<$SomePack::var>
5011or C<ThatPack::INPUT_HANDLE>. If package name is omitted, the C<main>
5012package as assumed. That is, C<$::sail> is equivalent to
5013C<$main::sail> (as well as to C<$main'sail>, still seen in ancient
5014code, mostly from Perl 4).
5015
bd12309b 5016If VERSION is provided, C<package> sets the C<$VERSION> variable in the given
a2bff36e
DG
5017namespace to a L<version> object with the VERSION provided. VERSION must be a
5018"strict" style version number as defined by the L<version> module: a positive
5019decimal number (integer or decimal-fraction) without exponentiation or else a
5020dotted-decimal v-string with a leading 'v' character and at least three
5021components. You should set C<$VERSION> only once per package.
6fa4d285 5022
cb1a09d0
AD
5023See L<perlmod/"Packages"> for more information about packages, modules,
5024and classes. See L<perlsub> for other scoping issues.
5025
f5fa2679
NC
5026=item __PACKAGE__
5027X<__PACKAGE__>
5028
d9b04284 5029=for Pod::Functions +5.004 the current package
c17cdb72 5030
f5fa2679
NC
5031A special token that returns the name of the package in which it occurs.
5032
a0d0e21e 5033=item pipe READHANDLE,WRITEHANDLE
d74e8afc 5034X<pipe>
a0d0e21e 5035
c17cdb72
NC
5036=for Pod::Functions open a pair of connected filehandles
5037
a0d0e21e
LW
5038Opens a pair of connected pipes like the corresponding system call.
5039Note that if you set up a loop of piped processes, deadlock can occur
5040unless you are very careful. In addition, note that Perl's pipes use
9124316e 5041IO buffering, so you may need to set C<$|> to flush your WRITEHANDLE
a0d0e21e
LW
5042after each command, depending on the application.
5043
96090e4f
LB
5044See L<IPC::Open2>, L<IPC::Open3>, and
5045L<perlipc/"Bidirectional Communication with Another Process">
4633a7c4
LW
5046for examples of such things.
5047
3b10bc60 5048On systems that support a close-on-exec flag on files, that flag is set
5049on all newly opened file descriptors whose C<fileno>s are I<higher> than
5050the current value of $^F (by default 2 for C<STDERR>). See L<perlvar/$^F>.
4771b018 5051
532eee96 5052=item pop ARRAY
d74e8afc 5053X<pop> X<stack>
a0d0e21e 5054
f5a93a43
TC
5055=item pop EXPR
5056
54310121 5057=item pop
28757baa 5058
c17cdb72
NC
5059=for Pod::Functions remove the last element from an array and return it
5060
a0d0e21e 5061Pops and returns the last value of the array, shortening the array by
cd7f9af7 5062one element.
a0d0e21e 5063
3b10bc60 5064Returns the undefined value if the array is empty, although this may also
5065happen at other times. If ARRAY is omitted, pops the C<@ARGV> array in the
5066main program, but the C<@_> array in subroutines, just like C<shift>.
a0d0e21e 5067
f5a93a43
TC
5068Starting with Perl 5.14, C<pop> can take a scalar EXPR, which must hold a
5069reference to an unblessed array. The argument will be dereferenced
5070automatically. This aspect of C<pop> is considered highly experimental.
5071The exact behaviour may change in a future version of Perl.
cba5a3b0 5072
bade7fbc
TC
5073To avoid confusing would-be users of your code who are running earlier
5074versions of Perl with mysterious syntax errors, put this sort of thing at
5075the top of your file to signal that your code will work I<only> on Perls of
5076a recent vintage:
5077
5078 use 5.014; # so push/pop/etc work on scalars (experimental)
5079
a0d0e21e 5080=item pos SCALAR
d74e8afc 5081X<pos> X<match, position>
a0d0e21e 5082
54310121 5083=item pos
bbce6d69 5084
c17cdb72
NC
5085=for Pod::Functions find or set the offset for the last/next m//g search
5086
7664c618 5087Returns the offset of where the last C<m//g> search left off for the
5088variable in question (C<$_> is used when the variable is not
391b733c 5089specified). Note that 0 is a valid match offset. C<undef> indicates
7664c618 5090that the search position is reset (usually due to match failure, but
5091can also be because no match has yet been run on the scalar).
5092
5093C<pos> directly accesses the location used by the regexp engine to
5094store the offset, so assigning to C<pos> will change that offset, and
5095so will also influence the C<\G> zero-width assertion in regular
391b733c 5096expressions. Both of these effects take place for the next match, so
7664c618 5097you can't affect the position with C<pos> during the current match,
5098such as in C<(?{pos() = 5})> or C<s//pos() = 5/e>.
5099
f9179917
FC
5100Setting C<pos> also resets the I<matched with zero-length> flag, described
5101under L<perlre/"Repeated Patterns Matching a Zero-length Substring">.
5102
7664c618 5103Because a failed C<m//gc> match doesn't reset the offset, the return
5104from C<pos> won't change either in this case. See L<perlre> and
44a8e56a 5105L<perlop>.
a0d0e21e
LW
5106
5107=item print FILEHANDLE LIST
d74e8afc 5108X<print>
a0d0e21e 5109
dee33c94
TC
5110=item print FILEHANDLE
5111
a0d0e21e
LW
5112=item print LIST
5113
5114=item print
5115
c17cdb72
NC
5116=for Pod::Functions output a list to a filehandle
5117
19799a22 5118Prints a string or a list of strings. Returns true if successful.
dee33c94
TC
5119FILEHANDLE may be a scalar variable containing the name of or a reference
5120to the filehandle, thus introducing one level of indirection. (NOTE: If
5121FILEHANDLE is a variable and the next token is a term, it may be
5122misinterpreted as an operator unless you interpose a C<+> or put
391b733c 5123parentheses around the arguments.) If FILEHANDLE is omitted, prints to the
8f1da26d
TC
5124last selected (see L</select>) output handle. If LIST is omitted, prints
5125C<$_> to the currently selected output handle. To use FILEHANDLE alone to
5126print the content of C<$_> to it, you must use a real filehandle like
5127C<FH>, not an indirect one like C<$fh>. To set the default output handle
5128to something other than STDOUT, use the select operation.
5129
5130The current value of C<$,> (if any) is printed between each LIST item. The
5131current value of C<$\> (if any) is printed after the entire LIST has been
5132printed. Because print takes a LIST, anything in the LIST is evaluated in
5133list context, including any subroutines whose return lists you pass to
5134C<print>. Be careful not to follow the print keyword with a left
5135parenthesis unless you want the corresponding right parenthesis to
5136terminate the arguments to the print; put parentheses around all arguments
5137(or interpose a C<+>, but that doesn't look as good).
5138
5139If you're storing handles in an array or hash, or in general whenever
5140you're using any expression more complex than a bareword handle or a plain,
5141unsubscripted scalar variable to retrieve it, you will have to use a block
5142returning the filehandle value instead, in which case the LIST may not be
5143omitted:
4633a7c4
LW
5144
5145 print { $files[$i] } "stuff\n";
5146 print { $OK ? STDOUT : STDERR } "stuff\n";
5147
785fd561
DG
5148Printing to a closed pipe or socket will generate a SIGPIPE signal. See
5149L<perlipc> for more on signal handling.
5150
5f05dabc 5151=item printf FILEHANDLE FORMAT, LIST
d74e8afc 5152X<printf>
a0d0e21e 5153
dee33c94
TC
5154=item printf FILEHANDLE
5155
5f05dabc 5156=item printf FORMAT, LIST
a0d0e21e 5157
dee33c94
TC
5158=item printf
5159
c17cdb72
NC
5160=for Pod::Functions output a formatted list to a filehandle
5161
7660c0ab 5162Equivalent to C<print FILEHANDLE sprintf(FORMAT, LIST)>, except that C<$\>
dee33c94 5163(the output record separator) is not appended. The first argument of the
391b733c 5164list will be interpreted as the C<printf> format. See
01aa884e 5165L<sprintf|/sprintf FORMAT, LIST> for an
391b733c 5166explanation of the format argument. If you omit the LIST, C<$_> is used;
dee33c94 5167to use FILEHANDLE without a LIST, you must use a real filehandle like
66cbab2c
KW
5168C<FH>, not an indirect one like C<$fh>. If C<use locale> (including
5169C<use locale ':not_characters'>) is in effect and
dee33c94 5170POSIX::setlocale() has been called, the character used for the decimal
3b10bc60 5171separator in formatted floating-point numbers is affected by the LC_NUMERIC
dee33c94 5172locale setting. See L<perllocale> and L<POSIX>.
a0d0e21e 5173
19799a22
GS
5174Don't fall into the trap of using a C<printf> when a simple
5175C<print> would do. The C<print> is more efficient and less
28757baa 5176error prone.
5177
da0045b7 5178=item prototype FUNCTION
d74e8afc 5179X<prototype>
da0045b7 5180
d9b04284 5181=for Pod::Functions +5.002 get the prototype (if any) of a subroutine
c17cdb72 5182
da0045b7 5183Returns the prototype of a function as a string (or C<undef> if the
5f05dabc 5184function has no prototype). FUNCTION is a reference to, or the name of,
5185the function whose prototype you want to retrieve.
da0045b7 5186
2b5ab1e7 5187If FUNCTION is a string starting with C<CORE::>, the rest is taken as a
e1020413 5188name for a Perl builtin. If the builtin is not I<overridable> (such as
0a2ca743
RGS
5189C<qw//>) or if its arguments cannot be adequately expressed by a prototype
5190(such as C<system>), prototype() returns C<undef>, because the builtin
5191does not really behave like a Perl function. Otherwise, the string
5192describing the equivalent prototype is returned.
b6c543e3 5193
532eee96 5194=item push ARRAY,LIST
1dc8ecb8 5195X<push> X<stack>
a0d0e21e 5196
f5a93a43
TC
5197=item push EXPR,LIST
5198
c17cdb72
NC
5199=for Pod::Functions append one or more elements to an array
5200
8f1da26d
TC
5201Treats ARRAY as a stack by appending the values of LIST to the end of
5202ARRAY. The length of ARRAY increases by the length of LIST. Has the same
5203effect as
a0d0e21e
LW
5204
5205 for $value (LIST) {
a9a5a0dc 5206 $ARRAY[++$#ARRAY] = $value;
a0d0e21e
LW
5207 }
5208
cde9c211
SP
5209but is more efficient. Returns the number of elements in the array following
5210the completed C<push>.
a0d0e21e 5211
f5a93a43
TC
5212Starting with Perl 5.14, C<push> can take a scalar EXPR, which must hold a
5213reference to an unblessed array. The argument will be dereferenced
5214automatically. This aspect of C<push> is considered highly experimental.
5215The exact behaviour may change in a future version of Perl.
cba5a3b0 5216
bade7fbc
TC
5217To avoid confusing would-be users of your code who are running earlier
5218versions of Perl with mysterious syntax errors, put this sort of thing at
5219the top of your file to signal that your code will work I<only> on Perls of
5220a recent vintage:
5221
5222 use 5.014; # so push/pop/etc work on scalars (experimental)
5223
a0d0e21e
LW
5224=item q/STRING/
5225
c17cdb72
NC
5226=for Pod::Functions singly quote a string
5227
a0d0e21e
LW
5228=item qq/STRING/
5229
c17cdb72
NC
5230=for Pod::Functions doubly quote a string
5231
a0d0e21e
LW
5232=item qw/STRING/
5233
c17cdb72
NC
5234=for Pod::Functions quote a list of words
5235
f5fa2679
NC
5236=item qx/STRING/
5237
c17cdb72
NC
5238=for Pod::Functions backquote quote a string
5239
1d888ee3
MK
5240Generalized quotes. See L<perlop/"Quote-Like Operators">.
5241
5242=item qr/STRING/
5243
d9b04284 5244=for Pod::Functions +5.005 compile pattern
c17cdb72 5245
1d888ee3 5246Regexp-like quote. See L<perlop/"Regexp Quote-Like Operators">.
a0d0e21e
LW
5247
5248=item quotemeta EXPR
d74e8afc 5249X<quotemeta> X<metacharacter>
a0d0e21e 5250
54310121 5251=item quotemeta
bbce6d69 5252
c17cdb72
NC
5253=for Pod::Functions quote regular expression magic characters
5254
4cd68991
KW
5255Returns the value of EXPR with all the ASCII non-"word"
5256characters backslashed. (That is, all ASCII characters not matching
a034a98d
DD
5257C</[A-Za-z_0-9]/> will be preceded by a backslash in the
5258returned string, regardless of any locale settings.)
5259This is the internal function implementing
7660c0ab 5260the C<\Q> escape in double-quoted strings.
4cd68991 5261(See below for the behavior on non-ASCII code points.)
a0d0e21e 5262
7660c0ab 5263If EXPR is omitted, uses C<$_>.
bbce6d69 5264
9702b155
RGS
5265quotemeta (and C<\Q> ... C<\E>) are useful when interpolating strings into
5266regular expressions, because by default an interpolated variable will be
391b733c 5267considered a mini-regular expression. For example:
9702b155
RGS
5268
5269 my $sentence = 'The quick brown fox jumped over the lazy dog';
5270 my $substring = 'quick.*?fox';
5271 $sentence =~ s{$substring}{big bad wolf};
5272
5273Will cause C<$sentence> to become C<'The big bad wolf jumped over...'>.
5274
5275On the other hand:
5276
5277 my $sentence = 'The quick brown fox jumped over the lazy dog';
5278 my $substring = 'quick.*?fox';
5279 $sentence =~ s{\Q$substring\E}{big bad wolf};
5280
5281Or:
5282
5283 my $sentence = 'The quick brown fox jumped over the lazy dog';
5284 my $substring = 'quick.*?fox';
5285 my $quoted_substring = quotemeta($substring);
5286 $sentence =~ s{$quoted_substring}{big bad wolf};
5287
391b733c
FC
5288Will both leave the sentence as is.
5289Normally, when accepting literal string
8f1da26d 5290input from the user, quotemeta() or C<\Q> must be used.
9702b155 5291
4cd68991
KW
5292In Perl v5.14, all non-ASCII characters are quoted in non-UTF-8-encoded
5293strings, but not quoted in UTF-8 strings.
2e2b2571
KW
5294
5295Starting in Perl v5.16, Perl adopted a Unicode-defined strategy for
5296quoting non-ASCII characters; the quoting of ASCII characters is
5297unchanged.
5298
5299Also unchanged is the quoting of non-UTF-8 strings when outside the
5300scope of a C<use feature 'unicode_strings'>, which is to quote all
5301characters in the upper Latin1 range. This provides complete backwards
5302compatibility for old programs which do not use Unicode. (Note that
5303C<unicode_strings> is automatically enabled within the scope of a
5304S<C<use v5.12>> or greater.)
5305
20adcf7c
KW
5306Within the scope of C<use locale>, all non-ASCII Latin1 code points
5307are quoted whether the string is encoded as UTF-8 or not. As mentioned
5308above, locale does not affect the quoting of ASCII-range characters.
5309This protects against those locales where characters such as C<"|"> are
5310considered to be word characters.
5311
2e2b2571
KW
5312Otherwise, Perl quotes non-ASCII characters using an adaptation from
5313Unicode (see L<http://www.unicode.org/reports/tr31/>.)
5314The only code points that are quoted are those that have any of the
5315Unicode properties: Pattern_Syntax, Pattern_White_Space, White_Space,
5316Default_Ignorable_Code_Point, or General_Category=Control.
5317
5318Of these properties, the two important ones are Pattern_Syntax and
5319Pattern_White_Space. They have been set up by Unicode for exactly this
5320purpose of deciding which characters in a regular expression pattern
5321should be quoted. No character that can be in an identifier has these
5322properties.
5323
5324Perl promises, that if we ever add regular expression pattern
5325metacharacters to the dozen already defined
5326(C<\ E<verbar> ( ) [ { ^ $ * + ? .>), that we will only use ones that have the
5327Pattern_Syntax property. Perl also promises, that if we ever add
5328characters that are considered to be white space in regular expressions
5329(currently mostly affected by C</x>), they will all have the
5330Pattern_White_Space property.
5331
5332Unicode promises that the set of code points that have these two
5333properties will never change, so something that is not quoted in v5.16
5334will never need to be quoted in any future Perl release. (Not all the
5335code points that match Pattern_Syntax have actually had characters
5336assigned to them; so there is room to grow, but they are quoted
5337whether assigned or not. Perl, of course, would never use an
5338unassigned code point as an actual metacharacter.)
5339
5340Quoting characters that have the other 3 properties is done to enhance
5341the readability of the regular expression and not because they actually
5342need to be quoted for regular expression purposes (characters with the
5343White_Space property are likely to be indistinguishable on the page or
5344screen from those with the Pattern_White_Space property; and the other
5345two properties contain non-printing characters).
b29c72cb 5346
a0d0e21e 5347=item rand EXPR
d74e8afc 5348X<rand> X<random>
a0d0e21e
LW
5349
5350=item rand
5351
c17cdb72
NC
5352=for Pod::Functions retrieve the next pseudorandom number
5353
7660c0ab 5354Returns a random fractional number greater than or equal to C<0> and less
3e3baf6d 5355than the value of EXPR. (EXPR should be positive.) If EXPR is
351f3254 5356omitted, the value C<1> is used. Currently EXPR with the value C<0> is
3b10bc60 5357also special-cased as C<1> (this was undocumented before Perl 5.8.0
5358and is subject to change in future versions of Perl). Automatically calls
351f3254 5359C<srand> unless C<srand> has already been called. See also C<srand>.
a0d0e21e 5360
6063ba18
WM
5361Apply C<int()> to the value returned by C<rand()> if you want random
5362integers instead of random fractional numbers. For example,
5363
5364 int(rand(10))
5365
5366returns a random integer between C<0> and C<9>, inclusive.
5367
2f9daede 5368(Note: If your rand function consistently returns numbers that are too
a0d0e21e 5369large or too small, then your version of Perl was probably compiled
2f9daede 5370with the wrong number of RANDBITS.)
a0d0e21e 5371
9700c45b
JV
5372B<C<rand()> is not cryptographically secure. You should not rely
5373on it in security-sensitive situations.> As of this writing, a
5374number of third-party CPAN modules offer random number generators
5375intended by their authors to be cryptographically secure,
416e3a83
AMS
5376including: L<Data::Entropy>, L<Crypt::Random>, L<Math::Random::Secure>,
5377and L<Math::TrulyRandom>.
9700c45b 5378
a0d0e21e 5379=item read FILEHANDLE,SCALAR,LENGTH,OFFSET
f723aae1 5380X<read> X<file, read>
a0d0e21e
LW
5381
5382=item read FILEHANDLE,SCALAR,LENGTH
5383
c17cdb72
NC
5384=for Pod::Functions fixed-length buffered input from a filehandle
5385
9124316e
JH
5386Attempts to read LENGTH I<characters> of data into variable SCALAR
5387from the specified FILEHANDLE. Returns the number of characters
b5fe5ca2 5388actually read, C<0> at end of file, or undef if there was an error (in
b49f3be6
SG
5389the latter case C<$!> is also set). SCALAR will be grown or shrunk
5390so that the last character actually read is the last character of the
5391scalar after the read.
5392
5393An OFFSET may be specified to place the read data at some place in the
5394string other than the beginning. A negative OFFSET specifies
5395placement at that many characters counting backwards from the end of
5396the string. A positive OFFSET greater than the length of SCALAR
5397results in the string being padded to the required size with C<"\0">
5398bytes before the result of the read is appended.
5399
80d38338 5400The call is implemented in terms of either Perl's or your system's native
01aa884e
KW
5401fread(3) library function. To get a true read(2) system call, see
5402L<sysread|/sysread FILEHANDLE,SCALAR,LENGTH,OFFSET>.
9124316e
JH
5403
5404Note the I<characters>: depending on the status of the filehandle,
8f1da26d 5405either (8-bit) bytes or characters are read. By default, all
9124316e 5406filehandles operate on bytes, but for example if the filehandle has
fae2c0fb 5407been opened with the C<:utf8> I/O layer (see L</open>, and the C<open>
8f1da26d 5408pragma, L<open>), the I/O will operate on UTF8-encoded Unicode
1d714267
JH
5409characters, not bytes. Similarly for the C<:encoding> pragma:
5410in that case pretty much any characters can be read.
a0d0e21e
LW
5411
5412=item readdir DIRHANDLE
d74e8afc 5413X<readdir>
a0d0e21e 5414
c17cdb72
NC
5415=for Pod::Functions get a directory from a directory handle
5416
19799a22 5417Returns the next directory entry for a directory opened by C<opendir>.
5a964f20 5418If used in list context, returns all the rest of the entries in the
3b10bc60 5419directory. If there are no more entries, returns the undefined value in
5420scalar context and the empty list in list context.
a0d0e21e 5421
19799a22 5422If you're planning to filetest the return values out of a C<readdir>, you'd
5f05dabc 5423better prepend the directory in question. Otherwise, because we didn't
19799a22 5424C<chdir> there, it would have been testing the wrong file.
cb1a09d0 5425
b0169937
GS
5426 opendir(my $dh, $some_dir) || die "can't opendir $some_dir: $!";
5427 @dots = grep { /^\./ && -f "$some_dir/$_" } readdir($dh);
5428 closedir $dh;
cb1a09d0 5429
114c60ec
BG
5430As of Perl 5.11.2 you can use a bare C<readdir> in a C<while> loop,
5431which will set C<$_> on every iteration.
5432
5433 opendir(my $dh, $some_dir) || die;
5434 while(readdir $dh) {
5435 print "$some_dir/$_\n";
5436 }
5437 closedir $dh;
5438
bade7fbc
TC
5439To avoid confusing would-be users of your code who are running earlier
5440versions of Perl with mysterious failures, put this sort of thing at the
5441top of your file to signal that your code will work I<only> on Perls of a
5442recent vintage:
5443
5444 use 5.012; # so readdir assigns to $_ in a lone while test
5445
84902520 5446=item readline EXPR
e4b7ebf3
RGS
5447
5448=item readline
d74e8afc 5449X<readline> X<gets> X<fgets>
84902520 5450
c17cdb72
NC
5451=for Pod::Functions fetch a record from a file
5452
e4b7ebf3 5453Reads from the filehandle whose typeglob is contained in EXPR (or from
8f1da26d 5454C<*ARGV> if EXPR is not provided). In scalar context, each call reads and
80d38338 5455returns the next line until end-of-file is reached, whereupon the
0f03d336 5456subsequent call returns C<undef>. In list context, reads until end-of-file
e4b7ebf3 5457is reached and returns a list of lines. Note that the notion of "line"
80d38338 5458used here is whatever you may have defined with C<$/> or
e4b7ebf3 5459C<$INPUT_RECORD_SEPARATOR>). See L<perlvar/"$/">.
fbad3eb5 5460
0f03d336 5461When C<$/> is set to C<undef>, when C<readline> is in scalar
80d38338 5462context (i.e., file slurp mode), and when an empty file is read, it
449bc448 5463returns C<''> the first time, followed by C<undef> subsequently.
fbad3eb5 5464
61eff3bc
JH
5465This is the internal function implementing the C<< <EXPR> >>
5466operator, but you can use it directly. The C<< <EXPR> >>
84902520
TB
5467operator is discussed in more detail in L<perlop/"I/O Operators">.
5468
5a964f20 5469 $line = <STDIN>;
5ed4f2ec 5470 $line = readline(*STDIN); # same thing
5a964f20 5471
0f03d336 5472If C<readline> encounters an operating system error, C<$!> will be set
5473with the corresponding error message. It can be helpful to check
5474C<$!> when you are reading from filehandles you don't trust, such as a
5475tty or a socket. The following example uses the operator form of
5476C<readline> and dies if the result is not defined.
5477
5ed4f2ec 5478 while ( ! eof($fh) ) {
5479 defined( $_ = <$fh> ) or die "readline failed: $!";
5480 ...
5481 }
0f03d336 5482
5483Note that you have can't handle C<readline> errors that way with the
391b733c 5484C<ARGV> filehandle. In that case, you have to open each element of
0f03d336 5485C<@ARGV> yourself since C<eof> handles C<ARGV> differently.
5486
5487 foreach my $arg (@ARGV) {
5488 open(my $fh, $arg) or warn "Can't open $arg: $!";
5489
5490 while ( ! eof($fh) ) {
5491 defined( $_ = <$fh> )
5492 or die "readline failed for $arg: $!";
5493 ...
00cb5da1 5494 }
00cb5da1 5495 }
e00e4ce9 5496
a0d0e21e 5497=item readlink EXPR
d74e8afc 5498X<readlink>
a0d0e21e 5499
54310121 5500=item readlink
bbce6d69 5501
c17cdb72
NC
5502=for Pod::Functions determine where a symbolic link is pointing
5503
a0d0e21e 5504Returns the value of a symbolic link, if symbolic links are
3b10bc60 5505implemented. If not, raises an exception. If there is a system
184e9718 5506error, returns the undefined value and sets C<$!> (errno). If EXPR is
7660c0ab 5507omitted, uses C<$_>.
a0d0e21e 5508
ea9eb35a
BJ
5509Portability issues: L<perlport/readlink>.
5510
84902520 5511=item readpipe EXPR
8d7403e6
RGS
5512
5513=item readpipe
d74e8afc 5514X<readpipe>
84902520 5515
c17cdb72
NC
5516=for Pod::Functions execute a system command and collect standard output
5517
5a964f20 5518EXPR is executed as a system command.
84902520
TB
5519The collected standard output of the command is returned.
5520In scalar context, it comes back as a single (potentially
5521multi-line) string. In list context, returns a list of lines
7660c0ab 5522(however you've defined lines with C<$/> or C<$INPUT_RECORD_SEPARATOR>).
84902520
TB
5523This is the internal function implementing the C<qx/EXPR/>
5524operator, but you can use it directly. The C<qx/EXPR/>
5525operator is discussed in more detail in L<perlop/"I/O Operators">.
8d7403e6 5526If EXPR is omitted, uses C<$_>.
84902520 5527
399388f4 5528=item recv SOCKET,SCALAR,LENGTH,FLAGS
d74e8afc 5529X<recv>
a0d0e21e 5530
c17cdb72
NC
5531=for Pod::Functions receive a message over a Socket
5532
9124316e
JH
5533Receives a message on a socket. Attempts to receive LENGTH characters
5534of data into variable SCALAR from the specified SOCKET filehandle.
5535SCALAR will be grown or shrunk to the length actually read. Takes the
5536same flags as the system call of the same name. Returns the address
5537of the sender if SOCKET's protocol supports this; returns an empty
5538string otherwise. If there's an error, returns the undefined value.
5539This call is actually implemented in terms of recvfrom(2) system call.
5540See L<perlipc/"UDP: Message Passing"> for examples.
5541
5542Note the I<characters>: depending on the status of the socket, either
5543(8-bit) bytes or characters are received. By default all sockets
5544operate on bytes, but for example if the socket has been changed using
740d4bb2 5545binmode() to operate with the C<:encoding(utf8)> I/O layer (see the
8f1da26d 5546C<open> pragma, L<open>), the I/O will operate on UTF8-encoded Unicode
740d4bb2
JW
5547characters, not bytes. Similarly for the C<:encoding> pragma: in that
5548case pretty much any characters can be read.
a0d0e21e
LW
5549
5550=item redo LABEL
d74e8afc 5551X<redo>
a0d0e21e
LW
5552
5553=item redo
5554
c17cdb72
NC
5555=for Pod::Functions start this loop iteration over again
5556
a0d0e21e 5557The C<redo> command restarts the loop block without evaluating the
98293880 5558conditional again. The C<continue> block, if any, is not executed. If
a0d0e21e 5559the LABEL is omitted, the command refers to the innermost enclosing
cf264981
SP
5560loop. Programs that want to lie to themselves about what was just input
5561normally use this command:
a0d0e21e
LW
5562
5563 # a simpleminded Pascal comment stripper
5564 # (warning: assumes no { or } in strings)
4633a7c4 5565 LINE: while (<STDIN>) {
a9a5a0dc
VP
5566 while (s|({.*}.*){.*}|$1 |) {}
5567 s|{.*}| |;
5568 if (s|{.*| |) {
5569 $front = $_;
5570 while (<STDIN>) {
5571 if (/}/) { # end of comment?
5572 s|^|$front\{|;
5573 redo LINE;
5574 }
5575 }
5ed4f2ec 5576 }
a9a5a0dc 5577 print;
a0d0e21e
LW
5578 }
5579
80d38338 5580C<redo> cannot be used to retry a block that returns a value such as
8f1da26d 5581C<eval {}>, C<sub {}>, or C<do {}>, and should not be used to exit
2b5ab1e7 5582a grep() or map() operation.
4968c1e4 5583
6c1372ed
GS
5584Note that a block by itself is semantically identical to a loop
5585that executes once. Thus C<redo> inside such a block will effectively
5586turn it into a looping construct.
5587
98293880 5588See also L</continue> for an illustration of how C<last>, C<next>, and
1d2dff63
GS
5589C<redo> work.
5590
a0d0e21e 5591=item ref EXPR
d74e8afc 5592X<ref> X<reference>
a0d0e21e 5593
54310121 5594=item ref
bbce6d69 5595
c17cdb72
NC
5596=for Pod::Functions find out the type of thing being referenced
5597
8a2e0804 5598Returns a non-empty string if EXPR is a reference, the empty
391b733c 5599string otherwise. If EXPR
7660c0ab 5600is not specified, C<$_> will be used. The value returned depends on the
bbce6d69 5601type of thing the reference is a reference to.
a0d0e21e
LW
5602Builtin types include:
5603
a0d0e21e
LW
5604 SCALAR
5605 ARRAY
5606 HASH
5607 CODE
19799a22 5608 REF
a0d0e21e 5609 GLOB
19799a22 5610 LVALUE
cc10766d
RGS
5611 FORMAT
5612 IO
5613 VSTRING
5614 Regexp
a0d0e21e 5615
54310121 5616If the referenced object has been blessed into a package, then that package
19799a22 5617name is returned instead. You can think of C<ref> as a C<typeof> operator.
a0d0e21e
LW
5618
5619 if (ref($r) eq "HASH") {
a9a5a0dc 5620 print "r is a reference to a hash.\n";
54310121 5621 }
2b5ab1e7 5622 unless (ref($r)) {
a9a5a0dc 5623 print "r is not a reference at all.\n";
54310121 5624 }
a0d0e21e 5625
85dd5c8b 5626The return value C<LVALUE> indicates a reference to an lvalue that is not
391b733c
FC
5627a variable. You get this from taking the reference of function calls like
5628C<pos()> or C<substr()>. C<VSTRING> is returned if the reference points
603c58be 5629to a L<version string|perldata/"Version Strings">.
85dd5c8b
WL
5630
5631The result C<Regexp> indicates that the argument is a regular expression
5632resulting from C<qr//>.
5633
a0d0e21e
LW
5634See also L<perlref>.
5635
5636=item rename OLDNAME,NEWNAME
d74e8afc 5637X<rename> X<move> X<mv> X<ren>
a0d0e21e 5638
c17cdb72
NC
5639=for Pod::Functions change a filename
5640
19799a22
GS
5641Changes the name of a file; an existing file NEWNAME will be
5642clobbered. Returns true for success, false otherwise.
5643
2b5ab1e7
TC
5644Behavior of this function varies wildly depending on your system
5645implementation. For example, it will usually not work across file system
5646boundaries, even though the system I<mv> command sometimes compensates
5647for this. Other restrictions include whether it works on directories,
5648open files, or pre-existing files. Check L<perlport> and either the
5649rename(2) manpage or equivalent system documentation for details.
a0d0e21e 5650
dd184578
RGS
5651For a platform independent C<move> function look at the L<File::Copy>
5652module.
5653
ea9eb35a
BJ
5654Portability issues: L<perlport/rename>.
5655
16070b82 5656=item require VERSION
d74e8afc 5657X<require>
16070b82 5658
a0d0e21e
LW
5659=item require EXPR
5660
5661=item require
5662
c17cdb72
NC
5663=for Pod::Functions load in external functions from a library at runtime
5664
3b825e41
RK
5665Demands a version of Perl specified by VERSION, or demands some semantics
5666specified by EXPR or by C<$_> if EXPR is not supplied.
44dcb63b 5667
3b825e41
RK
5668VERSION may be either a numeric argument such as 5.006, which will be
5669compared to C<$]>, or a literal of the form v5.6.1, which will be compared
3b10bc60 5670to C<$^V> (aka $PERL_VERSION). An exception is raised if
3b825e41
RK
5671VERSION is greater than the version of the current Perl interpreter.
5672Compare with L</use>, which can do a similar check at compile time.
5673
5674Specifying VERSION as a literal of the form v5.6.1 should generally be
5675avoided, because it leads to misleading error messages under earlier
cf264981 5676versions of Perl that do not support this syntax. The equivalent numeric
3b825e41 5677version should be used instead.
44dcb63b 5678
5ed4f2ec 5679 require v5.6.1; # run time version check
5680 require 5.6.1; # ditto
5681 require 5.006_001; # ditto; preferred for backwards compatibility
a0d0e21e 5682
362eead3
RGS
5683Otherwise, C<require> demands that a library file be included if it
5684hasn't already been included. The file is included via the do-FILE
73c71df6
CW
5685mechanism, which is essentially just a variety of C<eval> with the
5686caveat that lexical variables in the invoking script will be invisible
5687to the included code. Has semantics similar to the following subroutine:
a0d0e21e
LW
5688
5689 sub require {
20907158
AMS
5690 my ($filename) = @_;
5691 if (exists $INC{$filename}) {
5692 return 1 if $INC{$filename};
5693 die "Compilation failed in require";
5694 }
5695 my ($realfilename,$result);
5696 ITER: {
5697 foreach $prefix (@INC) {
5698 $realfilename = "$prefix/$filename";
5699 if (-f $realfilename) {
5700 $INC{$filename} = $realfilename;
5701 $result = do $realfilename;
5702 last ITER;
5703 }
5704 }
5705 die "Can't find $filename in \@INC";
5706 }
5707 if ($@) {
5708 $INC{$filename} = undef;
5709 die $@;
5710 } elsif (!$result) {
5711 delete $INC{$filename};
5712 die "$filename did not return true value";
5713 } else {
5714 return $result;
5715 }
a0d0e21e
LW
5716 }
5717
5718Note that the file will not be included twice under the same specified
a12755f0
SB
5719name.
5720
5721The file must return true as the last statement to indicate
a0d0e21e 5722successful execution of any initialization code, so it's customary to
19799a22
GS
5723end such a file with C<1;> unless you're sure it'll return true
5724otherwise. But it's better just to put the C<1;>, in case you add more
a0d0e21e
LW
5725statements.
5726
54310121 5727If EXPR is a bareword, the require assumes a "F<.pm>" extension and
da0045b7 5728replaces "F<::>" with "F</>" in the filename for you,
54310121 5729to make it easy to load standard modules. This form of loading of
a0d0e21e
LW
5730modules does not risk altering your namespace.
5731
ee580363
GS
5732In other words, if you try this:
5733
5ed4f2ec 5734 require Foo::Bar; # a splendid bareword
ee580363 5735
b76cc8ba 5736The require function will actually look for the "F<Foo/Bar.pm>" file in the
7660c0ab 5737directories specified in the C<@INC> array.
ee580363 5738
5a964f20 5739But if you try this:
ee580363
GS
5740
5741 $class = 'Foo::Bar';
5ed4f2ec 5742 require $class; # $class is not a bareword
5a964f20 5743 #or
5ed4f2ec 5744 require "Foo::Bar"; # not a bareword because of the ""
ee580363 5745
b76cc8ba 5746The require function will look for the "F<Foo::Bar>" file in the @INC array and
19799a22 5747will complain about not finding "F<Foo::Bar>" there. In this case you can do:
ee580363
GS
5748
5749 eval "require $class";
5750
3b10bc60 5751Now that you understand how C<require> looks for files with a
a91233bf
RGS
5752bareword argument, there is a little extra functionality going on behind
5753the scenes. Before C<require> looks for a "F<.pm>" extension, it will
391b733c 5754first look for a similar filename with a "F<.pmc>" extension. If this file
a91233bf
RGS
5755is found, it will be loaded in place of any file ending in a "F<.pm>"
5756extension.
662cc546 5757
8f1da26d 5758You can also insert hooks into the import facility by putting Perl code
1c3d5054 5759directly into the @INC array. There are three forms of hooks: subroutine
8f1da26d 5760references, array references, and blessed objects.
d54b56d5
RGS
5761
5762Subroutine references are the simplest case. When the inclusion system
5763walks through @INC and encounters a subroutine, this subroutine gets
3b10bc60 5764called with two parameters, the first a reference to itself, and the
5765second the name of the file to be included (e.g., "F<Foo/Bar.pm>"). The
5766subroutine should return either nothing or else a list of up to three
5767values in the following order:
1f0bdf18
NC
5768
5769=over
5770
5771=item 1
5772
1f0bdf18
NC
5773A filehandle, from which the file will be read.
5774
cec0e1a7 5775=item 2
1f0bdf18 5776
391b733c 5777A reference to a subroutine. If there is no filehandle (previous item),
60d352b3 5778then this subroutine is expected to generate one line of source code per
8f1da26d
TC
5779call, writing the line into C<$_> and returning 1, then finally at end of
5780file returning 0. If there is a filehandle, then the subroutine will be
b8921b3e 5781called to act as a simple source filter, with the line as read in C<$_>.
60d352b3
RGS
5782Again, return 1 for each valid line, and 0 after all lines have been
5783returned.
1f0bdf18 5784
cec0e1a7 5785=item 3
1f0bdf18 5786
391b733c 5787Optional state for the subroutine. The state is passed in as C<$_[1]>. A
1f0bdf18
NC
5788reference to the subroutine itself is passed in as C<$_[0]>.
5789
5790=back
5791
5792If an empty list, C<undef>, or nothing that matches the first 3 values above
3b10bc60 5793is returned, then C<require> looks at the remaining elements of @INC.
5794Note that this filehandle must be a real filehandle (strictly a typeglob
8f1da26d
TC
5795or reference to a typeglob, whether blessed or unblessed); tied filehandles
5796will be ignored and processing will stop there.
d54b56d5
RGS
5797
5798If the hook is an array reference, its first element must be a subroutine
5799reference. This subroutine is called as above, but the first parameter is
3b10bc60 5800the array reference. This lets you indirectly pass arguments to
d54b56d5
RGS
5801the subroutine.
5802
5803In other words, you can write:
5804
5805 push @INC, \&my_sub;
5806 sub my_sub {
a9a5a0dc
VP
5807 my ($coderef, $filename) = @_; # $coderef is \&my_sub
5808 ...
d54b56d5
RGS
5809 }
5810
5811or:
5812
5813 push @INC, [ \&my_sub, $x, $y, ... ];
5814 sub my_sub {
a9a5a0dc
VP
5815 my ($arrayref, $filename) = @_;
5816 # Retrieve $x, $y, ...
5817 my @parameters = @$arrayref[1..$#$arrayref];
5818 ...
d54b56d5
RGS
5819 }
5820
cf264981 5821If the hook is an object, it must provide an INC method that will be
d54b56d5 5822called as above, the first parameter being the object itself. (Note that
92c6daad
NC
5823you must fully qualify the sub's name, as unqualified C<INC> is always forced
5824into package C<main>.) Here is a typical code layout:
d54b56d5
RGS
5825
5826 # In Foo.pm
5827 package Foo;
5828 sub new { ... }
5829 sub Foo::INC {
a9a5a0dc
VP
5830 my ($self, $filename) = @_;
5831 ...
d54b56d5
RGS
5832 }
5833
5834 # In the main program
797f796a 5835 push @INC, Foo->new(...);
d54b56d5 5836
3b10bc60 5837These hooks are also permitted to set the %INC entry
391b733c 5838corresponding to the files they have loaded. See L<perlvar/%INC>.
9ae8cd5b 5839
ee580363 5840For a yet-more-powerful import facility, see L</use> and L<perlmod>.
a0d0e21e
LW
5841
5842=item reset EXPR
d74e8afc 5843X<reset>
a0d0e21e
LW
5844
5845=item reset
5846
c17cdb72
NC
5847=for Pod::Functions clear all variables of a given name
5848
a0d0e21e 5849Generally used in a C<continue> block at the end of a loop to clear
7660c0ab 5850variables and reset C<??> searches so that they work again. The
a0d0e21e
LW
5851expression is interpreted as a list of single characters (hyphens
5852allowed for ranges). All variables and arrays beginning with one of
5853those letters are reset to their pristine state. If the expression is
3b10bc60 5854omitted, one-match searches (C<?pattern?>) are reset to match again.
5855Only resets variables or searches in the current package. Always returns
58561. Examples:
a0d0e21e 5857
5ed4f2ec 5858 reset 'X'; # reset all X variables
5859 reset 'a-z'; # reset lower case variables
5860 reset; # just reset ?one-time? searches
a0d0e21e 5861
7660c0ab 5862Resetting C<"A-Z"> is not recommended because you'll wipe out your
2b5ab1e7 5863C<@ARGV> and C<@INC> arrays and your C<%ENV> hash. Resets only package
3b10bc60 5864variables; lexical variables are unaffected, but they clean themselves
2b5ab1e7
TC
5865up on scope exit anyway, so you'll probably want to use them instead.
5866See L</my>.
a0d0e21e 5867
54310121 5868=item return EXPR
d74e8afc 5869X<return>
54310121 5870
5871=item return
5872
c17cdb72
NC
5873=for Pod::Functions get out of a function early
5874
b76cc8ba 5875Returns from a subroutine, C<eval>, or C<do FILE> with the value
5a964f20 5876given in EXPR. Evaluation of EXPR may be in list, scalar, or void
54310121 5877context, depending on how the return value will be used, and the context
01aa884e 5878may vary from one execution to the next (see L</wantarray>). If no EXPR
2b5ab1e7 5879is given, returns an empty list in list context, the undefined value in
3b10bc60 5880scalar context, and (of course) nothing at all in void context.
a0d0e21e 5881
3b10bc60 5882(In the absence of an explicit C<return>, a subroutine, eval,
5883or do FILE automatically returns the value of the last expression
2b5ab1e7 5884evaluated.)
a0d0e21e
LW
5885
5886=item reverse LIST
d74e8afc 5887X<reverse> X<rev> X<invert>
a0d0e21e 5888
c17cdb72
NC
5889=for Pod::Functions flip a string or a list
5890
5a964f20
TC
5891In list context, returns a list value consisting of the elements
5892of LIST in the opposite order. In scalar context, concatenates the
2b5ab1e7 5893elements of LIST and returns a string value with all characters
a0ed51b3 5894in the opposite order.
4633a7c4 5895
9649ed94 5896 print join(", ", reverse "world", "Hello"); # Hello, world
4633a7c4 5897
9649ed94 5898 print scalar reverse "dlrow ,", "olleH"; # Hello, world
2f9daede 5899
2d713cbd
RGS
5900Used without arguments in scalar context, reverse() reverses C<$_>.
5901
9649ed94
B
5902 $_ = "dlrow ,olleH";
5903 print reverse; # No output, list context
5904 print scalar reverse; # Hello, world
5905
437d4214 5906Note that reversing an array to itself (as in C<@a = reverse @a>) will
80d38338 5907preserve non-existent elements whenever possible, i.e., for non magical
437d4214
VP
5908arrays or tied arrays with C<EXISTS> and C<DELETE> methods.
5909
2f9daede
TP
5910This operator is also handy for inverting a hash, although there are some
5911caveats. If a value is duplicated in the original hash, only one of those
5912can be represented as a key in the inverted hash. Also, this has to
5913unwind one hash and build a whole new one, which may take some time
2b5ab1e7 5914on a large hash, such as from a DBM file.
2f9daede 5915
5ed4f2ec 5916 %by_name = reverse %by_address; # Invert the hash
a0d0e21e
LW
5917
5918=item rewinddir DIRHANDLE
d74e8afc 5919X<rewinddir>
a0d0e21e 5920
c17cdb72
NC
5921=for Pod::Functions reset directory handle
5922
a0d0e21e 5923Sets the current position to the beginning of the directory for the
19799a22 5924C<readdir> routine on DIRHANDLE.
a0d0e21e 5925
ea9eb35a
BJ
5926Portability issues: L<perlport/rewinddir>.
5927
a0d0e21e 5928=item rindex STR,SUBSTR,POSITION
d74e8afc 5929X<rindex>
a0d0e21e
LW
5930
5931=item rindex STR,SUBSTR
5932
c17cdb72
NC
5933=for Pod::Functions right-to-left substring search
5934
ff551661 5935Works just like index() except that it returns the position of the I<last>
a0d0e21e 5936occurrence of SUBSTR in STR. If POSITION is specified, returns the
ff551661 5937last occurrence beginning at or before that position.
a0d0e21e
LW
5938
5939=item rmdir FILENAME
d74e8afc 5940X<rmdir> X<rd> X<directory, remove>
a0d0e21e 5941
54310121 5942=item rmdir
bbce6d69 5943
c17cdb72
NC
5944=for Pod::Functions remove a directory
5945
974da8e5 5946Deletes the directory specified by FILENAME if that directory is
8f1da26d 5947empty. If it succeeds it returns true; otherwise it returns false and
974da8e5 5948sets C<$!> (errno). If FILENAME is omitted, uses C<$_>.
a0d0e21e 5949
e1020413 5950To remove a directory tree recursively (C<rm -rf> on Unix) look at
dd184578
RGS
5951the C<rmtree> function of the L<File::Path> module.
5952
a0d0e21e
LW
5953=item s///
5954
c17cdb72
NC
5955=for Pod::Functions replace a pattern with a string
5956
9f4b9cd0 5957The substitution operator. See L<perlop/"Regexp Quote-Like Operators">.
a0d0e21e 5958
0d863452
RH
5959=item say FILEHANDLE LIST
5960X<say>
5961
dee33c94
TC
5962=item say FILEHANDLE
5963
0d863452
RH
5964=item say LIST
5965
5966=item say
5967
d9b04284 5968=for Pod::Functions +say output a list to a filehandle, appending a newline
c17cdb72 5969
dee33c94
TC
5970Just like C<print>, but implicitly appends a newline. C<say LIST> is
5971simply an abbreviation for C<{ local $\ = "\n"; print LIST }>. To use
5972FILEHANDLE without a LIST to print the contents of C<$_> to it, you must
5973use a real filehandle like C<FH>, not an indirect one like C<$fh>.
f406c1e8 5974
4a904372
FC
5975This keyword is available only when the C<"say"> feature
5976is enabled, or when prefixed with C<CORE::>; see
8f1da26d
TC
5977L<feature>. Alternately, include a C<use v5.10> or later to the current
5978scope.
0d863452 5979
a0d0e21e 5980=item scalar EXPR
d74e8afc 5981X<scalar> X<context>
a0d0e21e 5982
c17cdb72
NC
5983=for Pod::Functions force a scalar context
5984
5a964f20 5985Forces EXPR to be interpreted in scalar context and returns the value
54310121 5986of EXPR.
cb1a09d0
AD
5987
5988 @counts = ( scalar @a, scalar @b, scalar @c );
5989
54310121 5990There is no equivalent operator to force an expression to
2b5ab1e7 5991be interpolated in list context because in practice, this is never
cb1a09d0
AD
5992needed. If you really wanted to do so, however, you could use
5993the construction C<@{[ (some expression) ]}>, but usually a simple
5994C<(some expression)> suffices.
a0d0e21e 5995
8f1da26d
TC
5996Because C<scalar> is a unary operator, if you accidentally use a
5997parenthesized list for the EXPR, this behaves as a scalar comma expression,
5998evaluating all but the last element in void context and returning the final
5999element evaluated in scalar context. This is seldom what you want.
62c18ce2
GS
6000
6001The following single statement:
6002
5ed4f2ec 6003 print uc(scalar(&foo,$bar)),$baz;
62c18ce2
GS
6004
6005is the moral equivalent of these two:
6006
5ed4f2ec 6007 &foo;
6008 print(uc($bar),$baz);
62c18ce2
GS
6009
6010See L<perlop> for more details on unary operators and the comma operator.
6011
a0d0e21e 6012=item seek FILEHANDLE,POSITION,WHENCE
d74e8afc 6013X<seek> X<fseek> X<filehandle, position>
a0d0e21e 6014
c17cdb72
NC
6015=for Pod::Functions reposition file pointer for random-access I/O
6016
19799a22 6017Sets FILEHANDLE's position, just like the C<fseek> call of C<stdio>.
8903cb82 6018FILEHANDLE may be an expression whose value gives the name of the
9124316e 6019filehandle. The values for WHENCE are C<0> to set the new position
8f1da26d
TC
6020I<in bytes> to POSITION; C<1> to set it to the current position plus
6021POSITION; and C<2> to set it to EOF plus POSITION, typically
6022negative. For WHENCE you may use the constants C<SEEK_SET>,
9124316e 6023C<SEEK_CUR>, and C<SEEK_END> (start of the file, current position, end
8f1da26d 6024of the file) from the L<Fcntl> module. Returns C<1> on success, false
9124316e
JH
6025otherwise.
6026
6027Note the I<in bytes>: even if the filehandle has been set to
740d4bb2 6028operate on characters (for example by using the C<:encoding(utf8)> open
fae2c0fb 6029layer), tell() will return byte offsets, not character offsets
9124316e 6030(because implementing that would render seek() and tell() rather slow).
8903cb82 6031
3b10bc60 6032If you want to position the file for C<sysread> or C<syswrite>, don't use
6033C<seek>, because buffering makes its effect on the file's read-write position
19799a22 6034unpredictable and non-portable. Use C<sysseek> instead.
a0d0e21e 6035
2b5ab1e7
TC
6036Due to the rules and rigors of ANSI C, on some systems you have to do a
6037seek whenever you switch between reading and writing. Amongst other
6038things, this may have the effect of calling stdio's clearerr(3).
6039A WHENCE of C<1> (C<SEEK_CUR>) is useful for not moving the file position:
cb1a09d0
AD
6040
6041 seek(TEST,0,1);
6042
6043This is also useful for applications emulating C<tail -f>. Once you hit
3b10bc60 6044EOF on your read and then sleep for a while, you (probably) have to stick in a
6045dummy seek() to reset things. The C<seek> doesn't change the position,
8903cb82 6046but it I<does> clear the end-of-file condition on the handle, so that the
3b10bc60 6047next C<< <FILE> >> makes Perl try again to read something. (We hope.)
cb1a09d0 6048
3b10bc60 6049If that doesn't work (some I/O implementations are particularly
6050cantankerous), you might need something like this:
cb1a09d0
AD
6051
6052 for (;;) {
a9a5a0dc 6053 for ($curpos = tell(FILE); $_ = <FILE>;
f86cebdf 6054 $curpos = tell(FILE)) {
a9a5a0dc
VP
6055 # search for some stuff and put it into files
6056 }
6057 sleep($for_a_while);
6058 seek(FILE, $curpos, 0);
cb1a09d0
AD
6059 }
6060
a0d0e21e 6061=item seekdir DIRHANDLE,POS
d74e8afc 6062X<seekdir>
a0d0e21e 6063
c17cdb72
NC
6064=for Pod::Functions reposition directory pointer
6065
19799a22 6066Sets the current position for the C<readdir> routine on DIRHANDLE. POS
cf264981
SP
6067must be a value returned by C<telldir>. C<seekdir> also has the same caveats
6068about possible directory compaction as the corresponding system library
a0d0e21e
LW
6069routine.
6070
6071=item select FILEHANDLE
d74e8afc 6072X<select> X<filehandle, default>
a0d0e21e
LW
6073
6074=item select
6075
c17cdb72
NC
6076=for Pod::Functions reset default output or do I/O multiplexing
6077
b5dffda6
RGS
6078Returns the currently selected filehandle. If FILEHANDLE is supplied,
6079sets the new current default filehandle for output. This has two
8f1da26d 6080effects: first, a C<write> or a C<print> without a filehandle
a0d0e21e 6081default to this FILEHANDLE. Second, references to variables related to
8f1da26d
TC
6082output will refer to this output channel.
6083
6084For example, to set the top-of-form format for more than one
6085output channel, you might do the following:
a0d0e21e
LW
6086
6087 select(REPORT1);
6088 $^ = 'report1_top';
6089 select(REPORT2);
6090 $^ = 'report2_top';
6091
6092FILEHANDLE may be an expression whose value gives the name of the
6093actual filehandle. Thus:
6094
6095 $oldfh = select(STDERR); $| = 1; select($oldfh);
6096
4633a7c4
LW
6097Some programmers may prefer to think of filehandles as objects with
6098methods, preferring to write the last example as:
a0d0e21e 6099
28757baa 6100 use IO::Handle;
a0d0e21e
LW
6101 STDERR->autoflush(1);
6102
ea9eb35a
BJ
6103Portability issues: L<perlport/select>.
6104
a0d0e21e 6105=item select RBITS,WBITS,EBITS,TIMEOUT
d74e8afc 6106X<select>
a0d0e21e 6107
3b10bc60 6108This calls the select(2) syscall with the bit masks specified, which
19799a22 6109can be constructed using C<fileno> and C<vec>, along these lines:
a0d0e21e
LW
6110
6111 $rin = $win = $ein = '';
f0815dd4
TC
6112 vec($rin, fileno(STDIN), 1) = 1;
6113 vec($win, fileno(STDOUT), 1) = 1;
a0d0e21e
LW
6114 $ein = $rin | $win;
6115
3b10bc60 6116If you want to select on many filehandles, you may wish to write a
6117subroutine like this:
a0d0e21e
LW
6118
6119 sub fhbits {
f0815dd4
TC
6120 my @fhlist = @_;
6121 my $bits = "";
6122 for my $fh (@fhlist) {
6123 vec($bits, fileno($fh), 1) = 1;
a9a5a0dc 6124 }
f0815dd4 6125 return $bits;
a0d0e21e 6126 }
f0815dd4 6127 $rin = fhbits(*STDIN, *TTY, *MYSOCK);
a0d0e21e
LW
6128
6129The usual idiom is:
6130
6131 ($nfound,$timeleft) =
6132 select($rout=$rin, $wout=$win, $eout=$ein, $timeout);
6133
54310121 6134or to block until something becomes ready just do this
a0d0e21e
LW
6135
6136 $nfound = select($rout=$rin, $wout=$win, $eout=$ein, undef);
6137
19799a22
GS
6138Most systems do not bother to return anything useful in $timeleft, so
6139calling select() in scalar context just returns $nfound.
c07a80fd 6140
5f05dabc 6141Any of the bit masks can also be undef. The timeout, if specified, is
a0d0e21e 6142in seconds, which may be fractional. Note: not all implementations are
be119125 6143capable of returning the $timeleft. If not, they always return
19799a22 6144$timeleft equal to the supplied $timeout.
a0d0e21e 6145
ff68c719 6146You can effect a sleep of 250 milliseconds this way:
a0d0e21e
LW
6147
6148 select(undef, undef, undef, 0.25);
6149
b09fc1d8 6150Note that whether C<select> gets restarted after signals (say, SIGALRM)
8b0ac1d7
MHM
6151is implementation-dependent. See also L<perlport> for notes on the
6152portability of C<select>.
40454f26 6153
f0815dd4 6154On error, C<select> behaves just like select(2): it returns
4189264e 6155-1 and sets C<$!>.
353e5636 6156
8f1da26d
TC
6157On some Unixes, select(2) may report a socket file descriptor as "ready for
6158reading" even when no data is available, and thus any subsequent C<read>
391b733c
FC
6159would block. This can be avoided if you always use O_NONBLOCK on the
6160socket. See select(2) and fcntl(2) for further details.
ec8ce15a 6161
f0815dd4
TC
6162The standard C<IO::Select> module provides a user-friendlier interface
6163to C<select>, mostly because it does all the bit-mask work for you.
6164
19799a22 6165B<WARNING>: One should not attempt to mix buffered I/O (like C<read>
61eff3bc 6166or <FH>) with C<select>, except as permitted by POSIX, and even
19799a22 6167then only on POSIX systems. You have to use C<sysread> instead.
a0d0e21e 6168
ea9eb35a
BJ
6169Portability issues: L<perlport/select>.
6170
a0d0e21e 6171=item semctl ID,SEMNUM,CMD,ARG
d74e8afc 6172X<semctl>
a0d0e21e 6173
c17cdb72
NC
6174=for Pod::Functions SysV semaphore control operations
6175
3b10bc60 6176Calls the System V IPC function semctl(2). You'll probably have to say
0ade1984
JH
6177
6178 use IPC::SysV;
6179
6180first to get the correct constant definitions. If CMD is IPC_STAT or
cf264981 6181GETALL, then ARG must be a variable that will hold the returned
e4038a1f
MS
6182semid_ds structure or semaphore value array. Returns like C<ioctl>:
6183the undefined value for error, "C<0 but true>" for zero, or the actual
6184return value otherwise. The ARG must consist of a vector of native
106325ad 6185short integers, which may be created with C<pack("s!",(0)x$nsem)>.
4755096e
GS
6186See also L<perlipc/"SysV IPC">, C<IPC::SysV>, C<IPC::Semaphore>
6187documentation.
a0d0e21e 6188
ea9eb35a
BJ
6189Portability issues: L<perlport/semctl>.
6190
a0d0e21e 6191=item semget KEY,NSEMS,FLAGS
d74e8afc 6192X<semget>
a0d0e21e 6193
c17cdb72
NC
6194=for Pod::Functions get set of SysV semaphores
6195
3b10bc60 6196Calls the System V IPC function semget(2). Returns the semaphore id, or
8f1da26d 6197the undefined value on error. See also
4755096e
GS
6198L<perlipc/"SysV IPC">, C<IPC::SysV>, C<IPC::SysV::Semaphore>
6199documentation.
a0d0e21e 6200
ea9eb35a
BJ
6201Portability issues: L<perlport/semget>.
6202
a0d0e21e 6203=item semop KEY,OPSTRING
d74e8afc 6204X<semop>
a0d0e21e 6205
c17cdb72
NC
6206=for Pod::Functions SysV semaphore operations
6207
80d38338 6208Calls the System V IPC function semop(2) for semaphore operations
5354997a 6209such as signalling and waiting. OPSTRING must be a packed array of
a0d0e21e 6210semop structures. Each semop structure can be generated with
cf264981
SP
6211C<pack("s!3", $semnum, $semop, $semflag)>. The length of OPSTRING
6212implies the number of semaphore operations. Returns true if
8f1da26d 6213successful, false on error. As an example, the
19799a22 6214following code waits on semaphore $semnum of semaphore id $semid:
a0d0e21e 6215
f878ba33 6216 $semop = pack("s!3", $semnum, -1, 0);
a0d0e21e
LW
6217 die "Semaphore trouble: $!\n" unless semop($semid, $semop);
6218
4755096e
GS
6219To signal the semaphore, replace C<-1> with C<1>. See also
6220L<perlipc/"SysV IPC">, C<IPC::SysV>, and C<IPC::SysV::Semaphore>
6221documentation.
a0d0e21e 6222
ea9eb35a
BJ
6223Portability issues: L<perlport/semop>.
6224
a0d0e21e 6225=item send SOCKET,MSG,FLAGS,TO
d74e8afc 6226X<send>
a0d0e21e
LW
6227
6228=item send SOCKET,MSG,FLAGS
6229
c17cdb72
NC
6230=for Pod::Functions send a message over a socket
6231
3b10bc60 6232Sends a message on a socket. Attempts to send the scalar MSG to the SOCKET
6233filehandle. Takes the same flags as the system call of the same name. On
6234unconnected sockets, you must specify a destination to I<send to>, in which
6235case it does a sendto(2) syscall. Returns the number of characters sent,
6236or the undefined value on error. The sendmsg(2) syscall is currently
6237unimplemented. See L<perlipc/"UDP: Message Passing"> for examples.
9124316e
JH
6238
6239Note the I<characters>: depending on the status of the socket, either
6240(8-bit) bytes or characters are sent. By default all sockets operate
6241on bytes, but for example if the socket has been changed using
740d4bb2
JW
6242binmode() to operate with the C<:encoding(utf8)> I/O layer (see
6243L</open>, or the C<open> pragma, L<open>), the I/O will operate on UTF-8
6244encoded Unicode characters, not bytes. Similarly for the C<:encoding>
6245pragma: in that case pretty much any characters can be sent.
a0d0e21e
LW
6246
6247=item setpgrp PID,PGRP
d74e8afc 6248X<setpgrp> X<group>
a0d0e21e 6249
c17cdb72
NC
6250=for Pod::Functions set the process group of a process
6251
7660c0ab 6252Sets the current process group for the specified PID, C<0> for the current
3b10bc60 6253process. Raises an exception when used on a machine that doesn't
81777298
GS
6254implement POSIX setpgid(2) or BSD setpgrp(2). If the arguments are omitted,
6255it defaults to C<0,0>. Note that the BSD 4.2 version of C<setpgrp> does not
6256accept any arguments, so only C<setpgrp(0,0)> is portable. See also
6257C<POSIX::setsid()>.
a0d0e21e 6258
ea9eb35a
BJ
6259Portability issues: L<perlport/setpgrp>.
6260
a0d0e21e 6261=item setpriority WHICH,WHO,PRIORITY
d74e8afc 6262X<setpriority> X<priority> X<nice> X<renice>
a0d0e21e 6263
c17cdb72
NC
6264=for Pod::Functions set a process's nice value
6265
a0d0e21e 6266Sets the current priority for a process, a process group, or a user.
3b10bc60 6267(See setpriority(2).) Raises an exception when used on a machine
f86cebdf 6268that doesn't implement setpriority(2).
a0d0e21e 6269
ea9eb35a
BJ
6270Portability issues: L<perlport/setpriority>.
6271
a0d0e21e 6272=item setsockopt SOCKET,LEVEL,OPTNAME,OPTVAL
d74e8afc 6273X<setsockopt>
a0d0e21e 6274
c17cdb72
NC
6275=for Pod::Functions set some socket options
6276
8f1da26d
TC
6277Sets the socket option requested. Returns C<undef> on error.
6278Use integer constants provided by the C<Socket> module for
23d0437f
GA
6279LEVEL and OPNAME. Values for LEVEL can also be obtained from
6280getprotobyname. OPTVAL might either be a packed string or an integer.
6281An integer OPTVAL is shorthand for pack("i", OPTVAL).
6282
3b10bc60 6283An example disabling Nagle's algorithm on a socket:
23d0437f
GA
6284
6285 use Socket qw(IPPROTO_TCP TCP_NODELAY);
6286 setsockopt($socket, IPPROTO_TCP, TCP_NODELAY, 1);
a0d0e21e 6287
ea9eb35a
BJ
6288Portability issues: L<perlport/setsockopt>.
6289
532eee96 6290=item shift ARRAY
d74e8afc 6291X<shift>
a0d0e21e 6292
f5a93a43
TC
6293=item shift EXPR
6294
a0d0e21e
LW
6295=item shift
6296
c17cdb72
NC
6297=for Pod::Functions remove the first element of an array, and return it
6298
a0d0e21e
LW
6299Shifts the first value of the array off and returns it, shortening the
6300array by 1 and moving everything down. If there are no elements in the
6301array, returns the undefined value. If ARRAY is omitted, shifts the
7660c0ab 6302C<@_> array within the lexical scope of subroutines and formats, and the
80d38338 6303C<@ARGV> array outside a subroutine and also within the lexical scopes
3c10abe3 6304established by the C<eval STRING>, C<BEGIN {}>, C<INIT {}>, C<CHECK {}>,
8f1da26d 6305C<UNITCHECK {}>, and C<END {}> constructs.
4f25aa18 6306
f5a93a43
TC
6307Starting with Perl 5.14, C<shift> can take a scalar EXPR, which must hold a
6308reference to an unblessed array. The argument will be dereferenced
6309automatically. This aspect of C<shift> is considered highly experimental.
6310The exact behaviour may change in a future version of Perl.
cba5a3b0 6311
bade7fbc
TC
6312To avoid confusing would-be users of your code who are running earlier
6313versions of Perl with mysterious syntax errors, put this sort of thing at
6314the top of your file to signal that your code will work I<only> on Perls of
6315a recent vintage:
6316
6317 use 5.014; # so push/pop/etc work on scalars (experimental)
6318
a1b2c429 6319See also C<unshift>, C<push>, and C<pop>. C<shift> and C<unshift> do the
19799a22 6320same thing to the left end of an array that C<pop> and C<push> do to the
977336f5 6321right end.
a0d0e21e
LW
6322
6323=item shmctl ID,CMD,ARG
d74e8afc 6324X<shmctl>
a0d0e21e 6325
c17cdb72
NC
6326=for Pod::Functions SysV shared memory operations
6327
0ade1984
JH
6328Calls the System V IPC function shmctl. You'll probably have to say
6329
6330 use IPC::SysV;
6331
7660c0ab 6332first to get the correct constant definitions. If CMD is C<IPC_STAT>,
cf264981 6333then ARG must be a variable that will hold the returned C<shmid_ds>
8f1da26d
TC
6334structure. Returns like ioctl: C<undef> for error; "C<0> but
6335true" for zero; and the actual return value otherwise.
4755096e 6336See also L<perlipc/"SysV IPC"> and C<IPC::SysV> documentation.
a0d0e21e 6337
ea9eb35a
BJ
6338Portability issues: L<perlport/shmctl>.
6339
a0d0e21e 6340=item shmget KEY,SIZE,FLAGS
d74e8afc 6341X<shmget>
a0d0e21e 6342
c17cdb72
NC
6343=for Pod::Functions get SysV shared memory segment identifier
6344
a0d0e21e 6345Calls the System V IPC function shmget. Returns the shared memory
8f1da26d 6346segment id, or C<undef> on error.
4755096e 6347See also L<perlipc/"SysV IPC"> and C<IPC::SysV> documentation.
a0d0e21e 6348
ea9eb35a
BJ
6349Portability issues: L<perlport/shmget>.
6350
a0d0e21e 6351=item shmread ID,VAR,POS,SIZE
d74e8afc
ITB
6352X<shmread>
6353X<shmwrite>
a0d0e21e 6354
c17cdb72
NC
6355=for Pod::Functions read SysV shared memory
6356
a0d0e21e
LW
6357=item shmwrite ID,STRING,POS,SIZE
6358
c17cdb72
NC
6359=for Pod::Functions write SysV shared memory
6360
a0d0e21e
LW
6361Reads or writes the System V shared memory segment ID starting at
6362position POS for size SIZE by attaching to it, copying in/out, and
5a964f20 6363detaching from it. When reading, VAR must be a variable that will
a0d0e21e
LW
6364hold the data read. When writing, if STRING is too long, only SIZE
6365bytes are used; if STRING is too short, nulls are written to fill out
8f1da26d 6366SIZE bytes. Return true if successful, false on error.
391b733c 6367shmread() taints the variable. See also L<perlipc/"SysV IPC">,
8f1da26d 6368C<IPC::SysV>, and the C<IPC::Shareable> module from CPAN.
a0d0e21e 6369
ea9eb35a
BJ
6370Portability issues: L<perlport/shmread> and L<perlport/shmwrite>.
6371
a0d0e21e 6372=item shutdown SOCKET,HOW
d74e8afc 6373X<shutdown>
a0d0e21e 6374
c17cdb72
NC
6375=for Pod::Functions close down just half of a socket connection
6376
a0d0e21e 6377Shuts down a socket connection in the manner indicated by HOW, which
3b10bc60 6378has the same interpretation as in the syscall of the same name.
a0d0e21e 6379
f86cebdf
GS
6380 shutdown(SOCKET, 0); # I/we have stopped reading data
6381 shutdown(SOCKET, 1); # I/we have stopped writing data
6382 shutdown(SOCKET, 2); # I/we have stopped using this socket
5a964f20
TC
6383
6384This is useful with sockets when you want to tell the other
6385side you're done writing but not done reading, or vice versa.
b76cc8ba 6386It's also a more insistent form of close because it also
19799a22 6387disables the file descriptor in any forked copies in other
5a964f20
TC
6388processes.
6389
3b10bc60 6390Returns C<1> for success; on error, returns C<undef> if
f126b98b
PF
6391the first argument is not a valid filehandle, or returns C<0> and sets
6392C<$!> for any other failure.
6393
a0d0e21e 6394=item sin EXPR
d74e8afc 6395X<sin> X<sine> X<asin> X<arcsine>
a0d0e21e 6396
54310121 6397=item sin
bbce6d69 6398
c17cdb72
NC
6399=for Pod::Functions return the sine of a number
6400
a0d0e21e 6401Returns the sine of EXPR (expressed in radians). If EXPR is omitted,
7660c0ab 6402returns sine of C<$_>.
a0d0e21e 6403
ca6e1c26 6404For the inverse sine operation, you may use the C<Math::Trig::asin>
28757baa 6405function, or use this relation:
6406
6407 sub asin { atan2($_[0], sqrt(1 - $_[0] * $_[0])) }
6408
a0d0e21e 6409=item sleep EXPR
d74e8afc 6410X<sleep> X<pause>
a0d0e21e
LW
6411
6412=item sleep
6413
c17cdb72
NC
6414=for Pod::Functions block for some number of seconds
6415
80d38338
TC
6416Causes the script to sleep for (integer) EXPR seconds, or forever if no
6417argument is given. Returns the integer number of seconds actually slept.
b48653af 6418
7660c0ab 6419May be interrupted if the process receives a signal such as C<SIGALRM>.
b48653af
MS
6420
6421 eval {
6422 local $SIG{ALARM} = sub { die "Alarm!\n" };
6423 sleep;
6424 };
6425 die $@ unless $@ eq "Alarm!\n";
6426
6427You probably cannot mix C<alarm> and C<sleep> calls, because C<sleep>
6428is often implemented using C<alarm>.
a0d0e21e
LW
6429
6430On some older systems, it may sleep up to a full second less than what
6431you requested, depending on how it counts seconds. Most modern systems
5a964f20
TC
6432always sleep the full amount. They may appear to sleep longer than that,
6433however, because your process might not be scheduled right away in a
6434busy multitasking system.
a0d0e21e 6435
2bc69794
BS
6436For delays of finer granularity than one second, the Time::HiRes module
6437(from CPAN, and starting from Perl 5.8 part of the standard
6438distribution) provides usleep(). You may also use Perl's four-argument
6439version of select() leaving the first three arguments undefined, or you
6440might be able to use the C<syscall> interface to access setitimer(2) if
391b733c 6441your system supports it. See L<perlfaq8> for details.
cb1a09d0 6442
b6e2112e 6443See also the POSIX module's C<pause> function.
5f05dabc 6444
a0d0e21e 6445=item socket SOCKET,DOMAIN,TYPE,PROTOCOL
d74e8afc 6446X<socket>
a0d0e21e 6447
c17cdb72
NC
6448=for Pod::Functions create a socket
6449
a0d0e21e 6450Opens a socket of the specified kind and attaches it to filehandle
19799a22 6451SOCKET. DOMAIN, TYPE, and PROTOCOL are specified the same as for
3b10bc60 6452the syscall of the same name. You should C<use Socket> first
19799a22
GS
6453to get the proper definitions imported. See the examples in
6454L<perlipc/"Sockets: Client/Server Communication">.
a0d0e21e 6455
8d2a6795
GS
6456On systems that support a close-on-exec flag on files, the flag will
6457be set for the newly opened file descriptor, as determined by the
6458value of $^F. See L<perlvar/$^F>.
6459
a0d0e21e 6460=item socketpair SOCKET1,SOCKET2,DOMAIN,TYPE,PROTOCOL
d74e8afc 6461X<socketpair>
a0d0e21e 6462
c17cdb72
NC
6463=for Pod::Functions create a pair of sockets
6464
a0d0e21e 6465Creates an unnamed pair of sockets in the specified domain, of the
5f05dabc 6466specified type. DOMAIN, TYPE, and PROTOCOL are specified the same as
3b10bc60 6467for the syscall of the same name. If unimplemented, raises an exception.
6468Returns true if successful.
a0d0e21e 6469
8d2a6795
GS
6470On systems that support a close-on-exec flag on files, the flag will
6471be set for the newly opened file descriptors, as determined by the value
6472of $^F. See L<perlvar/$^F>.
6473
19799a22 6474Some systems defined C<pipe> in terms of C<socketpair>, in which a call
5a964f20
TC
6475to C<pipe(Rdr, Wtr)> is essentially:
6476
6477 use Socket;
6478 socketpair(Rdr, Wtr, AF_UNIX, SOCK_STREAM, PF_UNSPEC);
6479 shutdown(Rdr, 1); # no more writing for reader
6480 shutdown(Wtr, 0); # no more reading for writer
6481
02fc2eee
NC
6482See L<perlipc> for an example of socketpair use. Perl 5.8 and later will
6483emulate socketpair using IP sockets to localhost if your system implements
6484sockets but not socketpair.
5a964f20 6485
ea9eb35a
BJ
6486Portability issues: L<perlport/socketpair>.
6487
a0d0e21e 6488=item sort SUBNAME LIST
d74e8afc 6489X<sort> X<qsort> X<quicksort> X<mergesort>
a0d0e21e
LW
6490
6491=item sort BLOCK LIST
6492
6493=item sort LIST
6494
c17cdb72
NC
6495=for Pod::Functions sort a list of values
6496
41d39f30 6497In list context, this sorts the LIST and returns the sorted list value.
9fdc1d08 6498In scalar context, the behaviour of C<sort()> is undefined.
41d39f30
A
6499
6500If SUBNAME or BLOCK is omitted, C<sort>s in standard string comparison
6501order. If SUBNAME is specified, it gives the name of a subroutine
6502that returns an integer less than, equal to, or greater than C<0>,
3b10bc60 6503depending on how the elements of the list are to be ordered. (The
6504C<< <=> >> and C<cmp> operators are extremely useful in such routines.)
41d39f30
A
6505SUBNAME may be a scalar variable name (unsubscripted), in which case
6506the value provides the name of (or a reference to) the actual
6507subroutine to use. In place of a SUBNAME, you can provide a BLOCK as
6508an anonymous, in-line sort subroutine.
a0d0e21e 6509
8f1da26d
TC
6510If the subroutine's prototype is C<($$)>, the elements to be compared are
6511passed by reference in C<@_>, as for a normal subroutine. This is slower
6512than unprototyped subroutines, where the elements to be compared are passed
6513into the subroutine as the package global variables $a and $b (see example
6514below). Note that in the latter case, it is usually highly counter-productive
6515to declare $a and $b as lexicals.
43481408 6516
51707595
FC
6517If the subroutine is an XSUB, the elements to be compared are pushed on to
6518the stack, the way arguments are usually passed to XSUBs. $a and $b are
6519not set.
6520
c106e8bb
RH
6521The values to be compared are always passed by reference and should not
6522be modified.
a0d0e21e 6523
0a753a76 6524You also cannot exit out of the sort block or subroutine using any of the
19799a22 6525loop control operators described in L<perlsyn> or with C<goto>.
0a753a76 6526
66cbab2c
KW
6527When C<use locale> (but not C<use locale 'not_characters'>) is in
6528effect, C<sort LIST> sorts LIST according to the
a034a98d
DD
6529current collation locale. See L<perllocale>.
6530
db5021a3
MS
6531sort() returns aliases into the original list, much as a for loop's index
6532variable aliases the list elements. That is, modifying an element of a
6533list returned by sort() (for example, in a C<foreach>, C<map> or C<grep>)
6534actually modifies the element in the original list. This is usually
6535something to be avoided when writing clear code.
6536
58c7fc7c 6537Perl 5.6 and earlier used a quicksort algorithm to implement sort.
8f1da26d 6538That algorithm was not stable, so I<could> go quadratic. (A I<stable> sort
58c7fc7c
JH
6539preserves the input order of elements that compare equal. Although
6540quicksort's run time is O(NlogN) when averaged over all arrays of
6541length N, the time can be O(N**2), I<quadratic> behavior, for some
6542inputs.) In 5.7, the quicksort implementation was replaced with
cf264981 6543a stable mergesort algorithm whose worst-case behavior is O(NlogN).
58c7fc7c
JH
6544But benchmarks indicated that for some inputs, on some platforms,
6545the original quicksort was faster. 5.8 has a sort pragma for
6546limited control of the sort. Its rather blunt control of the
cf264981 6547underlying algorithm may not persist into future Perls, but the
58c7fc7c 6548ability to characterize the input or output in implementation
c25fe68d 6549independent ways quite probably will. See L<the sort pragma|sort>.
c16425f1 6550
a0d0e21e
LW
6551Examples:
6552
6553 # sort lexically
6554 @articles = sort @files;
e1d16ab7 6555
a0d0e21e
LW
6556 # same thing, but with explicit sort routine
6557 @articles = sort {$a cmp $b} @files;
e1d16ab7 6558
cb1a09d0 6559 # now case-insensitively
628253b8 6560 @articles = sort {fc($a) cmp fc($b)} @files;
e1d16ab7 6561
a0d0e21e
LW
6562 # same thing in reversed order
6563 @articles = sort {$b cmp $a} @files;
e1d16ab7 6564
a0d0e21e
LW
6565 # sort numerically ascending
6566 @articles = sort {$a <=> $b} @files;
e1d16ab7 6567
a0d0e21e
LW
6568 # sort numerically descending
6569 @articles = sort {$b <=> $a} @files;
e1d16ab7 6570
19799a22
GS
6571 # this sorts the %age hash by value instead of key
6572 # using an in-line function
6573 @eldest = sort { $age{$b} <=> $age{$a} } keys %age;
e1d16ab7 6574
a0d0e21e
LW
6575 # sort using explicit subroutine name
6576 sub byage {
4d0444a3 6577 $age{$a} <=> $age{$b}; # presuming numeric
a0d0e21e
LW
6578 }
6579 @sortedclass = sort byage @class;
e1d16ab7 6580
19799a22
GS
6581 sub backwards { $b cmp $a }
6582 @harry = qw(dog cat x Cain Abel);
6583 @george = qw(gone chased yz Punished Axed);
a0d0e21e 6584 print sort @harry;
e1d16ab7 6585 # prints AbelCaincatdogx
a0d0e21e 6586 print sort backwards @harry;
e1d16ab7 6587 # prints xdogcatCainAbel
a0d0e21e 6588 print sort @george, 'to', @harry;
e1d16ab7 6589 # prints AbelAxedCainPunishedcatchaseddoggonetoxyz
a0d0e21e 6590
54310121 6591 # inefficiently sort by descending numeric compare using
6592 # the first integer after the first = sign, or the
cb1a09d0
AD
6593 # whole record case-insensitively otherwise
6594
e1d16ab7 6595 my @new = sort {
6596 ($b =~ /=(\d+)/)[0] <=> ($a =~ /=(\d+)/)[0]
4d0444a3 6597 ||
628253b8 6598 fc($a) cmp fc($b)
cb1a09d0
AD
6599 } @old;
6600
6601 # same thing, but much more efficiently;
6602 # we'll build auxiliary indices instead
6603 # for speed
e1d16ab7 6604 my @nums = @caps = ();
54310121 6605 for (@old) {
e1d16ab7 6606 push @nums, ( /=(\d+)/ ? $1 : undef );
628253b8 6607 push @caps, fc($_);
54310121 6608 }
cb1a09d0 6609
e1d16ab7 6610 my @new = @old[ sort {
4d0444a3
FC
6611 $nums[$b] <=> $nums[$a]
6612 ||
6613 $caps[$a] cmp $caps[$b]
6614 } 0..$#old
6615 ];
cb1a09d0 6616
19799a22 6617 # same thing, but without any temps
cb1a09d0 6618 @new = map { $_->[0] }
19799a22 6619 sort { $b->[1] <=> $a->[1]
4d0444a3
FC
6620 ||
6621 $a->[2] cmp $b->[2]
628253b8 6622 } map { [$_, /=(\d+)/, fc($_)] } @old;
61eff3bc 6623
43481408
GS
6624 # using a prototype allows you to use any comparison subroutine
6625 # as a sort subroutine (including other package's subroutines)
6626 package other;
5ed4f2ec 6627 sub backwards ($$) { $_[1] cmp $_[0]; } # $a and $b are not set here
e1d16ab7 6628
43481408
GS
6629 package main;
6630 @new = sort other::backwards @old;
e1d16ab7 6631
58c7fc7c
JH
6632 # guarantee stability, regardless of algorithm
6633 use sort 'stable';
6634 @new = sort { substr($a, 3, 5) cmp substr($b, 3, 5) } @old;
e1d16ab7 6635
268e9d79
JL
6636 # force use of mergesort (not portable outside Perl 5.8)
6637 use sort '_mergesort'; # note discouraging _
58c7fc7c 6638 @new = sort { substr($a, 3, 5) cmp substr($b, 3, 5) } @old;
58c7fc7c 6639
1cb246e8 6640Warning: syntactical care is required when sorting the list returned from
391b733c 6641a function. If you want to sort the list returned by the function call
1cb246e8 6642C<find_records(@key)>, you can use:
a9320c62 6643
a9320c62
B
6644 @contact = sort { $a cmp $b } find_records @key;
6645 @contact = sort +find_records(@key);
6646 @contact = sort &find_records(@key);
6647 @contact = sort(find_records(@key));
6648
6649If instead you want to sort the array @key with the comparison routine
1cb246e8
RGS
6650C<find_records()> then you can use:
6651
a9320c62
B
6652 @contact = sort { find_records() } @key;
6653 @contact = sort find_records(@key);
6654 @contact = sort(find_records @key);
6655 @contact = sort(find_records (@key));
6656
19799a22
GS
6657If you're using strict, you I<must not> declare $a
6658and $b as lexicals. They are package globals. That means
1cb246e8 6659that if you're in the C<main> package and type
13a2d996 6660
47223a36 6661 @articles = sort {$b <=> $a} @files;
13a2d996 6662
47223a36
JH
6663then C<$a> and C<$b> are C<$main::a> and C<$main::b> (or C<$::a> and C<$::b>),
6664but if you're in the C<FooPack> package, it's the same as typing
cb1a09d0
AD
6665
6666 @articles = sort {$FooPack::b <=> $FooPack::a} @files;
6667
55497cff 6668The comparison function is required to behave. If it returns
7660c0ab
A
6669inconsistent results (sometimes saying C<$x[1]> is less than C<$x[2]> and
6670sometimes saying the opposite, for example) the results are not
6671well-defined.
55497cff 6672
03190201 6673Because C<< <=> >> returns C<undef> when either operand is C<NaN>
1bd4e8e3 6674(not-a-number), be careful when sorting with a
8f1da26d
TC
6675comparison function like C<< $a <=> $b >> any lists that might contain a
6676C<NaN>. The following example takes advantage that C<NaN != NaN> to
3b10bc60 6677eliminate any C<NaN>s from the input list.
03190201
JL
6678
6679 @result = sort { $a <=> $b } grep { $_ == $_ } @input;
6680
f5a93a43 6681=item splice ARRAY or EXPR,OFFSET,LENGTH,LIST
d74e8afc 6682X<splice>
a0d0e21e 6683
f5a93a43 6684=item splice ARRAY or EXPR,OFFSET,LENGTH
a0d0e21e 6685
f5a93a43 6686=item splice ARRAY or EXPR,OFFSET
a0d0e21e 6687
f5a93a43 6688=item splice ARRAY or EXPR
453f9044 6689
c17cdb72
NC
6690=for Pod::Functions add or remove elements anywhere in an array
6691
a0d0e21e 6692Removes the elements designated by OFFSET and LENGTH from an array, and
5a964f20
TC
6693replaces them with the elements of LIST, if any. In list context,
6694returns the elements removed from the array. In scalar context,
43051805 6695returns the last element removed, or C<undef> if no elements are
48cdf507 6696removed. The array grows or shrinks as necessary.
19799a22 6697If OFFSET is negative then it starts that far from the end of the array.
48cdf507 6698If LENGTH is omitted, removes everything from OFFSET onward.
d0920e03
MJD
6699If LENGTH is negative, removes the elements from OFFSET onward
6700except for -LENGTH elements at the end of the array.
391b733c 6701If both OFFSET and LENGTH are omitted, removes everything. If OFFSET is
3b10bc60 6702past the end of the array, Perl issues a warning, and splices at the
8cbc2e3b 6703end of the array.
453f9044 6704
e1dccc0d 6705The following equivalences hold (assuming C<< $#a >= $i >> )
a0d0e21e 6706
5ed4f2ec 6707 push(@a,$x,$y) splice(@a,@a,0,$x,$y)
6708 pop(@a) splice(@a,-1)
6709 shift(@a) splice(@a,0,1)
6710 unshift(@a,$x,$y) splice(@a,0,0,$x,$y)
6711 $a[$i] = $y splice(@a,$i,1,$y)
a0d0e21e
LW
6712
6713Example, assuming array lengths are passed before arrays:
6714
5ed4f2ec 6715 sub aeq { # compare two list values
a9a5a0dc
VP
6716 my(@a) = splice(@_,0,shift);
6717 my(@b) = splice(@_,0,shift);
6718 return 0 unless @a == @b; # same len?
6719 while (@a) {
6720 return 0 if pop(@a) ne pop(@b);
6721 }
6722 return 1;
a0d0e21e
LW
6723 }
6724 if (&aeq($len,@foo[1..$len],0+@bar,@bar)) { ... }
6725
f5a93a43
TC
6726Starting with Perl 5.14, C<splice> can take scalar EXPR, which must hold a
6727reference to an unblessed array. The argument will be dereferenced
6728automatically. This aspect of C<splice> is considered highly experimental.
6729The exact behaviour may change in a future version of Perl.
532eee96 6730
bade7fbc
TC
6731To avoid confusing would-be users of your code who are running earlier
6732versions of Perl with mysterious syntax errors, put this sort of thing at
6733the top of your file to signal that your code will work I<only> on Perls of
6734a recent vintage:
6735
6736 use 5.014; # so push/pop/etc work on scalars (experimental)
6737
a0d0e21e 6738=item split /PATTERN/,EXPR,LIMIT
d74e8afc 6739X<split>
a0d0e21e
LW
6740
6741=item split /PATTERN/,EXPR
6742
6743=item split /PATTERN/
6744
6745=item split
6746
c17cdb72
NC
6747=for Pod::Functions split up a string using a regexp delimiter
6748
bd467585
MW
6749Splits the string EXPR into a list of strings and returns the
6750list in list context, or the size of the list in scalar context.
a0d0e21e 6751
bd467585 6752If only PATTERN is given, EXPR defaults to C<$_>.
a0d0e21e 6753
bd467585
MW
6754Anything in EXPR that matches PATTERN is taken to be a separator
6755that separates the EXPR into substrings (called "I<fields>") that
6756do B<not> include the separator. Note that a separator may be
6757longer than one character or even have no characters at all (the
6758empty string, which is a zero-width match).
6759
6760The PATTERN need not be constant; an expression may be used
6761to specify a pattern that varies at runtime.
6762
6763If PATTERN matches the empty string, the EXPR is split at the match
6764position (between characters). As an example, the following:
6765
6766 print join(':', split('b', 'abc')), "\n";
6767
6768uses the 'b' in 'abc' as a separator to produce the output 'a:c'.
6769However, this:
6770
6771 print join(':', split('', 'abc')), "\n";
6772
6773uses empty string matches as separators to produce the output
6774'a:b:c'; thus, the empty string may be used to split EXPR into a
6775list of its component characters.
6776
6777As a special case for C<split>, the empty pattern given in
6778L<match operator|perlop/"m/PATTERN/msixpodualgc"> syntax (C<//>) specifically matches the empty string, which is contrary to its usual
6779interpretation as the last successful match.
6780
6781If PATTERN is C</^/>, then it is treated as if it used the
6782L<multiline modifier|perlreref/OPERATORS> (C</^/m>), since it
6783isn't much use otherwise.
6784
6785As another special case, C<split> emulates the default behavior of the
6786command line tool B<awk> when the PATTERN is either omitted or a I<literal
6787string> composed of a single space character (such as S<C<' '>> or
6788S<C<"\x20">>, but not e.g. S<C</ />>). In this case, any leading
6789whitespace in EXPR is removed before splitting occurs, and the PATTERN is
6790instead treated as if it were C</\s+/>; in particular, this means that
6791I<any> contiguous whitespace (not just a single space character) is used as
6792a separator. However, this special treatment can be avoided by specifying
6793the pattern S<C</ />> instead of the string S<C<" ">>, thereby allowing
6794only a single space character to be a separator.
6795
6796If omitted, PATTERN defaults to a single space, S<C<" ">>, triggering
6797the previously described I<awk> emulation.
fb73857a 6798
836e0ee7 6799If LIMIT is specified and positive, it represents the maximum number
bd467585
MW
6800of fields into which the EXPR may be split; in other words, LIMIT is
6801one greater than the maximum number of times EXPR may be split. Thus,
6802the LIMIT value C<1> means that EXPR may be split a maximum of zero
6803times, producing a maximum of one field (namely, the entire value of
6804EXPR). For instance:
a0d0e21e 6805
bd467585 6806 print join(':', split(//, 'abc', 1)), "\n";
a0d0e21e 6807
bd467585 6808produces the output 'abc', and this:
a0d0e21e 6809
bd467585 6810 print join(':', split(//, 'abc', 2)), "\n";
a0d0e21e 6811
bd467585 6812produces the output 'a:bc', and each of these:
6de67870 6813
bd467585
MW
6814 print join(':', split(//, 'abc', 3)), "\n";
6815 print join(':', split(//, 'abc', 4)), "\n";
52ea55c9 6816
bd467585 6817produces the output 'a:b:c'.
52ea55c9 6818
bd467585
MW
6819If LIMIT is negative, it is treated as if it were instead arbitrarily
6820large; as many fields as possible are produced.
0156e0fd 6821
bd467585
MW
6822If LIMIT is omitted (or, equivalently, zero), then it is usually
6823treated as if it were instead negative but with the exception that
6824trailing empty fields are stripped (empty leading fields are always
6825preserved); if all fields are empty, then all fields are considered to
6826be trailing (and are thus stripped in this case). Thus, the following:
0156e0fd 6827
bd467585 6828 print join(':', split(',', 'a,b,c,,,')), "\n";
12977212 6829
bd467585 6830produces the output 'a:b:c', but the following:
12977212 6831
bd467585 6832 print join(':', split(',', 'a,b,c,,,', -1)), "\n";
0156e0fd 6833
bd467585 6834produces the output 'a:b:c:::'.
a0d0e21e 6835
bd467585
MW
6836In time-critical applications, it is worthwhile to avoid splitting
6837into more fields than necessary. Thus, when assigning to a list,
6838if LIMIT is omitted (or zero), then LIMIT is treated as though it
6839were one larger than the number of variables in the list; for the
6840following, LIMIT is implicitly 4:
a0d0e21e 6841
bd467585 6842 ($login, $passwd, $remainder) = split(/:/);
a0d0e21e 6843
bd467585
MW
6844Note that splitting an EXPR that evaluates to the empty string always
6845produces zero fields, regardless of the LIMIT specified.
a0d0e21e 6846
bd467585 6847An empty leading field is produced when there is a positive-width
0d3e3823 6848match at the beginning of EXPR. For instance:
a0d0e21e 6849
bd467585 6850 print join(':', split(/ /, ' abc')), "\n";
a0d0e21e 6851
bd467585
MW
6852produces the output ':abc'. However, a zero-width match at the
6853beginning of EXPR never produces an empty field, so that:
a0d0e21e 6854
bd467585 6855 print join(':', split(//, ' abc'));
4633a7c4 6856
bd467585 6857produces the output S<' :a:b:c'> (rather than S<': :a:b:c'>).
4633a7c4 6858
bd467585
MW
6859An empty trailing field, on the other hand, is produced when there is a
6860match at the end of EXPR, regardless of the length of the match
6861(of course, unless a non-zero LIMIT is given explicitly, such fields are
0d3e3823 6862removed, as in the last example). Thus:
748a9306 6863
bd467585 6864 print join(':', split(//, ' abc', -1)), "\n";
a0d0e21e 6865
bd467585 6866produces the output S<' :a:b:c:'>.
1ec94568 6867
bd467585
MW
6868If the PATTERN contains
6869L<capturing groups|perlretut/Grouping things and hierarchical matching>,
6870then for each separator, an additional field is produced for each substring
6871captured by a group (in the order in which the groups are specified,
6872as per L<backreferences|perlretut/Backreferences>); if any group does not
6873match, then it captures the C<undef> value instead of a substring. Also,
6874note that any such additional field is produced whenever there is a
6875separator (that is, whenever a split occurs), and such an additional field
6876does B<not> count towards the LIMIT. Consider the following expressions
6877evaluated in list context (each returned list is provided in the associated
6878comment):
a0d0e21e 6879
bd467585
MW
6880 split(/-|,/, "1-10,20", 3)
6881 # ('1', '10', '20')
6882
6883 split(/(-|,)/, "1-10,20", 3)
6884 # ('1', '-', '10', ',', '20')
6885
6886 split(/-|(,)/, "1-10,20", 3)
6887 # ('1', undef, '10', ',', '20')
a0d0e21e 6888
bd467585
MW
6889 split(/(-)|,/, "1-10,20", 3)
6890 # ('1', '-', '10', undef, '20')
6de67870 6891
bd467585
MW
6892 split(/(-)|(,)/, "1-10,20", 3)
6893 # ('1', '-', undef, '10', undef, ',', '20')
a0d0e21e 6894
5f05dabc 6895=item sprintf FORMAT, LIST
d74e8afc 6896X<sprintf>
a0d0e21e 6897
c17cdb72
NC
6898=for Pod::Functions formatted print into a string
6899
6662521e
GS
6900Returns a string formatted by the usual C<printf> conventions of the C
6901library function C<sprintf>. See below for more details
01aa884e 6902and see L<sprintf(3)> or L<printf(3)> on your system for an explanation of
6662521e
GS
6903the general principles.
6904
6905For example:
6906
6907 # Format number with up to 8 leading zeroes
6908 $result = sprintf("%08d", $number);
6909
6910 # Round number to 3 digits after decimal point
6911 $rounded = sprintf("%.3f", $number);
74a77017 6912
3b10bc60 6913Perl does its own C<sprintf> formatting: it emulates the C
6914function sprintf(3), but doesn't use it except for floating-point
6915numbers, and even then only standard modifiers are allowed.
6916Non-standard extensions in your local sprintf(3) are
6917therefore unavailable from Perl.
74a77017 6918
194e7b38 6919Unlike C<printf>, C<sprintf> does not do what you probably mean when you
391b733c
FC
6920pass it an array as your first argument.
6921The array is given scalar context,
194e7b38
DC
6922and instead of using the 0th element of the array as the format, Perl will
6923use the count of elements in the array as the format, which is almost never
6924useful.
6925
19799a22 6926Perl's C<sprintf> permits the following universally-known conversions:
74a77017 6927
5ed4f2ec 6928 %% a percent sign
6929 %c a character with the given number
6930 %s a string
6931 %d a signed integer, in decimal
6932 %u an unsigned integer, in decimal
6933 %o an unsigned integer, in octal
6934 %x an unsigned integer, in hexadecimal
6935 %e a floating-point number, in scientific notation
6936 %f a floating-point number, in fixed decimal notation
6937 %g a floating-point number, in %e or %f notation
74a77017 6938
1b3f7d21 6939In addition, Perl permits the following widely-supported conversions:
74a77017 6940
5ed4f2ec 6941 %X like %x, but using upper-case letters
6942 %E like %e, but using an upper-case "E"
6943 %G like %g, but with an upper-case "E" (if applicable)
6944 %b an unsigned integer, in binary
6945 %B like %b, but using an upper-case "B" with the # flag
6946 %p a pointer (outputs the Perl value's address in hexadecimal)
6947 %n special: *stores* the number of characters output so far
e3852384 6948 into the next argument in the parameter list
74a77017 6949
1b3f7d21
CS
6950Finally, for backward (and we do mean "backward") compatibility, Perl
6951permits these unnecessary but widely-supported conversions:
74a77017 6952
5ed4f2ec 6953 %i a synonym for %d
6954 %D a synonym for %ld
6955 %U a synonym for %lu
6956 %O a synonym for %lo
6957 %F a synonym for %f
74a77017 6958
7b8dd722
HS
6959Note that the number of exponent digits in the scientific notation produced
6960by C<%e>, C<%E>, C<%g> and C<%G> for numbers with the modulus of the
b73fd64e
JH
6961exponent less than 100 is system-dependent: it may be three or less
6962(zero-padded as necessary). In other words, 1.23 times ten to the
696399th may be either "1.23e99" or "1.23e099".
d764f01a 6964
80d38338 6965Between the C<%> and the format letter, you may specify several
7b8dd722
HS
6966additional attributes controlling the interpretation of the format.
6967In order, these are:
74a77017 6968
7b8dd722
HS
6969=over 4
6970
6971=item format parameter index
6972
391b733c 6973An explicit format parameter index, such as C<2$>. By default sprintf
7b8dd722 6974will format the next unused argument in the list, but this allows you
3b10bc60 6975to take the arguments out of order:
7b8dd722
HS
6976
6977 printf '%2$d %1$d', 12, 34; # prints "34 12"
6978 printf '%3$d %d %1$d', 1, 2, 3; # prints "3 1 1"
6979
6980=item flags
6981
6982one or more of:
e6bb52fd 6983
7a81c58e
A
6984 space prefix non-negative number with a space
6985 + prefix non-negative number with a plus sign
74a77017
CS
6986 - left-justify within the field
6987 0 use zeros, not spaces, to right-justify
e6bb52fd
TS
6988 # ensure the leading "0" for any octal,
6989 prefix non-zero hexadecimal with "0x" or "0X",
6990 prefix non-zero binary with "0b" or "0B"
7b8dd722
HS
6991
6992For example:
6993
e6bb52fd
TS
6994 printf '<% d>', 12; # prints "< 12>"
6995 printf '<%+d>', 12; # prints "<+12>"
6996 printf '<%6s>', 12; # prints "< 12>"
6997 printf '<%-6s>', 12; # prints "<12 >"
6998 printf '<%06s>', 12; # prints "<000012>"
6999 printf '<%#o>', 12; # prints "<014>"
7000 printf '<%#x>', 12; # prints "<0xc>"
7001 printf '<%#X>', 12; # prints "<0XC>"
7002 printf '<%#b>', 12; # prints "<0b1100>"
7003 printf '<%#B>', 12; # prints "<0B1100>"
7b8dd722 7004
9911cee9
TS
7005When a space and a plus sign are given as the flags at once,
7006a plus sign is used to prefix a positive number.
7007
7008 printf '<%+ d>', 12; # prints "<+12>"
7009 printf '<% +d>', 12; # prints "<+12>"
7010
e6bb52fd
TS
7011When the # flag and a precision are given in the %o conversion,
7012the precision is incremented if it's necessary for the leading "0".
7013
7014 printf '<%#.5o>', 012; # prints "<00012>"
7015 printf '<%#.5o>', 012345; # prints "<012345>"
7016 printf '<%#.0o>', 0; # prints "<0>"
7017
7b8dd722
HS
7018=item vector flag
7019
3b10bc60 7020This flag tells Perl to interpret the supplied string as a vector of
391b733c 7021integers, one for each character in the string. Perl applies the format to
920f3fa9 7022each integer in turn, then joins the resulting strings with a separator (a
391b733c 7023dot C<.> by default). This can be useful for displaying ordinal values of
920f3fa9 7024characters in arbitrary strings:
7b8dd722 7025
920f3fa9 7026 printf "%vd", "AB\x{100}"; # prints "65.66.256"
7b8dd722
HS
7027 printf "version is v%vd\n", $^V; # Perl's version
7028
7029Put an asterisk C<*> before the C<v> to override the string to
7030use to separate the numbers:
7031
7032 printf "address is %*vX\n", ":", $addr; # IPv6 address
7033 printf "bits are %0*v8b\n", " ", $bits; # random bitstring
7034
7035You can also explicitly specify the argument number to use for
3b10bc60 7036the join string using something like C<*2$v>; for example:
7b8dd722
HS
7037
7038 printf '%*4$vX %*4$vX %*4$vX', @addr[1..3], ":"; # 3 IPv6 addresses
7039
7040=item (minimum) width
7041
7042Arguments are usually formatted to be only as wide as required to
391b733c 7043display the given value. You can override the width by putting
7b8dd722 7044a number here, or get the width from the next argument (with C<*>)
3b10bc60 7045or from a specified argument (e.g., with C<*2$>):
7b8dd722 7046
8f1da26d
TC
7047 printf "<%s>", "a"; # prints "<a>"
7048 printf "<%6s>", "a"; # prints "< a>"
7049 printf "<%*s>", 6, "a"; # prints "< a>"
7050 printf "<%*2$s>", "a", 6; # prints "< a>"
7051 printf "<%2s>", "long"; # prints "<long>" (does not truncate)
7b8dd722 7052
19799a22
GS
7053If a field width obtained through C<*> is negative, it has the same
7054effect as the C<-> flag: left-justification.
74a77017 7055
7b8dd722 7056=item precision, or maximum width
d74e8afc 7057X<precision>
7b8dd722 7058
6c8c9a8e 7059You can specify a precision (for numeric conversions) or a maximum
7b8dd722 7060width (for string conversions) by specifying a C<.> followed by a number.
8f1da26d 7061For floating-point formats except C<g> and C<G>, this specifies
3b10bc60 7062how many places right of the decimal point to show (the default being 6).
7063For example:
7b8dd722
HS
7064
7065 # these examples are subject to system-specific variation
7066 printf '<%f>', 1; # prints "<1.000000>"
7067 printf '<%.1f>', 1; # prints "<1.0>"
7068 printf '<%.0f>', 1; # prints "<1>"
7069 printf '<%e>', 10; # prints "<1.000000e+01>"
7070 printf '<%.1e>', 10; # prints "<1.0e+01>"
7071
3b10bc60 7072For "g" and "G", this specifies the maximum number of digits to show,
7698aede 7073including those prior to the decimal point and those after it; for
3b10bc60 7074example:
1ff2d182 7075
3b10bc60 7076 # These examples are subject to system-specific variation.
1ff2d182
AS
7077 printf '<%g>', 1; # prints "<1>"
7078 printf '<%.10g>', 1; # prints "<1>"
7079 printf '<%g>', 100; # prints "<100>"
7080 printf '<%.1g>', 100; # prints "<1e+02>"
7081 printf '<%.2g>', 100.01; # prints "<1e+02>"
7082 printf '<%.5g>', 100.01; # prints "<100.01>"
7083 printf '<%.4g>', 100.01; # prints "<100>"
7084
7b8dd722 7085For integer conversions, specifying a precision implies that the
9911cee9
TS
7086output of the number itself should be zero-padded to this width,
7087where the 0 flag is ignored:
7088
7089 printf '<%.6d>', 1; # prints "<000001>"
7090 printf '<%+.6d>', 1; # prints "<+000001>"
7091 printf '<%-10.6d>', 1; # prints "<000001 >"
7092 printf '<%10.6d>', 1; # prints "< 000001>"
7093 printf '<%010.6d>', 1; # prints "< 000001>"
7094 printf '<%+10.6d>', 1; # prints "< +000001>"
7b8dd722
HS
7095
7096 printf '<%.6x>', 1; # prints "<000001>"
7097 printf '<%#.6x>', 1; # prints "<0x000001>"
7098 printf '<%-10.6x>', 1; # prints "<000001 >"
9911cee9
TS
7099 printf '<%10.6x>', 1; # prints "< 000001>"
7100 printf '<%010.6x>', 1; # prints "< 000001>"
7101 printf '<%#10.6x>', 1; # prints "< 0x000001>"
7b8dd722
HS
7102
7103For string conversions, specifying a precision truncates the string
3b10bc60 7104to fit the specified width:
7b8dd722
HS
7105
7106 printf '<%.5s>', "truncated"; # prints "<trunc>"
7107 printf '<%10.5s>', "truncated"; # prints "< trunc>"
7108
7109You can also get the precision from the next argument using C<.*>:
b22c7a20 7110
7b8dd722
HS
7111 printf '<%.6x>', 1; # prints "<000001>"
7112 printf '<%.*x>', 6, 1; # prints "<000001>"
7113
3b10bc60 7114If a precision obtained through C<*> is negative, it counts
7115as having no precision at all.
9911cee9
TS
7116
7117 printf '<%.*s>', 7, "string"; # prints "<string>"
7118 printf '<%.*s>', 3, "string"; # prints "<str>"
7119 printf '<%.*s>', 0, "string"; # prints "<>"
7120 printf '<%.*s>', -1, "string"; # prints "<string>"
7121
7122 printf '<%.*d>', 1, 0; # prints "<0>"
7123 printf '<%.*d>', 0, 0; # prints "<>"
7124 printf '<%.*d>', -1, 0; # prints "<0>"
7125
7b8dd722 7126You cannot currently get the precision from a specified number,
3b10bc60 7127but it is intended that this will be possible in the future, for
7128example using C<.*2$>:
7b8dd722 7129
3b10bc60 7130 printf "<%.*2$x>", 1, 6; # INVALID, but in future will print "<000001>"
7b8dd722
HS
7131
7132=item size
7133
7134For numeric conversions, you can specify the size to interpret the
391b733c 7135number as using C<l>, C<h>, C<V>, C<q>, C<L>, or C<ll>. For integer
1ff2d182
AS
7136conversions (C<d u o x X b i D U O>), numbers are usually assumed to be
7137whatever the default integer size is on your platform (usually 32 or 64
7138bits), but you can override this to use instead one of the standard C types,
7139as supported by the compiler used to build Perl:
7b8dd722 7140
3d21943e
JV
7141 hh interpret integer as C type "char" or "unsigned char"
7142 on Perl 5.14 or later
7b8dd722 7143 h interpret integer as C type "short" or "unsigned short"
1c2e8cca 7144 j interpret integer as C type "intmax_t" on Perl 5.14
3d21943e
JV
7145 or later, and only with a C99 compiler (unportable)
7146 l interpret integer as C type "long" or "unsigned long"
7147 q, L, or ll interpret integer as C type "long long", "unsigned long long",
7148 or "quad" (typically 64-bit integers)
1c2e8cca
MG
7149 t interpret integer as C type "ptrdiff_t" on Perl 5.14 or later
7150 z interpret integer as C type "size_t" on Perl 5.14 or later
3d21943e
JV
7151
7152As of 5.14, none of these raises an exception if they are not supported on
7153your platform. However, if warnings are enabled, a warning of the
7154C<printf> warning class is issued on an unsupported conversion flag.
7155Should you instead prefer an exception, do this:
7156
7157 use warnings FATAL => "printf";
7158
7159If you would like to know about a version dependency before you
7160start running the program, put something like this at its top:
7161
7162 use 5.014; # for hh/j/t/z/ printf modifiers
7b8dd722 7163
3d21943e 7164You can find out whether your Perl supports quads via L<Config>:
7b8dd722 7165
5ed4f2ec 7166 use Config;
3b10bc60 7167 if ($Config{use64bitint} eq "define" || $Config{longsize} >= 8) {
7168 print "Nice quads!\n";
7169 }
1ff2d182 7170
3b10bc60 7171For floating-point conversions (C<e f g E F G>), numbers are usually assumed
7172to be the default floating-point size on your platform (double or long double),
7173but you can force "long double" with C<q>, C<L>, or C<ll> if your
391b733c 7174platform supports them. You can find out whether your Perl supports long
1ff2d182
AS
7175doubles via L<Config>:
7176
5ed4f2ec 7177 use Config;
3b10bc60 7178 print "long doubles\n" if $Config{d_longdbl} eq "define";
1ff2d182 7179
3b10bc60 7180You can find out whether Perl considers "long double" to be the default
7181floating-point size to use on your platform via L<Config>:
1ff2d182 7182
3b10bc60 7183 use Config;
7184 if ($Config{uselongdouble} eq "define") {
7185 print "long doubles by default\n";
7186 }
1ff2d182 7187
3b10bc60 7188It can also be that long doubles and doubles are the same thing:
1ff2d182
AS
7189
7190 use Config;
7191 ($Config{doublesize} == $Config{longdblsize}) &&
7192 print "doubles are long doubles\n";
7193
3b10bc60 7194The size specifier C<V> has no effect for Perl code, but is supported for
7195compatibility with XS code. It means "use the standard size for a Perl
7196integer or floating-point number", which is the default.
7b8dd722 7197
a472f209
HS
7198=item order of arguments
7199
3b10bc60 7200Normally, sprintf() takes the next unused argument as the value to
391b733c 7201format for each format specification. If the format specification
a472f209 7202uses C<*> to require additional arguments, these are consumed from
3b10bc60 7203the argument list in the order they appear in the format
7204specification I<before> the value to format. Where an argument is
7205specified by an explicit index, this does not affect the normal
7206order for the arguments, even when the explicitly specified index
7207would have been the next argument.
a472f209
HS
7208
7209So:
7210
3b10bc60 7211 printf "<%*.*s>", $a, $b, $c;
a472f209 7212
3b10bc60 7213uses C<$a> for the width, C<$b> for the precision, and C<$c>
7214as the value to format; while:
a472f209 7215
3b10bc60 7216 printf "<%*1$.*s>", $a, $b;
a472f209 7217
3b10bc60 7218would use C<$a> for the width and precision, and C<$b> as the
a472f209
HS
7219value to format.
7220
3b10bc60 7221Here are some more examples; be aware that when using an explicit
7222index, the C<$> may need escaping:
a472f209 7223
5ed4f2ec 7224 printf "%2\$d %d\n", 12, 34; # will print "34 12\n"
7225 printf "%2\$d %d %d\n", 12, 34; # will print "34 12 34\n"
7226 printf "%3\$d %d %d\n", 12, 34, 56; # will print "56 12 34\n"
7227 printf "%2\$*3\$d %d\n", 12, 34, 3; # will print " 34 12\n"
a472f209 7228
7b8dd722 7229=back
b22c7a20 7230
66cbab2c
KW
7231If C<use locale> (including C<use locale 'not_characters'>) is in effect
7232and POSIX::setlocale() has been called,
3b10bc60 7233the character used for the decimal separator in formatted floating-point
7234numbers is affected by the LC_NUMERIC locale. See L<perllocale>
7e4353e9 7235and L<POSIX>.
a0d0e21e
LW
7236
7237=item sqrt EXPR
d74e8afc 7238X<sqrt> X<root> X<square root>
a0d0e21e 7239
54310121 7240=item sqrt
bbce6d69 7241
c17cdb72
NC
7242=for Pod::Functions square root function
7243
3b10bc60 7244Return the positive square root of EXPR. If EXPR is omitted, uses
7245C<$_>. Works only for non-negative operands unless you've
7246loaded the C<Math::Complex> module.
2b5ab1e7
TC
7247
7248 use Math::Complex;
3b10bc60 7249 print sqrt(-4); # prints 2i
a0d0e21e
LW
7250
7251=item srand EXPR
d74e8afc 7252X<srand> X<seed> X<randseed>
a0d0e21e 7253
93dc8474
CS
7254=item srand
7255
c17cdb72
NC
7256=for Pod::Functions seed the random number generator
7257
83832992 7258Sets and returns the random number seed for the C<rand> operator.
0686c0b8 7259
bade7fbc
TC
7260The point of the function is to "seed" the C<rand> function so that C<rand>
7261can produce a different sequence each time you run your program. When
7262called with a parameter, C<srand> uses that for the seed; otherwise it
7263(semi-)randomly chooses a seed. In either case, starting with Perl 5.14,
7264it returns the seed. To signal that your code will work I<only> on Perls
7265of a recent vintage:
7266
7267 use 5.014; # so srand returns the seed
83832992
KW
7268
7269If C<srand()> is not called explicitly, it is called implicitly without a
7270parameter at the first use of the C<rand> operator. However, this was not true
7271of versions of Perl before 5.004, so if your script will run under older
7272Perl versions, it should call C<srand>; otherwise most programs won't call
7273C<srand()> at all.
7274
7275But there are a few situations in recent Perls where programs are likely to
7276want to call C<srand>. One is for generating predictable results generally for
7277testing or debugging. There, you use C<srand($seed)>, with the same C<$seed>
416e3a83 7278each time. Another case is that you may want to call C<srand()>
83832992
KW
7279after a C<fork()> to avoid child processes sharing the same seed value as the
7280parent (and consequently each other).
7281
7282Do B<not> call C<srand()> (i.e., without an argument) more than once per
d460397b 7283process. The internal state of the random number generator should
0686c0b8 7284contain more entropy than can be provided by any seed, so calling
83832992 7285C<srand()> again actually I<loses> randomness.
0686c0b8 7286
e0b236fe
JH
7287Most implementations of C<srand> take an integer and will silently
7288truncate decimal numbers. This means C<srand(42)> will usually
7289produce the same results as C<srand(42.1)>. To be safe, always pass
7290C<srand> an integer.
0686c0b8
JH
7291
7292In versions of Perl prior to 5.004 the default seed was just the
7293current C<time>. This isn't a particularly good seed, so many old
7294programs supply their own seed value (often C<time ^ $$> or C<time ^
7295($$ + ($$ << 15))>), but that isn't necessary any more.
93dc8474 7296
54310121 7297Frequently called programs (like CGI scripts) that simply use
28757baa 7298
7299 time ^ $$
7300
54310121 7301for a seed can fall prey to the mathematical property that
28757baa 7302
7303 a^b == (a+1)^(b+1)
7304
0078ec44 7305one-third of the time. So don't do that.
f86702cc 7306
83832992
KW
7307A typical use of the returned seed is for a test program which has too many
7308combinations to test comprehensively in the time available to it each run. It
7309can test a random subset each time, and should there be a failure, log the seed
8f1da26d 7310used for that run so that it can later be used to reproduce the same results.
83832992 7311
416e3a83
AMS
7312B<C<rand()> is not cryptographically secure. You should not rely
7313on it in security-sensitive situations.> As of this writing, a
7314number of third-party CPAN modules offer random number generators
7315intended by their authors to be cryptographically secure,
7316including: L<Data::Entropy>, L<Crypt::Random>, L<Math::Random::Secure>,
7317and L<Math::TrulyRandom>.
7318
a0d0e21e 7319=item stat FILEHANDLE
435fbc73 7320X<stat> X<file, status> X<ctime>
a0d0e21e
LW
7321
7322=item stat EXPR
7323
5228a96c
SP
7324=item stat DIRHANDLE
7325
54310121 7326=item stat
bbce6d69 7327
c17cdb72
NC
7328=for Pod::Functions get a file's status information
7329
1d2dff63 7330Returns a 13-element list giving the status info for a file, either
5228a96c 7331the file opened via FILEHANDLE or DIRHANDLE, or named by EXPR. If EXPR is
8f1da26d 7332omitted, it stats C<$_> (not C<_>!). Returns the empty list if C<stat> fails. Typically
5228a96c 7333used as follows:
a0d0e21e
LW
7334
7335 ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
7336 $atime,$mtime,$ctime,$blksize,$blocks)
7337 = stat($filename);
7338
54310121 7339Not all fields are supported on all filesystem types. Here are the
61967be2 7340meanings of the fields:
c07a80fd 7341
54310121 7342 0 dev device number of filesystem
7343 1 ino inode number
7344 2 mode file mode (type and permissions)
7345 3 nlink number of (hard) links to the file
7346 4 uid numeric user ID of file's owner
7347 5 gid numeric group ID of file's owner
7348 6 rdev the device identifier (special files only)
7349 7 size total size of file, in bytes
1c74f1bd
GS
7350 8 atime last access time in seconds since the epoch
7351 9 mtime last modify time in seconds since the epoch
df2a7e48 7352 10 ctime inode change time in seconds since the epoch (*)
54310121 7353 11 blksize preferred block size for file system I/O
7354 12 blocks actual number of blocks allocated
c07a80fd 7355
7356(The epoch was at 00:00 January 1, 1970 GMT.)
7357
391b733c 7358(*) Not all fields are supported on all filesystem types. Notably, the
3e2557b2 7359ctime field is non-portable. In particular, you cannot expect it to be a
8f1da26d 7360"creation time"; see L<perlport/"Files and Filesystems"> for details.
df2a7e48 7361
61967be2 7362If C<stat> is passed the special filehandle consisting of an underline, no
a0d0e21e 7363stat is done, but the current contents of the stat structure from the
61967be2 7364last C<stat>, C<lstat>, or filetest are returned. Example:
a0d0e21e
LW
7365
7366 if (-x $file && (($d) = stat(_)) && $d < 0) {
a9a5a0dc 7367 print "$file is executable NFS file\n";
a0d0e21e
LW
7368 }
7369
ca6e1c26
JH
7370(This works on machines only for which the device number is negative
7371under NFS.)
a0d0e21e 7372
2b5ab1e7 7373Because the mode contains both the file type and its permissions, you
b76cc8ba 7374should mask off the file type portion and (s)printf using a C<"%o">
2b5ab1e7
TC
7375if you want to see the real permissions.
7376
7377 $mode = (stat($filename))[2];
7378 printf "Permissions are %04o\n", $mode & 07777;
7379
19799a22 7380In scalar context, C<stat> returns a boolean value indicating success
1d2dff63
GS
7381or failure, and, if successful, sets the information associated with
7382the special filehandle C<_>.
7383
dd184578 7384The L<File::stat> module provides a convenient, by-name access mechanism:
2b5ab1e7
TC
7385
7386 use File::stat;
7387 $sb = stat($filename);
b76cc8ba 7388 printf "File is %s, size is %s, perm %04o, mtime %s\n",
a9a5a0dc
VP
7389 $filename, $sb->size, $sb->mode & 07777,
7390 scalar localtime $sb->mtime;
2b5ab1e7 7391
ca6e1c26
JH
7392You can import symbolic mode constants (C<S_IF*>) and functions
7393(C<S_IS*>) from the Fcntl module:
7394
7395 use Fcntl ':mode';
7396
7397 $mode = (stat($filename))[2];
7398
7399 $user_rwx = ($mode & S_IRWXU) >> 6;
7400 $group_read = ($mode & S_IRGRP) >> 3;
7401 $other_execute = $mode & S_IXOTH;
7402
3155e0b0 7403 printf "Permissions are %04o\n", S_IMODE($mode), "\n";
ca6e1c26
JH
7404
7405 $is_setuid = $mode & S_ISUID;
ad605d16 7406 $is_directory = S_ISDIR($mode);
ca6e1c26
JH
7407
7408You could write the last two using the C<-u> and C<-d> operators.
3b10bc60 7409Commonly available C<S_IF*> constants are:
ca6e1c26
JH
7410
7411 # Permissions: read, write, execute, for user, group, others.
7412
7413 S_IRWXU S_IRUSR S_IWUSR S_IXUSR
7414 S_IRWXG S_IRGRP S_IWGRP S_IXGRP
7415 S_IRWXO S_IROTH S_IWOTH S_IXOTH
61eff3bc 7416
3cee8101 7417 # Setuid/Setgid/Stickiness/SaveText.
7df0fd0b 7418 # Note that the exact meaning of these is system-dependent.
ca6e1c26
JH
7419
7420 S_ISUID S_ISGID S_ISVTX S_ISTXT
7421
7df0fd0b
FC
7422 # File types. Not all are necessarily available on
7423 # your system.
ca6e1c26 7424
7df0fd0b
FC
7425 S_IFREG S_IFDIR S_IFLNK S_IFBLK S_IFCHR
7426 S_IFIFO S_IFSOCK S_IFWHT S_ENFMT
ca6e1c26 7427
7df0fd0b
FC
7428 # The following are compatibility aliases for S_IRUSR,
7429 # S_IWUSR, and S_IXUSR.
ca6e1c26
JH
7430
7431 S_IREAD S_IWRITE S_IEXEC
7432
61967be2 7433and the C<S_IF*> functions are
ca6e1c26 7434
7df0fd0b
FC
7435 S_IMODE($mode) the part of $mode containing the permission
7436 bits and the setuid/setgid/sticky bits
ca6e1c26 7437
7df0fd0b
FC
7438 S_IFMT($mode) the part of $mode containing the file type
7439 which can be bit-anded with (for example)
7440 S_IFREG or with the following functions
ca6e1c26 7441
61967be2 7442 # The operators -f, -d, -l, -b, -c, -p, and -S.
ca6e1c26
JH
7443
7444 S_ISREG($mode) S_ISDIR($mode) S_ISLNK($mode)
7445 S_ISBLK($mode) S_ISCHR($mode) S_ISFIFO($mode) S_ISSOCK($mode)
7446
7447 # No direct -X operator counterpart, but for the first one
7448 # the -g operator is often equivalent. The ENFMT stands for
7449 # record flocking enforcement, a platform-dependent feature.
7450
7451 S_ISENFMT($mode) S_ISWHT($mode)
7452
7453See your native chmod(2) and stat(2) documentation for more details
61967be2 7454about the C<S_*> constants. To get status info for a symbolic link
c837d5b4 7455instead of the target file behind the link, use the C<lstat> function.
ca6e1c26 7456
ea9eb35a
BJ
7457Portability issues: L<perlport/stat>.
7458
36fb85f3
RGS
7459=item state EXPR
7460X<state>
7461
7462=item state TYPE EXPR
7463
7464=item state EXPR : ATTRS
7465
7466=item state TYPE EXPR : ATTRS
7467
d9b04284 7468=for Pod::Functions +state declare and assign a persistent lexical variable
c17cdb72 7469
4a904372 7470C<state> declares a lexically scoped variable, just like C<my>.
b708784e 7471However, those variables will never be reinitialized, contrary to
36fb85f3
RGS
7472lexical variables that are reinitialized each time their enclosing block
7473is entered.
e476d66f 7474See L<perlsub/"Persistent Private Variables"> for details.
36fb85f3 7475
3b10bc60 7476C<state> variables are enabled only when the C<use feature "state"> pragma
4a904372 7477is in effect, unless the keyword is written as C<CORE::state>.
e476d66f 7478See also L<feature>.
36fb85f3 7479
a0d0e21e 7480=item study SCALAR
d74e8afc 7481X<study>
a0d0e21e
LW
7482
7483=item study
7484
c17cdb72
NC
7485=for Pod::Functions optimize input data for repeated searches
7486
184e9718 7487Takes extra time to study SCALAR (C<$_> if unspecified) in anticipation of
a0d0e21e
LW
7488doing many pattern matches on the string before it is next modified.
7489This may or may not save time, depending on the nature and number of
8f1da26d 7490patterns you are searching and the distribution of character
3b10bc60 7491frequencies in the string to be searched; you probably want to compare
8f1da26d 7492run times with and without it to see which is faster. Those loops
cf264981 7493that scan for many short constant strings (including the constant
4185c919
NC
7494parts of more complex patterns) will benefit most.
7495(The way C<study> works is this: a linked list of every
a0d0e21e 7496character in the string to be searched is made, so we know, for
7660c0ab 7497example, where all the C<'k'> characters are. From each search string,
a0d0e21e
LW
7498the rarest character is selected, based on some static frequency tables
7499constructed from some C programs and English text. Only those places
7500that contain this "rarest" character are examined.)
7501
5a964f20 7502For example, here is a loop that inserts index producing entries
a0d0e21e
LW
7503before any line containing a certain pattern:
7504
7505 while (<>) {
a9a5a0dc
VP
7506 study;
7507 print ".IX foo\n" if /\bfoo\b/;
7508 print ".IX bar\n" if /\bbar\b/;
7509 print ".IX blurfl\n" if /\bblurfl\b/;
7510 # ...
7511 print;
a0d0e21e
LW
7512 }
7513
3b10bc60 7514In searching for C</\bfoo\b/>, only locations in C<$_> that contain C<f>
951ba7fe 7515will be looked at, because C<f> is rarer than C<o>. In general, this is
a0d0e21e
LW
7516a big win except in pathological cases. The only question is whether
7517it saves you more time than it took to build the linked list in the
7518first place.
7519
7520Note that if you have to look for strings that you don't know till
19799a22 7521runtime, you can build an entire loop as a string and C<eval> that to
a0d0e21e 7522avoid recompiling all your patterns all the time. Together with
80d38338 7523undefining C<$/> to input entire files as one record, this can be quite
f86cebdf 7524fast, often faster than specialized programs like fgrep(1). The following
184e9718 7525scans a list of files (C<@files>) for a list of words (C<@words>), and prints
a0d0e21e
LW
7526out the names of those files that contain a match:
7527
7528 $search = 'while (<>) { study;';
7529 foreach $word (@words) {
a9a5a0dc 7530 $search .= "++\$seen{\$ARGV} if /\\b$word\\b/;\n";
a0d0e21e
LW
7531 }
7532 $search .= "}";
7533 @ARGV = @files;
7534 undef $/;
5ed4f2ec 7535 eval $search; # this screams
7536 $/ = "\n"; # put back to normal input delimiter
a0d0e21e 7537 foreach $file (sort keys(%seen)) {
a9a5a0dc 7538 print $file, "\n";
a0d0e21e
LW
7539 }
7540
1d2de774 7541=item sub NAME BLOCK
d74e8afc 7542X<sub>
cb1a09d0 7543
1d2de774 7544=item sub NAME (PROTO) BLOCK
cb1a09d0 7545
1d2de774
JH
7546=item sub NAME : ATTRS BLOCK
7547
7548=item sub NAME (PROTO) : ATTRS BLOCK
7549
c17cdb72
NC
7550=for Pod::Functions declare a subroutine, possibly anonymously
7551
8f1da26d
TC
7552This is subroutine definition, not a real function I<per se>. Without a
7553BLOCK it's just a forward declaration. Without a NAME, it's an anonymous
7554function declaration, so does return a value: the CODE ref of the closure
7555just created.
cb1a09d0 7556
1d2de774 7557See L<perlsub> and L<perlref> for details about subroutines and
8f1da26d 7558references; see L<attributes> and L<Attribute::Handlers> for more
1d2de774 7559information about attributes.
cb1a09d0 7560
84ed0108
FC
7561=item __SUB__
7562X<__SUB__>
7563
d9b04284 7564=for Pod::Functions +current_sub the current subroutine, or C<undef> if not in a subroutine
c17cdb72 7565
84ed0108
FC
7566A special token that returns the a reference to the current subroutine, or
7567C<undef> outside of a subroutine.
7568
7569This token is only available under C<use v5.16> or the "current_sub"
7570feature. See L<feature>.
7571
4fa8e151
FC
7572=item substr EXPR,OFFSET,LENGTH,REPLACEMENT
7573X<substr> X<substring> X<mid> X<left> X<right>
7574
87275199 7575=item substr EXPR,OFFSET,LENGTH
a0d0e21e
LW
7576
7577=item substr EXPR,OFFSET
7578
c17cdb72
NC
7579=for Pod::Functions get or alter a portion of a string
7580
a0d0e21e 7581Extracts a substring out of EXPR and returns it. First character is at
e1dccc0d 7582offset zero. If OFFSET is negative, starts
8f1da26d
TC
7583that far back from the end of the string. If LENGTH is omitted, returns
7584everything through the end of the string. If LENGTH is negative, leaves that
748a9306
LW
7585many characters off the end of the string.
7586
e1de3ec0 7587 my $s = "The black cat climbed the green tree";
5ed4f2ec 7588 my $color = substr $s, 4, 5; # black
7589 my $middle = substr $s, 4, -11; # black cat climbed the
7590 my $end = substr $s, 14; # climbed the green tree
7591 my $tail = substr $s, -4; # tree
7592 my $z = substr $s, -4, 2; # tr
e1de3ec0 7593
2b5ab1e7 7594You can use the substr() function as an lvalue, in which case EXPR
87275199
GS
7595must itself be an lvalue. If you assign something shorter than LENGTH,
7596the string will shrink, and if you assign something longer than LENGTH,
2b5ab1e7 7597the string will grow to accommodate it. To keep the string the same
3b10bc60 7598length, you may need to pad or chop your value using C<sprintf>.
a0d0e21e 7599
87275199
GS
7600If OFFSET and LENGTH specify a substring that is partly outside the
7601string, only the part within the string is returned. If the substring
7602is beyond either end of the string, substr() returns the undefined
7603value and produces a warning. When used as an lvalue, specifying a
3b10bc60 7604substring that is entirely outside the string raises an exception.
87275199
GS
7605Here's an example showing the behavior for boundary cases:
7606
7607 my $name = 'fred';
5ed4f2ec 7608 substr($name, 4) = 'dy'; # $name is now 'freddy'
3b10bc60 7609 my $null = substr $name, 6, 2; # returns "" (no warning)
5ed4f2ec 7610 my $oops = substr $name, 7; # returns undef, with warning
3b10bc60 7611 substr($name, 7) = 'gap'; # raises an exception
87275199 7612
2b5ab1e7 7613An alternative to using substr() as an lvalue is to specify the
7b8d334a 7614replacement string as the 4th argument. This allows you to replace
2b5ab1e7
TC
7615parts of the EXPR and return what was there before in one operation,
7616just as you can with splice().
7b8d334a 7617
e1de3ec0 7618 my $s = "The black cat climbed the green tree";
5ed4f2ec 7619 my $z = substr $s, 14, 7, "jumped from"; # climbed
e1de3ec0
GS
7620 # $s is now "The black cat jumped from the green tree"
7621
8f1da26d 7622Note that the lvalue returned by the three-argument version of substr() acts as
91f73676
DM
7623a 'magic bullet'; each time it is assigned to, it remembers which part
7624of the original string is being modified; for example:
7625
7626 $x = '1234';
7627 for (substr($x,1,2)) {
5ed4f2ec 7628 $_ = 'a'; print $x,"\n"; # prints 1a4
7629 $_ = 'xyz'; print $x,"\n"; # prints 1xyz4
91f73676 7630 $x = '56789';
5ed4f2ec 7631 $_ = 'pq'; print $x,"\n"; # prints 5pq9
91f73676
DM
7632 }
7633
1d95ad8b
FC
7634With negative offsets, it remembers its position from the end of the string
7635when the target string is modified:
7636
7637 $x = '1234';
7638 for (substr($x, -3, 2)) {
7639 $_ = 'a'; print $x,"\n"; # prints 1a4, as above
7640 $x = 'abcdefg';
7641 print $_,"\n"; # prints f
7642 }
7643
b8c25b3c 7644Prior to Perl version 5.10, the result of using an lvalue multiple times was
1d95ad8b 7645unspecified. Prior to 5.16, the result with negative offsets was
91f73676 7646unspecified.
c67bbae0 7647
a0d0e21e 7648=item symlink OLDFILE,NEWFILE
d74e8afc 7649X<symlink> X<link> X<symbolic link> X<link, symbolic>
a0d0e21e 7650
c17cdb72
NC
7651=for Pod::Functions create a symbolic link to a file
7652
a0d0e21e 7653Creates a new filename symbolically linked to the old filename.
7660c0ab 7654Returns C<1> for success, C<0> otherwise. On systems that don't support
3b10bc60 7655symbolic links, raises an exception. To check for that,
a0d0e21e
LW
7656use eval:
7657
2b5ab1e7 7658 $symlink_exists = eval { symlink("",""); 1 };
a0d0e21e 7659
ea9eb35a
BJ
7660Portability issues: L<perlport/symlink>.
7661
5702da47 7662=item syscall NUMBER, LIST
d74e8afc 7663X<syscall> X<system call>
a0d0e21e 7664
c17cdb72
NC
7665=for Pod::Functions execute an arbitrary system call
7666
a0d0e21e
LW
7667Calls the system call specified as the first element of the list,
7668passing the remaining elements as arguments to the system call. If
3b10bc60 7669unimplemented, raises an exception. The arguments are interpreted
a0d0e21e
LW
7670as follows: if a given argument is numeric, the argument is passed as
7671an int. If not, the pointer to the string value is passed. You are
7672responsible to make sure a string is pre-extended long enough to
a3cb178b 7673receive any result that might be written into a string. You can't use a
19799a22 7674string literal (or other read-only string) as an argument to C<syscall>
a3cb178b
GS
7675because Perl has to assume that any string pointer might be written
7676through. If your
a0d0e21e 7677integer arguments are not literals and have never been interpreted in a
7660c0ab 7678numeric context, you may need to add C<0> to them to force them to look
19799a22 7679like numbers. This emulates the C<syswrite> function (or vice versa):
a0d0e21e 7680
5ed4f2ec 7681 require 'syscall.ph'; # may need to run h2ph
a3cb178b
GS
7682 $s = "hi there\n";
7683 syscall(&SYS_write, fileno(STDOUT), $s, length $s);
a0d0e21e 7684
3b10bc60 7685Note that Perl supports passing of up to only 14 arguments to your syscall,
7686which in practice should (usually) suffice.
a0d0e21e 7687
fb73857a 7688Syscall returns whatever value returned by the system call it calls.
19799a22 7689If the system call fails, C<syscall> returns C<-1> and sets C<$!> (errno).
8f1da26d
TC
7690Note that some system calls I<can> legitimately return C<-1>. The proper
7691way to handle such calls is to assign C<$!=0> before the call, then
7692check the value of C<$!> if C<syscall> returns C<-1>.
fb73857a 7693
7694There's a problem with C<syscall(&SYS_pipe)>: it returns the file
8f1da26d 7695number of the read end of the pipe it creates, but there is no way
b76cc8ba 7696to retrieve the file number of the other end. You can avoid this
19799a22 7697problem by using C<pipe> instead.
fb73857a 7698
ea9eb35a
BJ
7699Portability issues: L<perlport/syscall>.
7700
c07a80fd 7701=item sysopen FILEHANDLE,FILENAME,MODE
d74e8afc 7702X<sysopen>
c07a80fd 7703
7704=item sysopen FILEHANDLE,FILENAME,MODE,PERMS
7705
d9b04284 7706=for Pod::Functions +5.002 open a file, pipe, or descriptor
c17cdb72 7707
8f1da26d
TC
7708Opens the file whose filename is given by FILENAME, and associates it with
7709FILEHANDLE. If FILEHANDLE is an expression, its value is used as the real
391b733c 7710filehandle wanted; an undefined scalar will be suitably autovivified. This
8f1da26d
TC
7711function calls the underlying operating system's I<open>(2) function with the
7712parameters FILENAME, MODE, and PERMS.
c07a80fd 7713
7714The possible values and flag bits of the MODE parameter are
8f1da26d
TC
7715system-dependent; they are available via the standard module C<Fcntl>. See
7716the documentation of your operating system's I<open>(2) syscall to see
7717which values and flag bits are available. You may combine several flags
ea2b5ef6
JH
7718using the C<|>-operator.
7719
7720Some of the most common values are C<O_RDONLY> for opening the file in
7721read-only mode, C<O_WRONLY> for opening the file in write-only mode,
c188b257 7722and C<O_RDWR> for opening the file in read-write mode.
d74e8afc 7723X<O_RDONLY> X<O_RDWR> X<O_WRONLY>
ea2b5ef6 7724
adf5897a 7725For historical reasons, some values work on almost every system
3b10bc60 7726supported by Perl: 0 means read-only, 1 means write-only, and 2
adf5897a 7727means read/write. We know that these values do I<not> work under
7c5ffed3 7728OS/390 & VM/ESA Unix and on the Macintosh; you probably don't want to
4af147f6 7729use them in new code.
c07a80fd 7730
19799a22 7731If the file named by FILENAME does not exist and the C<open> call creates
7660c0ab 7732it (typically because MODE includes the C<O_CREAT> flag), then the value of
5a964f20 7733PERMS specifies the permissions of the newly created file. If you omit
19799a22 7734the PERMS argument to C<sysopen>, Perl uses the octal value C<0666>.
5a964f20 7735These permission values need to be in octal, and are modified by your
0591cd52 7736process's current C<umask>.
d74e8afc 7737X<O_CREAT>
0591cd52 7738
ea2b5ef6
JH
7739In many systems the C<O_EXCL> flag is available for opening files in
7740exclusive mode. This is B<not> locking: exclusiveness means here that
c188b257
PF
7741if the file already exists, sysopen() fails. C<O_EXCL> may not work
7742on network filesystems, and has no effect unless the C<O_CREAT> flag
7743is set as well. Setting C<O_CREAT|O_EXCL> prevents the file from
7744being opened if it is a symbolic link. It does not protect against
7745symbolic links in the file's path.
d74e8afc 7746X<O_EXCL>
c188b257
PF
7747
7748Sometimes you may want to truncate an already-existing file. This
7749can be done using the C<O_TRUNC> flag. The behavior of
7750C<O_TRUNC> with C<O_RDONLY> is undefined.
d74e8afc 7751X<O_TRUNC>
ea2b5ef6 7752
19799a22 7753You should seldom if ever use C<0644> as argument to C<sysopen>, because
2b5ab1e7
TC
7754that takes away the user's option to have a more permissive umask.
7755Better to omit it. See the perlfunc(1) entry on C<umask> for more
7756on this.
c07a80fd 7757
4af147f6 7758Note that C<sysopen> depends on the fdopen() C library function.
e1020413 7759On many Unix systems, fdopen() is known to fail when file descriptors
391b733c 7760exceed a certain value, typically 255. If you need more file
4af147f6
CS
7761descriptors than that, consider rebuilding Perl to use the C<sfio>
7762library, or perhaps using the POSIX::open() function.
7763
2b5ab1e7 7764See L<perlopentut> for a kinder, gentler explanation of opening files.
28757baa 7765
ea9eb35a
BJ
7766Portability issues: L<perlport/sysopen>.
7767
a0d0e21e 7768=item sysread FILEHANDLE,SCALAR,LENGTH,OFFSET
d74e8afc 7769X<sysread>
a0d0e21e
LW
7770
7771=item sysread FILEHANDLE,SCALAR,LENGTH
7772
c17cdb72
NC
7773=for Pod::Functions fixed-length unbuffered input from a filehandle
7774
3874323d 7775Attempts to read LENGTH bytes of data into variable SCALAR from the
3b10bc60 7776specified FILEHANDLE, using the read(2). It bypasses
3874323d
JH
7777buffered IO, so mixing this with other kinds of reads, C<print>,
7778C<write>, C<seek>, C<tell>, or C<eof> can cause confusion because the
7779perlio or stdio layers usually buffers data. Returns the number of
7780bytes actually read, C<0> at end of file, or undef if there was an
7781error (in the latter case C<$!> is also set). SCALAR will be grown or
7782shrunk so that the last byte actually read is the last byte of the
7783scalar after the read.
ff68c719 7784
7785An OFFSET may be specified to place the read data at some place in the
7786string other than the beginning. A negative OFFSET specifies
9124316e
JH
7787placement at that many characters counting backwards from the end of
7788the string. A positive OFFSET greater than the length of SCALAR
7789results in the string being padded to the required size with C<"\0">
7790bytes before the result of the read is appended.
a0d0e21e 7791
2b5ab1e7 7792There is no syseof() function, which is ok, since eof() doesn't work
80d38338 7793well on device files (like ttys) anyway. Use sysread() and check
19799a22 7794for a return value for 0 to decide whether you're done.
2b5ab1e7 7795
3874323d
JH
7796Note that if the filehandle has been marked as C<:utf8> Unicode
7797characters are read instead of bytes (the LENGTH, OFFSET, and the
5eadf7c5 7798return value of sysread() are in Unicode characters).
3874323d
JH
7799The C<:encoding(...)> layer implicitly introduces the C<:utf8> layer.
7800See L</binmode>, L</open>, and the C<open> pragma, L<open>.
7801
137443ea 7802=item sysseek FILEHANDLE,POSITION,WHENCE
d74e8afc 7803X<sysseek> X<lseek>
137443ea 7804
d9b04284 7805=for Pod::Functions +5.004 position I/O pointer on handle used with sysread and syswrite
c17cdb72 7806
8f1da26d
TC
7807Sets FILEHANDLE's system position in bytes using lseek(2). FILEHANDLE may
7808be an expression whose value gives the name of the filehandle. The values
7809for WHENCE are C<0> to set the new position to POSITION; C<1> to set the it
7810to the current position plus POSITION; and C<2> to set it to EOF plus
7811POSITION, typically negative.
9124316e
JH
7812
7813Note the I<in bytes>: even if the filehandle has been set to operate
740d4bb2
JW
7814on characters (for example by using the C<:encoding(utf8)> I/O layer),
7815tell() will return byte offsets, not character offsets (because
80d38338 7816implementing that would render sysseek() unacceptably slow).
9124316e 7817
8f1da26d
TC
7818sysseek() bypasses normal buffered IO, so mixing it with reads other
7819than C<sysread> (for example C<< <> >> or read()) C<print>, C<write>,
9124316e 7820C<seek>, C<tell>, or C<eof> may cause confusion.
86989e5d
JH
7821
7822For WHENCE, you may also use the constants C<SEEK_SET>, C<SEEK_CUR>,
7823and C<SEEK_END> (start of the file, current position, end of the file)
7824from the Fcntl module. Use of the constants is also more portable
7825than relying on 0, 1, and 2. For example to define a "systell" function:
7826
5ed4f2ec 7827 use Fcntl 'SEEK_CUR';
7828 sub systell { sysseek($_[0], 0, SEEK_CUR) }
8903cb82 7829
7830Returns the new position, or the undefined value on failure. A position
19799a22
GS
7831of zero is returned as the string C<"0 but true">; thus C<sysseek> returns
7832true on success and false on failure, yet you can still easily determine
8903cb82 7833the new position.
137443ea 7834
a0d0e21e 7835=item system LIST
d74e8afc 7836X<system> X<shell>
a0d0e21e 7837
8bf3b016
GS
7838=item system PROGRAM LIST
7839
c17cdb72
NC
7840=for Pod::Functions run a separate program
7841
19799a22 7842Does exactly the same thing as C<exec LIST>, except that a fork is
8f1da26d 7843done first and the parent process waits for the child process to
80d38338 7844exit. Note that argument processing varies depending on the
19799a22
GS
7845number of arguments. If there is more than one argument in LIST,
7846or if LIST is an array with more than one value, starts the program
7847given by the first element of the list with arguments given by the
7848rest of the list. If there is only one scalar argument, the argument
7849is checked for shell metacharacters, and if there are any, the
7850entire argument is passed to the system's command shell for parsing
7851(this is C</bin/sh -c> on Unix platforms, but varies on other
7852platforms). If there are no shell metacharacters in the argument,
7853it is split into words and passed directly to C<execvp>, which is
7854more efficient.
7855
0f897271
GS
7856Beginning with v5.6.0, Perl will attempt to flush all files opened for
7857output before any operation that may do a fork, but this may not be
7858supported on some platforms (see L<perlport>). To be safe, you may need
7859to set C<$|> ($AUTOFLUSH in English) or call the C<autoflush()> method
7860of C<IO::Handle> on any open handles.
a2008d6d 7861
9d6eb86e 7862The return value is the exit status of the program as returned by the
25379e53 7863C<wait> call. To get the actual exit value, shift right by eight (see
391b733c 7864below). See also L</exec>. This is I<not> what you want to use to capture
8f1da26d 7865the output from a command; for that you should use merely backticks or
d5a9bfb0 7866C<qx//>, as described in L<perlop/"`STRING`">. Return value of -1
25379e53
RGS
7867indicates a failure to start the program or an error of the wait(2) system
7868call (inspect $! for the reason).
a0d0e21e 7869
1af1c0d6
JV
7870If you'd like to make C<system> (and many other bits of Perl) die on error,
7871have a look at the L<autodie> pragma.
7872
19799a22
GS
7873Like C<exec>, C<system> allows you to lie to a program about its name if
7874you use the C<system PROGRAM LIST> syntax. Again, see L</exec>.
8bf3b016 7875
4c2e8b59
BD
7876Since C<SIGINT> and C<SIGQUIT> are ignored during the execution of
7877C<system>, if you expect your program to terminate on receipt of these
7878signals you will need to arrange to do so yourself based on the return
7879value.
28757baa 7880
7881 @args = ("command", "arg1", "arg2");
54310121 7882 system(@args) == 0
a9a5a0dc 7883 or die "system @args failed: $?"
28757baa 7884
95da743b 7885If you'd like to manually inspect C<system>'s failure, you can check all
1af1c0d6 7886possible failure modes by inspecting C<$?> like this:
28757baa 7887
4ef107a6 7888 if ($? == -1) {
a9a5a0dc 7889 print "failed to execute: $!\n";
4ef107a6
DM
7890 }
7891 elsif ($? & 127) {
a9a5a0dc
VP
7892 printf "child died with signal %d, %s coredump\n",
7893 ($? & 127), ($? & 128) ? 'with' : 'without';
4ef107a6
DM
7894 }
7895 else {
a9a5a0dc 7896 printf "child exited with value %d\n", $? >> 8;
4ef107a6
DM
7897 }
7898
3b10bc60 7899Alternatively, you may inspect the value of C<${^CHILD_ERROR_NATIVE}>
7900with the C<W*()> calls from the POSIX module.
9d6eb86e 7901
3b10bc60 7902When C<system>'s arguments are executed indirectly by the shell,
7903results and return codes are subject to its quirks.
c8db1d39 7904See L<perlop/"`STRING`"> and L</exec> for details.
bb32b41a 7905
0a18a49b 7906Since C<system> does a C<fork> and C<wait> it may affect a C<SIGCHLD>
391b733c 7907handler. See L<perlipc> for details.
0a18a49b 7908
ea9eb35a
BJ
7909Portability issues: L<perlport/system>.
7910
a0d0e21e 7911=item syswrite FILEHANDLE,SCALAR,LENGTH,OFFSET
d74e8afc 7912X<syswrite>
a0d0e21e
LW
7913
7914=item syswrite FILEHANDLE,SCALAR,LENGTH
7915
145d37e2
GA
7916=item syswrite FILEHANDLE,SCALAR
7917
c17cdb72
NC
7918=for Pod::Functions fixed-length unbuffered output to a filehandle
7919
3874323d 7920Attempts to write LENGTH bytes of data from variable SCALAR to the
3b10bc60 7921specified FILEHANDLE, using write(2). If LENGTH is
3874323d 7922not specified, writes whole SCALAR. It bypasses buffered IO, so
9124316e 7923mixing this with reads (other than C<sysread())>, C<print>, C<write>,
3874323d 7924C<seek>, C<tell>, or C<eof> may cause confusion because the perlio and
8f1da26d 7925stdio layers usually buffer data. Returns the number of bytes
3874323d
JH
7926actually written, or C<undef> if there was an error (in this case the
7927errno variable C<$!> is also set). If the LENGTH is greater than the
3b10bc60 7928data available in the SCALAR after the OFFSET, only as much data as is
3874323d 7929available will be written.
ff68c719 7930
7931An OFFSET may be specified to write the data from some part of the
7932string other than the beginning. A negative OFFSET specifies writing
9124316e 7933that many characters counting backwards from the end of the string.
3b10bc60 7934If SCALAR is of length zero, you can only use an OFFSET of 0.
9124316e 7935
8f1da26d 7936B<WARNING>: If the filehandle is marked C<:utf8>, Unicode characters
3b10bc60 7937encoded in UTF-8 are written instead of bytes, and the LENGTH, OFFSET, and
8f1da26d 7938return value of syswrite() are in (UTF8-encoded Unicode) characters.
3874323d 7939The C<:encoding(...)> layer implicitly introduces the C<:utf8> layer.
8f1da26d
TC
7940Alternately, if the handle is not marked with an encoding but you
7941attempt to write characters with code points over 255, raises an exception.
3874323d 7942See L</binmode>, L</open>, and the C<open> pragma, L<open>.
a0d0e21e
LW
7943
7944=item tell FILEHANDLE
d74e8afc 7945X<tell>
a0d0e21e
LW
7946
7947=item tell
7948
c17cdb72
NC
7949=for Pod::Functions get current seekpointer on a filehandle
7950
9124316e
JH
7951Returns the current position I<in bytes> for FILEHANDLE, or -1 on
7952error. FILEHANDLE may be an expression whose value gives the name of
7953the actual filehandle. If FILEHANDLE is omitted, assumes the file
7954last read.
7955
7956Note the I<in bytes>: even if the filehandle has been set to
740d4bb2
JW
7957operate on characters (for example by using the C<:encoding(utf8)> open
7958layer), tell() will return byte offsets, not character offsets (because
7959that would render seek() and tell() rather slow).
2b5ab1e7 7960
cfd73201
JH
7961The return value of tell() for the standard streams like the STDIN
7962depends on the operating system: it may return -1 or something else.
7963tell() on pipes, fifos, and sockets usually returns -1.
7964
19799a22 7965There is no C<systell> function. Use C<sysseek(FH, 0, 1)> for that.
a0d0e21e 7966
3b10bc60 7967Do not use tell() (or other buffered I/O operations) on a filehandle
8f1da26d 7968that has been manipulated by sysread(), syswrite(), or sysseek().
59c9df15 7969Those functions ignore the buffering, while tell() does not.
9124316e 7970
a0d0e21e 7971=item telldir DIRHANDLE
d74e8afc 7972X<telldir>
a0d0e21e 7973
c17cdb72
NC
7974=for Pod::Functions get current seekpointer on a directory handle
7975
19799a22
GS
7976Returns the current position of the C<readdir> routines on DIRHANDLE.
7977Value may be given to C<seekdir> to access a particular location in a
cf264981
SP
7978directory. C<telldir> has the same caveats about possible directory
7979compaction as the corresponding system library routine.
a0d0e21e 7980
4633a7c4 7981=item tie VARIABLE,CLASSNAME,LIST
d74e8afc 7982X<tie>
a0d0e21e 7983
d9b04284 7984=for Pod::Functions +5.002 bind a variable to an object class
c17cdb72 7985
4633a7c4
LW
7986This function binds a variable to a package class that will provide the
7987implementation for the variable. VARIABLE is the name of the variable
7988to be enchanted. CLASSNAME is the name of a class implementing objects
19799a22 7989of correct type. Any additional arguments are passed to the C<new>
8a059744
GS
7990method of the class (meaning C<TIESCALAR>, C<TIEHANDLE>, C<TIEARRAY>,
7991or C<TIEHASH>). Typically these are arguments such as might be passed
19799a22
GS
7992to the C<dbm_open()> function of C. The object returned by the C<new>
7993method is also returned by the C<tie> function, which would be useful
8a059744 7994if you want to access other methods in CLASSNAME.
a0d0e21e 7995
19799a22 7996Note that functions such as C<keys> and C<values> may return huge lists
1d2dff63 7997when used on large objects, like DBM files. You may prefer to use the
19799a22 7998C<each> function to iterate over such. Example:
a0d0e21e
LW
7999
8000 # print out history file offsets
4633a7c4 8001 use NDBM_File;
da0045b7 8002 tie(%HIST, 'NDBM_File', '/usr/lib/news/history', 1, 0);
a0d0e21e 8003 while (($key,$val) = each %HIST) {
a9a5a0dc 8004 print $key, ' = ', unpack('L',$val), "\n";
a0d0e21e
LW
8005 }
8006 untie(%HIST);
8007
aa689395 8008A class implementing a hash should have the following methods:
a0d0e21e 8009
4633a7c4 8010 TIEHASH classname, LIST
a0d0e21e
LW
8011 FETCH this, key
8012 STORE this, key, value
8013 DELETE this, key
8a059744 8014 CLEAR this
a0d0e21e
LW
8015 EXISTS this, key
8016 FIRSTKEY this
8017 NEXTKEY this, lastkey
a3bcc51e 8018 SCALAR this
8a059744 8019 DESTROY this
d7da42b7 8020 UNTIE this
a0d0e21e 8021
4633a7c4 8022A class implementing an ordinary array should have the following methods:
a0d0e21e 8023
4633a7c4 8024 TIEARRAY classname, LIST
a0d0e21e
LW
8025 FETCH this, key
8026 STORE this, key, value
8a059744
GS
8027 FETCHSIZE this
8028 STORESIZE this, count
8029 CLEAR this
8030 PUSH this, LIST
8031 POP this
8032 SHIFT this
8033 UNSHIFT this, LIST
8034 SPLICE this, offset, length, LIST
8035 EXTEND this, count
8036 DESTROY this
d7da42b7 8037 UNTIE this
8a059744 8038
3b10bc60 8039A class implementing a filehandle should have the following methods:
8a059744
GS
8040
8041 TIEHANDLE classname, LIST
8042 READ this, scalar, length, offset
8043 READLINE this
8044 GETC this
8045 WRITE this, scalar, length, offset
8046 PRINT this, LIST
8047 PRINTF this, format, LIST
e08f2115
GA
8048 BINMODE this
8049 EOF this
8050 FILENO this
8051 SEEK this, position, whence
8052 TELL this
8053 OPEN this, mode, LIST
8a059744
GS
8054 CLOSE this
8055 DESTROY this
d7da42b7 8056 UNTIE this
a0d0e21e 8057
4633a7c4 8058A class implementing a scalar should have the following methods:
a0d0e21e 8059
4633a7c4 8060 TIESCALAR classname, LIST
54310121 8061 FETCH this,
a0d0e21e 8062 STORE this, value
8a059744 8063 DESTROY this
d7da42b7 8064 UNTIE this
8a059744
GS
8065
8066Not all methods indicated above need be implemented. See L<perltie>,
2b5ab1e7 8067L<Tie::Hash>, L<Tie::Array>, L<Tie::Scalar>, and L<Tie::Handle>.
a0d0e21e 8068
3b10bc60 8069Unlike C<dbmopen>, the C<tie> function will not C<use> or C<require> a module
8070for you; you need to do that explicitly yourself. See L<DB_File>
19799a22 8071or the F<Config> module for interesting C<tie> implementations.
4633a7c4 8072
b687b08b 8073For further details see L<perltie>, L<"tied VARIABLE">.
cc6b7395 8074
f3cbc334 8075=item tied VARIABLE
d74e8afc 8076X<tied>
f3cbc334 8077
c17cdb72
NC
8078=for Pod::Functions get a reference to the object underlying a tied variable
8079
f3cbc334 8080Returns a reference to the object underlying VARIABLE (the same value
19799a22 8081that was originally returned by the C<tie> call that bound the variable
f3cbc334
RS
8082to a package.) Returns the undefined value if VARIABLE isn't tied to a
8083package.
8084
a0d0e21e 8085=item time
d74e8afc 8086X<time> X<epoch>
a0d0e21e 8087
c17cdb72
NC
8088=for Pod::Functions return number of seconds since 1970
8089
da0045b7 8090Returns the number of non-leap seconds since whatever time the system
ef4d88db 8091considers to be the epoch, suitable for feeding to C<gmtime> and
391b733c 8092C<localtime>. On most systems the epoch is 00:00:00 UTC, January 1, 1970;
ef4d88db
NC
8093a prominent exception being Mac OS Classic which uses 00:00:00, January 1,
80941904 in the current local time zone for its epoch.
a0d0e21e 8095
8f1da26d
TC
8096For measuring time in better granularity than one second, use the
8097L<Time::HiRes> module from Perl 5.8 onwards (or from CPAN before then), or,
8098if you have gettimeofday(2), you may be able to use the C<syscall>
8099interface of Perl. See L<perlfaq8> for details.
68f8bed4 8100
435fbc73
GS
8101For date and time processing look at the many related modules on CPAN.
8102For a comprehensive date and time representation look at the
8103L<DateTime> module.
8104
a0d0e21e 8105=item times
d74e8afc 8106X<times>
a0d0e21e 8107
c17cdb72
NC
8108=for Pod::Functions return elapsed time for self and child processes
8109
8f1da26d
TC
8110Returns a four-element list giving the user and system times in
8111seconds for this process and any exited children of this process.
a0d0e21e
LW
8112
8113 ($user,$system,$cuser,$csystem) = times;
8114
dc19f4fb
MJD
8115In scalar context, C<times> returns C<$user>.
8116
3b10bc60 8117Children's times are only included for terminated children.
2a958fe2 8118
ea9eb35a
BJ
8119Portability issues: L<perlport/times>.
8120
a0d0e21e
LW
8121=item tr///
8122
c17cdb72
NC
8123=for Pod::Functions transliterate a string
8124
9f4b9cd0
SP
8125The transliteration operator. Same as C<y///>. See
8126L<perlop/"Quote and Quote-like Operators">.
a0d0e21e
LW
8127
8128=item truncate FILEHANDLE,LENGTH
d74e8afc 8129X<truncate>
a0d0e21e
LW
8130
8131=item truncate EXPR,LENGTH
8132
c17cdb72
NC
8133=for Pod::Functions shorten a file
8134
a0d0e21e 8135Truncates the file opened on FILEHANDLE, or named by EXPR, to the
3b10bc60 8136specified length. Raises an exception if truncate isn't implemented
8f1da26d 8137on your system. Returns true if successful, C<undef> on error.
a0d0e21e 8138
90ddc76f
MS
8139The behavior is undefined if LENGTH is greater than the length of the
8140file.
8141
8577f58c 8142The position in the file of FILEHANDLE is left unchanged. You may want to
96090e4f 8143call L<seek|/"seek FILEHANDLE,POSITION,WHENCE"> before writing to the file.
8577f58c 8144
ea9eb35a
BJ
8145Portability issues: L<perlport/truncate>.
8146
a0d0e21e 8147=item uc EXPR
d74e8afc 8148X<uc> X<uppercase> X<toupper>
a0d0e21e 8149
54310121 8150=item uc
bbce6d69 8151
c17cdb72
NC
8152=for Pod::Functions return upper-case version of a string
8153
a0d0e21e 8154Returns an uppercased version of EXPR. This is the internal function
3980dc9c 8155implementing the C<\U> escape in double-quoted strings.
983ffd37 8156It does not attempt to do titlecase mapping on initial letters. See
3980dc9c 8157L</ucfirst> for that.
a0d0e21e 8158
7660c0ab 8159If EXPR is omitted, uses C<$_>.
bbce6d69 8160
3980dc9c
KW
8161This function behaves the same way under various pragma, such as in a locale,
8162as L</lc> does.
8163
a0d0e21e 8164=item ucfirst EXPR
d74e8afc 8165X<ucfirst> X<uppercase>
a0d0e21e 8166
54310121 8167=item ucfirst
bbce6d69 8168
c17cdb72
NC
8169=for Pod::Functions return a string with just the next letter in upper case
8170
ad0029c4
JH
8171Returns the value of EXPR with the first character in uppercase
8172(titlecase in Unicode). This is the internal function implementing
3980dc9c 8173the C<\u> escape in double-quoted strings.
a0d0e21e 8174
7660c0ab 8175If EXPR is omitted, uses C<$_>.
bbce6d69 8176
3980dc9c
KW
8177This function behaves the same way under various pragma, such as in a locale,
8178as L</lc> does.
8179
a0d0e21e 8180=item umask EXPR
d74e8afc 8181X<umask>
a0d0e21e
LW
8182
8183=item umask
8184
c17cdb72
NC
8185=for Pod::Functions set file creation mode mask
8186
2f9daede 8187Sets the umask for the process to EXPR and returns the previous value.
eec2d3df
GS
8188If EXPR is omitted, merely returns the current umask.
8189
0591cd52
NT
8190The Unix permission C<rwxr-x---> is represented as three sets of three
8191bits, or three octal digits: C<0750> (the leading 0 indicates octal
b5a41e52 8192and isn't one of the digits). The C<umask> value is such a number
0591cd52
NT
8193representing disabled permissions bits. The permission (or "mode")
8194values you pass C<mkdir> or C<sysopen> are modified by your umask, so
8195even if you tell C<sysopen> to create a file with permissions C<0777>,
8f1da26d 8196if your umask is C<0022>, then the file will actually be created with
0591cd52
NT
8197permissions C<0755>. If your C<umask> were C<0027> (group can't
8198write; others can't read, write, or execute), then passing
8f1da26d
TC
8199C<sysopen> C<0666> would create a file with mode C<0640> (because
8200C<0666 &~ 027> is C<0640>).
0591cd52
NT
8201
8202Here's some advice: supply a creation mode of C<0666> for regular
19799a22
GS
8203files (in C<sysopen>) and one of C<0777> for directories (in
8204C<mkdir>) and executable files. This gives users the freedom of
0591cd52
NT
8205choice: if they want protected files, they might choose process umasks
8206of C<022>, C<027>, or even the particularly antisocial mask of C<077>.
8207Programs should rarely if ever make policy decisions better left to
8208the user. The exception to this is when writing files that should be
8209kept private: mail files, web browser cookies, I<.rhosts> files, and
8210so on.
8211
f86cebdf 8212If umask(2) is not implemented on your system and you are trying to
3b10bc60 8213restrict access for I<yourself> (i.e., C<< (EXPR & 0700) > 0 >>),
8214raises an exception. If umask(2) is not implemented and you are
eec2d3df
GS
8215not trying to restrict access for yourself, returns C<undef>.
8216
8217Remember that a umask is a number, usually given in octal; it is I<not> a
8218string of octal digits. See also L</oct>, if all you have is a string.
a0d0e21e 8219
ea9eb35a
BJ
8220Portability issues: L<perlport/umask>.
8221
a0d0e21e 8222=item undef EXPR
d74e8afc 8223X<undef> X<undefine>
a0d0e21e
LW
8224
8225=item undef
8226
c17cdb72
NC
8227=for Pod::Functions remove a variable or function definition
8228
54310121 8229Undefines the value of EXPR, which must be an lvalue. Use only on a
19799a22 8230scalar value, an array (using C<@>), a hash (using C<%>), a subroutine
3b10bc60 8231(using C<&>), or a typeglob (using C<*>). Saying C<undef $hash{$key}>
20408e3c 8232will probably not do what you expect on most predefined variables or
4509d391 8233DBM list values, so don't do that; see L</delete>. Always returns the
20408e3c
GS
8234undefined value. You can omit the EXPR, in which case nothing is
8235undefined, but you still get an undefined value that you could, for
3b10bc60 8236instance, return from a subroutine, assign to a variable, or pass as a
20408e3c 8237parameter. Examples:
a0d0e21e
LW
8238
8239 undef $foo;
f86cebdf 8240 undef $bar{'blurfl'}; # Compare to: delete $bar{'blurfl'};
a0d0e21e 8241 undef @ary;
aa689395 8242 undef %hash;
a0d0e21e 8243 undef &mysub;
20408e3c 8244 undef *xyz; # destroys $xyz, @xyz, %xyz, &xyz, etc.
54310121 8245 return (wantarray ? (undef, $errmsg) : undef) if $they_blew_it;
2f9daede
TP
8246 select undef, undef, undef, 0.25;
8247 ($a, $b, undef, $c) = &foo; # Ignore third value returned
a0d0e21e 8248
5a964f20
TC
8249Note that this is a unary operator, not a list operator.
8250
a0d0e21e 8251=item unlink LIST
dd184578 8252X<unlink> X<delete> X<remove> X<rm> X<del>
a0d0e21e 8253
54310121 8254=item unlink
bbce6d69 8255
c17cdb72
NC
8256=for Pod::Functions remove one link to a file
8257
391b733c
FC
8258Deletes a list of files. On success, it returns the number of files
8259it successfully deleted. On failure, it returns false and sets C<$!>
40ea6f68 8260(errno):
a0d0e21e 8261
40ea6f68 8262 my $unlinked = unlink 'a', 'b', 'c';
a0d0e21e 8263 unlink @goners;
40ea6f68 8264 unlink glob "*.bak";
a0d0e21e 8265
40ea6f68 8266On error, C<unlink> will not tell you which files it could not remove.
734c9e01 8267If you want to know which files you could not remove, try them one
40ea6f68 8268at a time:
a0d0e21e 8269
40ea6f68 8270 foreach my $file ( @goners ) {
8271 unlink $file or warn "Could not unlink $file: $!";
3b10bc60 8272 }
40ea6f68 8273
8274Note: C<unlink> will not attempt to delete directories unless you are
391b733c 8275superuser and the B<-U> flag is supplied to Perl. Even if these
40ea6f68 8276conditions are met, be warned that unlinking a directory can inflict
8277damage on your filesystem. Finally, using C<unlink> on directories is
8278not supported on many operating systems. Use C<rmdir> instead.
8279
8280If LIST is omitted, C<unlink> uses C<$_>.
bbce6d69 8281
a0d0e21e 8282=item unpack TEMPLATE,EXPR
d74e8afc 8283X<unpack>
a0d0e21e 8284
13dcffc6
CS
8285=item unpack TEMPLATE
8286
c17cdb72
NC
8287=for Pod::Functions convert binary structure into normal perl variables
8288
19799a22 8289C<unpack> does the reverse of C<pack>: it takes a string
2b6c5635 8290and expands it out into a list of values.
19799a22 8291(In scalar context, it returns merely the first value produced.)
2b6c5635 8292
eae68503 8293If EXPR is omitted, unpacks the C<$_> string.
3980dc9c 8294See L<perlpacktut> for an introduction to this function.
13dcffc6 8295
2b6c5635
GS
8296The string is broken into chunks described by the TEMPLATE. Each chunk
8297is converted separately to a value. Typically, either the string is a result
f337b084 8298of C<pack>, or the characters of the string represent a C structure of some
2b6c5635
GS
8299kind.
8300
19799a22 8301The TEMPLATE has the same format as in the C<pack> function.
a0d0e21e
LW
8302Here's a subroutine that does substring:
8303
8304 sub substr {
5ed4f2ec 8305 my($what,$where,$howmuch) = @_;
8306 unpack("x$where a$howmuch", $what);
a0d0e21e
LW
8307 }
8308
8309and then there's
8310
f337b084 8311 sub ordinal { unpack("W",$_[0]); } # same as ord()
a0d0e21e 8312
2b6c5635 8313In addition to fields allowed in pack(), you may prefix a field with
61eff3bc
JH
8314a %<number> to indicate that
8315you want a <number>-bit checksum of the items instead of the items
2b6c5635
GS
8316themselves. Default is a 16-bit checksum. Checksum is calculated by
8317summing numeric values of expanded values (for string fields the sum of
8f1da26d 8318C<ord($char)> is taken; for bit fields the sum of zeroes and ones).
2b6c5635
GS
8319
8320For example, the following
a0d0e21e
LW
8321computes the same number as the System V sum program:
8322
19799a22 8323 $checksum = do {
5ed4f2ec 8324 local $/; # slurp!
8325 unpack("%32W*",<>) % 65535;
19799a22 8326 };
a0d0e21e
LW
8327
8328The following efficiently counts the number of set bits in a bit vector:
8329
8330 $setbits = unpack("%32b*", $selectmask);
8331
951ba7fe 8332The C<p> and C<P> formats should be used with care. Since Perl
3160c391
GS
8333has no way of checking whether the value passed to C<unpack()>
8334corresponds to a valid memory location, passing a pointer value that's
8335not known to be valid is likely to have disastrous consequences.
8336
49704364
WL
8337If there are more pack codes or if the repeat count of a field or a group
8338is larger than what the remainder of the input string allows, the result
3b10bc60 8339is not well defined: the repeat count may be decreased, or
8340C<unpack()> may produce empty strings or zeros, or it may raise an exception.
8341If the input string is longer than one described by the TEMPLATE,
8342the remainder of that input string is ignored.
2b6c5635 8343
851646ae 8344See L</pack> for more examples and notes.
5a929a98 8345
532eee96 8346=item unshift ARRAY,LIST
d74e8afc 8347X<unshift>
a0d0e21e 8348
f5a93a43
TC
8349=item unshift EXPR,LIST
8350
c17cdb72
NC
8351=for Pod::Functions prepend more elements to the beginning of a list
8352
19799a22 8353Does the opposite of a C<shift>. Or the opposite of a C<push>,
a0d0e21e 8354depending on how you look at it. Prepends list to the front of the
8f1da26d 8355array and returns the new number of elements in the array.
a0d0e21e 8356
76e4c2bb 8357 unshift(@ARGV, '-e') unless $ARGV[0] =~ /^-/;
a0d0e21e
LW
8358
8359Note the LIST is prepended whole, not one element at a time, so the
19799a22 8360prepended elements stay in the same order. Use C<reverse> to do the
a0d0e21e
LW
8361reverse.
8362
f5a93a43
TC
8363Starting with Perl 5.14, C<unshift> can take a scalar EXPR, which must hold
8364a reference to an unblessed array. The argument will be dereferenced
8365automatically. This aspect of C<unshift> is considered highly
8366experimental. The exact behaviour may change in a future version of Perl.
cba5a3b0 8367
bade7fbc
TC
8368To avoid confusing would-be users of your code who are running earlier
8369versions of Perl with mysterious syntax errors, put this sort of thing at
8370the top of your file to signal that your code will work I<only> on Perls of
8371a recent vintage:
8372
8373 use 5.014; # so push/pop/etc work on scalars (experimental)
8374
8375=item untie VARIABLE
8376X<untie>
8377
c17cdb72
NC
8378=for Pod::Functions break a tie binding to a variable
8379
bade7fbc
TC
8380Breaks the binding between a variable and a package.
8381(See L<tie|/tie VARIABLE,CLASSNAME,LIST>.)
8382Has no effect if the variable is not tied.
8383
f6c8478c 8384=item use Module VERSION LIST
d74e8afc 8385X<use> X<module> X<import>
f6c8478c
GS
8386
8387=item use Module VERSION
8388
a0d0e21e
LW
8389=item use Module LIST
8390
8391=item use Module
8392
da0045b7 8393=item use VERSION
8394
c17cdb72
NC
8395=for Pod::Functions load in a module at compile time and import its namespace
8396
a0d0e21e
LW
8397Imports some semantics into the current package from the named module,
8398generally by aliasing certain subroutine or variable names into your
8399package. It is exactly equivalent to
8400
6d9d0573 8401 BEGIN { require Module; Module->import( LIST ); }
a0d0e21e 8402
54310121 8403except that Module I<must> be a bareword.
8f1da26d 8404The importation can be made conditional; see L<if>.
da0045b7 8405
bd12309b
DG
8406In the peculiar C<use VERSION> form, VERSION may be either a positive
8407decimal fraction such as 5.006, which will be compared to C<$]>, or a v-string
8408of the form v5.6.1, which will be compared to C<$^V> (aka $PERL_VERSION). An
3b10bc60 8409exception is raised if VERSION is greater than the version of the
c986422f
RGS
8410current Perl interpreter; Perl will not attempt to parse the rest of the
8411file. Compare with L</require>, which can do a similar check at run time.
8412Symmetrically, C<no VERSION> allows you to specify that you want a version
3b10bc60 8413of Perl older than the specified one.
3b825e41
RK
8414
8415Specifying VERSION as a literal of the form v5.6.1 should generally be
8416avoided, because it leads to misleading error messages under earlier
2e8342de
RGS
8417versions of Perl (that is, prior to 5.6.0) that do not support this
8418syntax. The equivalent numeric version should be used instead.
fbc891ce 8419
5ed4f2ec 8420 use v5.6.1; # compile time version check
8421 use 5.6.1; # ditto
8422 use 5.006_001; # ditto; preferred for backwards compatibility
16070b82
GS
8423
8424This is often useful if you need to check the current Perl version before
2e8342de
RGS
8425C<use>ing library modules that won't work with older versions of Perl.
8426(We try not to do this more than we have to.)
da0045b7 8427
4653ec93
FC
8428C<use VERSION> also enables all features available in the requested
8429version as defined by the C<feature> pragma, disabling any features
1b8bf4b9 8430not in the requested version's feature bundle. See L<feature>.
3b10bc60 8431Similarly, if the specified Perl version is greater than or equal to
4653ec93
FC
84325.11.0, strictures are enabled lexically as
8433with C<use strict>. Any explicit use of
70397346 8434C<use strict> or C<no strict> overrides C<use VERSION>, even if it comes
4653ec93
FC
8435before it. In both cases, the F<feature.pm> and F<strict.pm> files are
8436not actually loaded.
7dfde25d 8437
19799a22 8438The C<BEGIN> forces the C<require> and C<import> to happen at compile time. The
7660c0ab 8439C<require> makes sure the module is loaded into memory if it hasn't been
3b10bc60 8440yet. The C<import> is not a builtin; it's just an ordinary static method
19799a22 8441call into the C<Module> package to tell the module to import the list of
a0d0e21e 8442features back into the current package. The module can implement its
19799a22
GS
8443C<import> method any way it likes, though most modules just choose to
8444derive their C<import> method via inheritance from the C<Exporter> class that
8445is defined in the C<Exporter> module. See L<Exporter>. If no C<import>
593b9c14
YST
8446method can be found then the call is skipped, even if there is an AUTOLOAD
8447method.
cb1a09d0 8448
31686daf
JP
8449If you do not want to call the package's C<import> method (for instance,
8450to stop your namespace from being altered), explicitly supply the empty list:
cb1a09d0
AD
8451
8452 use Module ();
8453
8454That is exactly equivalent to
8455
5a964f20 8456 BEGIN { require Module }
a0d0e21e 8457
da0045b7 8458If the VERSION argument is present between Module and LIST, then the
71be2cbc 8459C<use> will call the VERSION method in class Module with the given
8460version as an argument. The default VERSION method, inherited from
44dcb63b 8461the UNIVERSAL class, croaks if the given version is larger than the
b76cc8ba 8462value of the variable C<$Module::VERSION>.
f6c8478c
GS
8463
8464Again, there is a distinction between omitting LIST (C<import> called
8465with no arguments) and an explicit empty LIST C<()> (C<import> not
8466called). Note that there is no comma after VERSION!
da0045b7 8467
a0d0e21e
LW
8468Because this is a wide-open interface, pragmas (compiler directives)
8469are also implemented this way. Currently implemented pragmas are:
8470
f3798619 8471 use constant;
4633a7c4 8472 use diagnostics;
f3798619 8473 use integer;
4438c4b7
JH
8474 use sigtrap qw(SEGV BUS);
8475 use strict qw(subs vars refs);
8476 use subs qw(afunc blurfl);
8477 use warnings qw(all);
58c7fc7c 8478 use sort qw(stable _quicksort _mergesort);
a0d0e21e 8479
19799a22 8480Some of these pseudo-modules import semantics into the current
5a964f20
TC
8481block scope (like C<strict> or C<integer>, unlike ordinary modules,
8482which import symbols into the current package (which are effective
8483through the end of the file).
a0d0e21e 8484
c362798e
Z
8485Because C<use> takes effect at compile time, it doesn't respect the
8486ordinary flow control of the code being compiled. In particular, putting
8487a C<use> inside the false branch of a conditional doesn't prevent it
3b10bc60 8488from being processed. If a module or pragma only needs to be loaded
c362798e
Z
8489conditionally, this can be done using the L<if> pragma:
8490
8491 use if $] < 5.008, "utf8";
8492 use if WANT_WARNINGS, warnings => qw(all);
8493
8f1da26d 8494There's a corresponding C<no> declaration that unimports meanings imported
19799a22 8495by C<use>, i.e., it calls C<unimport Module LIST> instead of C<import>.
80d38338
TC
8496It behaves just as C<import> does with VERSION, an omitted or empty LIST,
8497or no unimport method being found.
a0d0e21e
LW
8498
8499 no integer;
8500 no strict 'refs';
4438c4b7 8501 no warnings;
a0d0e21e 8502
e0de7c21 8503Care should be taken when using the C<no VERSION> form of C<no>. It is
8f1da26d 8504I<only> meant to be used to assert that the running Perl is of a earlier
e0de7c21
RS
8505version than its argument and I<not> to undo the feature-enabling side effects
8506of C<use VERSION>.
8507
ac634a9a 8508See L<perlmodlib> for a list of standard modules and pragmas. See L<perlrun>
3b10bc60 8509for the C<-M> and C<-m> command-line options to Perl that give C<use>
31686daf 8510functionality from the command-line.
a0d0e21e
LW
8511
8512=item utime LIST
d74e8afc 8513X<utime>
a0d0e21e 8514
c17cdb72
NC
8515=for Pod::Functions set a file's last access and modify times
8516
a0d0e21e 8517Changes the access and modification times on each file of a list of
8f1da26d 8518files. The first two elements of the list must be the NUMERIC access
a0d0e21e 8519and modification times, in that order. Returns the number of files
46cdf678 8520successfully changed. The inode change time of each file is set
4bc2a53d 8521to the current time. For example, this code has the same effect as the
a4142048
WL
8522Unix touch(1) command when the files I<already exist> and belong to
8523the user running the program:
a0d0e21e
LW
8524
8525 #!/usr/bin/perl
2c21a326
GA
8526 $atime = $mtime = time;
8527 utime $atime, $mtime, @ARGV;
4bc2a53d 8528
3b10bc60 8529Since Perl 5.7.2, if the first two elements of the list are C<undef>,
8530the utime(2) syscall from your C library is called with a null second
391b733c 8531argument. On most systems, this will set the file's access and
80d38338 8532modification times to the current time (i.e., equivalent to the example
3b10bc60 8533above) and will work even on files you don't own provided you have write
a4142048 8534permission:
c6f7b413 8535
3b10bc60 8536 for $file (@ARGV) {
8537 utime(undef, undef, $file)
8538 || warn "couldn't touch $file: $!";
8539 }
c6f7b413 8540
2c21a326
GA
8541Under NFS this will use the time of the NFS server, not the time of
8542the local machine. If there is a time synchronization problem, the
8543NFS server and local machine will have different times. The Unix
8544touch(1) command will in fact normally use this form instead of the
8545one shown in the first example.
8546
3b10bc60 8547Passing only one of the first two elements as C<undef> is
8548equivalent to passing a 0 and will not have the effect
8549described when both are C<undef>. This also triggers an
2c21a326
GA
8550uninitialized warning.
8551
3b10bc60 8552On systems that support futimes(2), you may pass filehandles among the
8553files. On systems that don't support futimes(2), passing filehandles raises
8554an exception. Filehandles must be passed as globs or glob references to be
8555recognized; barewords are considered filenames.
e96b369d 8556
ea9eb35a
BJ
8557Portability issues: L<perlport/utime>.
8558
532eee96 8559=item values HASH
d74e8afc 8560X<values>
a0d0e21e 8561
532eee96 8562=item values ARRAY
aeedbbed 8563
f5a93a43
TC
8564=item values EXPR
8565
c17cdb72
NC
8566=for Pod::Functions return a list of the values in a hash
8567
bade7fbc
TC
8568In list context, returns a list consisting of all the values of the named
8569hash. In Perl 5.12 or later only, will also return a list of the values of
8570an array; prior to that release, attempting to use an array argument will
8571produce a syntax error. In scalar context, returns the number of values.
504f80c1 8572
bade7fbc
TC
8573When called on a hash, the values are returned in an apparently random
8574order. The actual random order is subject to change in future versions of
8575Perl, but it is guaranteed to be the same order as either the C<keys> or
8576C<each> function would produce on the same (unmodified) hash. Since Perl
85775.8.1 the ordering is different even between different runs of Perl for
8578security reasons (see L<perlsec/"Algorithmic Complexity Attacks">).
504f80c1 8579
aeedbbed 8580As a side effect, calling values() resets the HASH or ARRAY's internal
391b733c
FC
8581iterator, see L</each>. (In particular, calling values() in void context
8582resets the iterator with no other overhead. Apart from resetting the
bade7fbc
TC
8583iterator, C<values @array> in list context is the same as plain C<@array>.
8584(We recommend that you use void context C<keys @array> for this, but
8585reasoned that taking C<values @array> out would require more
8586documentation than leaving it in.)
aeedbbed 8587
8ea1e5d4
GS
8588Note that the values are not copied, which means modifying them will
8589modify the contents of the hash:
2b5ab1e7 8590
5ed4f2ec 8591 for (values %hash) { s/foo/bar/g } # modifies %hash values
8ea1e5d4 8592 for (@hash{keys %hash}) { s/foo/bar/g } # same
2b5ab1e7 8593
f5a93a43
TC
8594Starting with Perl 5.14, C<values> can take a scalar EXPR, which must hold
8595a reference to an unblessed hash or array. The argument will be
8596dereferenced automatically. This aspect of C<values> is considered highly
8597experimental. The exact behaviour may change in a future version of Perl.
cba5a3b0
DG
8598
8599 for (values $hashref) { ... }
8600 for (values $obj->get_arrayref) { ... }
8601
bade7fbc
TC
8602To avoid confusing would-be users of your code who are running earlier
8603versions of Perl with mysterious syntax errors, put this sort of thing at
8604the top of your file to signal that your code will work I<only> on Perls of
8605a recent vintage:
8606
8607 use 5.012; # so keys/values/each work on arrays
8608 use 5.014; # so keys/values/each work on scalars (experimental)
8609
19799a22 8610See also C<keys>, C<each>, and C<sort>.
a0d0e21e
LW
8611
8612=item vec EXPR,OFFSET,BITS
d74e8afc 8613X<vec> X<bit> X<bit vector>
a0d0e21e 8614
c17cdb72
NC
8615=for Pod::Functions test or set particular bits in a string
8616
e69129f1 8617Treats the string in EXPR as a bit vector made up of elements of
8f1da26d 8618width BITS and returns the value of the element specified by OFFSET
e69129f1
GS
8619as an unsigned integer. BITS therefore specifies the number of bits
8620that are reserved for each element in the bit vector. This must
8621be a power of two from 1 to 32 (or 64, if your platform supports
8622that).
c5a0f51a 8623
b76cc8ba 8624If BITS is 8, "elements" coincide with bytes of the input string.
c73032f5
IZ
8625
8626If BITS is 16 or more, bytes of the input string are grouped into chunks
8627of size BITS/8, and each group is converted to a number as with
b1866b2d 8628pack()/unpack() with big-endian formats C<n>/C<N> (and analogously
c73032f5
IZ
8629for BITS==64). See L<"pack"> for details.
8630
8631If bits is 4 or less, the string is broken into bytes, then the bits
8632of each byte are broken into 8/BITS groups. Bits of a byte are
8633numbered in a little-endian-ish way, as in C<0x01>, C<0x02>,
8634C<0x04>, C<0x08>, C<0x10>, C<0x20>, C<0x40>, C<0x80>. For example,
8635breaking the single input byte C<chr(0x36)> into two groups gives a list
8636C<(0x6, 0x3)>; breaking it into 4 groups gives C<(0x2, 0x1, 0x3, 0x0)>.
8637
81e118e0
JH
8638C<vec> may also be assigned to, in which case parentheses are needed
8639to give the expression the correct precedence as in
22dc801b 8640
8641 vec($image, $max_x * $x + $y, 8) = 3;
a0d0e21e 8642
fe58ced6
MG
8643If the selected element is outside the string, the value 0 is returned.
8644If an element off the end of the string is written to, Perl will first
8645extend the string with sufficiently many zero bytes. It is an error
80d38338 8646to try to write off the beginning of the string (i.e., negative OFFSET).
fac70343 8647
2575c402
JW
8648If the string happens to be encoded as UTF-8 internally (and thus has
8649the UTF8 flag set), this is ignored by C<vec>, and it operates on the
8650internal byte string, not the conceptual character string, even if you
8651only have characters with values less than 256.
246fae53 8652
fac70343
GS
8653Strings created with C<vec> can also be manipulated with the logical
8654operators C<|>, C<&>, C<^>, and C<~>. These operators will assume a bit
8655vector operation is desired when both operands are strings.
c5a0f51a 8656See L<perlop/"Bitwise String Operators">.
a0d0e21e 8657
7660c0ab 8658The following code will build up an ASCII string saying C<'PerlPerlPerl'>.
19799a22 8659The comments show the string after each step. Note that this code works
cca87523
GS
8660in the same way on big-endian or little-endian machines.
8661
8662 my $foo = '';
5ed4f2ec 8663 vec($foo, 0, 32) = 0x5065726C; # 'Perl'
e69129f1
GS
8664
8665 # $foo eq "Perl" eq "\x50\x65\x72\x6C", 32 bits
5ed4f2ec 8666 print vec($foo, 0, 8); # prints 80 == 0x50 == ord('P')
8667
8668 vec($foo, 2, 16) = 0x5065; # 'PerlPe'
8669 vec($foo, 3, 16) = 0x726C; # 'PerlPerl'
8670 vec($foo, 8, 8) = 0x50; # 'PerlPerlP'
8671 vec($foo, 9, 8) = 0x65; # 'PerlPerlPe'
8672 vec($foo, 20, 4) = 2; # 'PerlPerlPe' . "\x02"
8673 vec($foo, 21, 4) = 7; # 'PerlPerlPer'
8674 # 'r' is "\x72"
8675 vec($foo, 45, 2) = 3; # 'PerlPerlPer' . "\x0c"
8676 vec($foo, 93, 1) = 1; # 'PerlPerlPer' . "\x2c"
8677 vec($foo, 94, 1) = 1; # 'PerlPerlPerl'
8678 # 'l' is "\x6c"
cca87523 8679
19799a22 8680To transform a bit vector into a string or list of 0's and 1's, use these:
a0d0e21e
LW
8681
8682 $bits = unpack("b*", $vector);
8683 @bits = split(//, unpack("b*", $vector));
8684
7660c0ab 8685If you know the exact length in bits, it can be used in place of the C<*>.
a0d0e21e 8686
e69129f1
GS
8687Here is an example to illustrate how the bits actually fall in place:
8688
8689 #!/usr/bin/perl -wl
8690
8691 print <<'EOT';
b76cc8ba 8692 0 1 2 3
e69129f1
GS
8693 unpack("V",$_) 01234567890123456789012345678901
8694 ------------------------------------------------------------------
8695 EOT
8696
8697 for $w (0..3) {
8698 $width = 2**$w;
8699 for ($shift=0; $shift < $width; ++$shift) {
8700 for ($off=0; $off < 32/$width; ++$off) {
8701 $str = pack("B*", "0"x32);
8702 $bits = (1<<$shift);
8703 vec($str, $off, $width) = $bits;
8704 $res = unpack("b*",$str);
8705 $val = unpack("V", $str);
8706 write;
8707 }
8708 }
8709 }
8710
8711 format STDOUT =
8712 vec($_,@#,@#) = @<< == @######### @>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8713 $off, $width, $bits, $val, $res
8714 .
8715 __END__
8716
80d38338
TC
8717Regardless of the machine architecture on which it runs, the
8718example above should print the following table:
e69129f1 8719
b76cc8ba 8720 0 1 2 3
e69129f1
GS
8721 unpack("V",$_) 01234567890123456789012345678901
8722 ------------------------------------------------------------------
8723 vec($_, 0, 1) = 1 == 1 10000000000000000000000000000000
8724 vec($_, 1, 1) = 1 == 2 01000000000000000000000000000000
8725 vec($_, 2, 1) = 1 == 4 00100000000000000000000000000000
8726 vec($_, 3, 1) = 1 == 8 00010000000000000000000000000000
8727 vec($_, 4, 1) = 1 == 16 00001000000000000000000000000000
8728 vec($_, 5, 1) = 1 == 32 00000100000000000000000000000000
8729 vec($_, 6, 1) = 1 == 64 00000010000000000000000000000000
8730 vec($_, 7, 1) = 1 == 128 00000001000000000000000000000000
8731 vec($_, 8, 1) = 1 == 256 00000000100000000000000000000000
8732 vec($_, 9, 1) = 1 == 512 00000000010000000000000000000000
8733 vec($_,10, 1) = 1 == 1024 00000000001000000000000000000000
8734 vec($_,11, 1) = 1 == 2048 00000000000100000000000000000000
8735 vec($_,12, 1) = 1 == 4096 00000000000010000000000000000000
8736 vec($_,13, 1) = 1 == 8192 00000000000001000000000000000000
8737 vec($_,14, 1) = 1 == 16384 00000000000000100000000000000000
8738 vec($_,15, 1) = 1 == 32768 00000000000000010000000000000000
8739 vec($_,16, 1) = 1 == 65536 00000000000000001000000000000000
8740 vec($_,17, 1) = 1 == 131072 00000000000000000100000000000000
8741 vec($_,18, 1) = 1 == 262144 00000000000000000010000000000000
8742 vec($_,19, 1) = 1 == 524288 00000000000000000001000000000000
8743 vec($_,20, 1) = 1 == 1048576 00000000000000000000100000000000
8744 vec($_,21, 1) = 1 == 2097152 00000000000000000000010000000000
8745 vec($_,22, 1) = 1 == 4194304 00000000000000000000001000000000
8746 vec($_,23, 1) = 1 == 8388608 00000000000000000000000100000000
8747 vec($_,24, 1) = 1 == 16777216 00000000000000000000000010000000
8748 vec($_,25, 1) = 1 == 33554432 00000000000000000000000001000000
8749 vec($_,26, 1) = 1 == 67108864 00000000000000000000000000100000
8750 vec($_,27, 1) = 1 == 134217728 00000000000000000000000000010000
8751 vec($_,28, 1) = 1 == 268435456 00000000000000000000000000001000
8752 vec($_,29, 1) = 1 == 536870912 00000000000000000000000000000100
8753 vec($_,30, 1) = 1 == 1073741824 00000000000000000000000000000010
8754 vec($_,31, 1) = 1 == 2147483648 00000000000000000000000000000001
8755 vec($_, 0, 2) = 1 == 1 10000000000000000000000000000000
8756 vec($_, 1, 2) = 1 == 4 00100000000000000000000000000000
8757 vec($_, 2, 2) = 1 == 16 00001000000000000000000000000000
8758 vec($_, 3, 2) = 1 == 64 00000010000000000000000000000000
8759 vec($_, 4, 2) = 1 == 256 00000000100000000000000000000000
8760 vec($_, 5, 2) = 1 == 1024 00000000001000000000000000000000
8761 vec($_, 6, 2) = 1 == 4096 00000000000010000000000000000000
8762 vec($_, 7, 2) = 1 == 16384 00000000000000100000000000000000
8763 vec($_, 8, 2) = 1 == 65536 00000000000000001000000000000000
8764 vec($_, 9, 2) = 1 == 262144 00000000000000000010000000000000
8765 vec($_,10, 2) = 1 == 1048576 00000000000000000000100000000000
8766 vec($_,11, 2) = 1 == 4194304 00000000000000000000001000000000
8767 vec($_,12, 2) = 1 == 16777216 00000000000000000000000010000000
8768 vec($_,13, 2) = 1 == 67108864 00000000000000000000000000100000
8769 vec($_,14, 2) = 1 == 268435456 00000000000000000000000000001000
8770 vec($_,15, 2) = 1 == 1073741824 00000000000000000000000000000010
8771 vec($_, 0, 2) = 2 == 2 01000000000000000000000000000000
8772 vec($_, 1, 2) = 2 == 8 00010000000000000000000000000000
8773 vec($_, 2, 2) = 2 == 32 00000100000000000000000000000000
8774 vec($_, 3, 2) = 2 == 128 00000001000000000000000000000000
8775 vec($_, 4, 2) = 2 == 512 00000000010000000000000000000000
8776 vec($_, 5, 2) = 2 == 2048 00000000000100000000000000000000
8777 vec($_, 6, 2) = 2 == 8192 00000000000001000000000000000000
8778 vec($_, 7, 2) = 2 == 32768 00000000000000010000000000000000
8779 vec($_, 8, 2) = 2 == 131072 00000000000000000100000000000000
8780 vec($_, 9, 2) = 2 == 524288 00000000000000000001000000000000
8781 vec($_,10, 2) = 2 == 2097152 00000000000000000000010000000000
8782 vec($_,11, 2) = 2 == 8388608 00000000000000000000000100000000
8783 vec($_,12, 2) = 2 == 33554432 00000000000000000000000001000000
8784 vec($_,13, 2) = 2 == 134217728 00000000000000000000000000010000
8785 vec($_,14, 2) = 2 == 536870912 00000000000000000000000000000100
8786 vec($_,15, 2) = 2 == 2147483648 00000000000000000000000000000001
8787 vec($_, 0, 4) = 1 == 1 10000000000000000000000000000000
8788 vec($_, 1, 4) = 1 == 16 00001000000000000000000000000000
8789 vec($_, 2, 4) = 1 == 256 00000000100000000000000000000000
8790 vec($_, 3, 4) = 1 == 4096 00000000000010000000000000000000
8791 vec($_, 4, 4) = 1 == 65536 00000000000000001000000000000000
8792 vec($_, 5, 4) = 1 == 1048576 00000000000000000000100000000000
8793 vec($_, 6, 4) = 1 == 16777216 00000000000000000000000010000000
8794 vec($_, 7, 4) = 1 == 268435456 00000000000000000000000000001000
8795 vec($_, 0, 4) = 2 == 2 01000000000000000000000000000000
8796 vec($_, 1, 4) = 2 == 32 00000100000000000000000000000000
8797 vec($_, 2, 4) = 2 == 512 00000000010000000000000000000000
8798 vec($_, 3, 4) = 2 == 8192 00000000000001000000000000000000
8799 vec($_, 4, 4) = 2 == 131072 00000000000000000100000000000000
8800 vec($_, 5, 4) = 2 == 2097152 00000000000000000000010000000000
8801 vec($_, 6, 4) = 2 == 33554432 00000000000000000000000001000000
8802 vec($_, 7, 4) = 2 == 536870912 00000000000000000000000000000100
8803 vec($_, 0, 4) = 4 == 4 00100000000000000000000000000000
8804 vec($_, 1, 4) = 4 == 64 00000010000000000000000000000000
8805 vec($_, 2, 4) = 4 == 1024 00000000001000000000000000000000
8806 vec($_, 3, 4) = 4 == 16384 00000000000000100000000000000000
8807 vec($_, 4, 4) = 4 == 262144 00000000000000000010000000000000
8808 vec($_, 5, 4) = 4 == 4194304 00000000000000000000001000000000
8809 vec($_, 6, 4) = 4 == 67108864 00000000000000000000000000100000
8810 vec($_, 7, 4) = 4 == 1073741824 00000000000000000000000000000010
8811 vec($_, 0, 4) = 8 == 8 00010000000000000000000000000000
8812 vec($_, 1, 4) = 8 == 128 00000001000000000000000000000000
8813 vec($_, 2, 4) = 8 == 2048 00000000000100000000000000000000
8814 vec($_, 3, 4) = 8 == 32768 00000000000000010000000000000000
8815 vec($_, 4, 4) = 8 == 524288 00000000000000000001000000000000
8816 vec($_, 5, 4) = 8 == 8388608 00000000000000000000000100000000
8817 vec($_, 6, 4) = 8 == 134217728 00000000000000000000000000010000
8818 vec($_, 7, 4) = 8 == 2147483648 00000000000000000000000000000001
8819 vec($_, 0, 8) = 1 == 1 10000000000000000000000000000000
8820 vec($_, 1, 8) = 1 == 256 00000000100000000000000000000000
8821 vec($_, 2, 8) = 1 == 65536 00000000000000001000000000000000
8822 vec($_, 3, 8) = 1 == 16777216 00000000000000000000000010000000
8823 vec($_, 0, 8) = 2 == 2 01000000000000000000000000000000
8824 vec($_, 1, 8) = 2 == 512 00000000010000000000000000000000
8825 vec($_, 2, 8) = 2 == 131072 00000000000000000100000000000000
8826 vec($_, 3, 8) = 2 == 33554432 00000000000000000000000001000000
8827 vec($_, 0, 8) = 4 == 4 00100000000000000000000000000000
8828 vec($_, 1, 8) = 4 == 1024 00000000001000000000000000000000
8829 vec($_, 2, 8) = 4 == 262144 00000000000000000010000000000000
8830 vec($_, 3, 8) = 4 == 67108864 00000000000000000000000000100000
8831 vec($_, 0, 8) = 8 == 8 00010000000000000000000000000000
8832 vec($_, 1, 8) = 8 == 2048 00000000000100000000000000000000
8833 vec($_, 2, 8) = 8 == 524288 00000000000000000001000000000000
8834 vec($_, 3, 8) = 8 == 134217728 00000000000000000000000000010000
8835 vec($_, 0, 8) = 16 == 16 00001000000000000000000000000000
8836 vec($_, 1, 8) = 16 == 4096 00000000000010000000000000000000
8837 vec($_, 2, 8) = 16 == 1048576 00000000000000000000100000000000
8838 vec($_, 3, 8) = 16 == 268435456 00000000000000000000000000001000
8839 vec($_, 0, 8) = 32 == 32 00000100000000000000000000000000
8840 vec($_, 1, 8) = 32 == 8192 00000000000001000000000000000000
8841 vec($_, 2, 8) = 32 == 2097152 00000000000000000000010000000000
8842 vec($_, 3, 8) = 32 == 536870912 00000000000000000000000000000100
8843 vec($_, 0, 8) = 64 == 64 00000010000000000000000000000000
8844 vec($_, 1, 8) = 64 == 16384 00000000000000100000000000000000
8845 vec($_, 2, 8) = 64 == 4194304 00000000000000000000001000000000
8846 vec($_, 3, 8) = 64 == 1073741824 00000000000000000000000000000010
8847 vec($_, 0, 8) = 128 == 128 00000001000000000000000000000000
8848 vec($_, 1, 8) = 128 == 32768 00000000000000010000000000000000
8849 vec($_, 2, 8) = 128 == 8388608 00000000000000000000000100000000
8850 vec($_, 3, 8) = 128 == 2147483648 00000000000000000000000000000001
8851
a0d0e21e 8852=item wait
d74e8afc 8853X<wait>
a0d0e21e 8854
c17cdb72
NC
8855=for Pod::Functions wait for any child process to die
8856
3b10bc60 8857Behaves like wait(2) on your system: it waits for a child
2b5ab1e7 8858process to terminate and returns the pid of the deceased process, or
e5218da5 8859C<-1> if there are no child processes. The status is returned in C<$?>
ca8d723e 8860and C<${^CHILD_ERROR_NATIVE}>.
2b5ab1e7
TC
8861Note that a return value of C<-1> could mean that child processes are
8862being automatically reaped, as described in L<perlipc>.
a0d0e21e 8863
c69ca1d4 8864If you use wait in your handler for $SIG{CHLD} it may accidentally for the
391b733c 8865child created by qx() or system(). See L<perlipc> for details.
0a18a49b 8866
ea9eb35a
BJ
8867Portability issues: L<perlport/wait>.
8868
a0d0e21e 8869=item waitpid PID,FLAGS
d74e8afc 8870X<waitpid>
a0d0e21e 8871
c17cdb72
NC
8872=for Pod::Functions wait for a particular child process to die
8873
2b5ab1e7
TC
8874Waits for a particular child process to terminate and returns the pid of
8875the deceased process, or C<-1> if there is no such child process. On some
8876systems, a value of 0 indicates that there are processes still running.
ca8d723e 8877The status is returned in C<$?> and C<${^CHILD_ERROR_NATIVE}>. If you say
a0d0e21e 8878
5f05dabc 8879 use POSIX ":sys_wait_h";
5a964f20 8880 #...
b76cc8ba 8881 do {
a9a5a0dc 8882 $kid = waitpid(-1, WNOHANG);
84b74420 8883 } while $kid > 0;
a0d0e21e 8884
2b5ab1e7
TC
8885then you can do a non-blocking wait for all pending zombie processes.
8886Non-blocking wait is available on machines supporting either the
3b10bc60 8887waitpid(2) or wait4(2) syscalls. However, waiting for a particular
2b5ab1e7
TC
8888pid with FLAGS of C<0> is implemented everywhere. (Perl emulates the
8889system call by remembering the status values of processes that have
8890exited but have not been harvested by the Perl script yet.)
a0d0e21e 8891
2b5ab1e7
TC
8892Note that on some systems, a return value of C<-1> could mean that child
8893processes are being automatically reaped. See L<perlipc> for details,
8894and for other examples.
5a964f20 8895
ea9eb35a
BJ
8896Portability issues: L<perlport/waitpid>.
8897
a0d0e21e 8898=item wantarray
d74e8afc 8899X<wantarray> X<context>
a0d0e21e 8900
c17cdb72
NC
8901=for Pod::Functions get void vs scalar vs list context of current subroutine call
8902
cc37eb0b 8903Returns true if the context of the currently executing subroutine or
20f13e4a 8904C<eval> is looking for a list value. Returns false if the context is
cc37eb0b
RGS
8905looking for a scalar. Returns the undefined value if the context is
8906looking for no value (void context).
a0d0e21e 8907
5ed4f2ec 8908 return unless defined wantarray; # don't bother doing more
54310121 8909 my @a = complex_calculation();
8910 return wantarray ? @a : "@a";
a0d0e21e 8911
20f13e4a 8912C<wantarray()>'s result is unspecified in the top level of a file,
3c10abe3
AG
8913in a C<BEGIN>, C<UNITCHECK>, C<CHECK>, C<INIT> or C<END> block, or
8914in a C<DESTROY> method.
20f13e4a 8915
19799a22
GS
8916This function should have been named wantlist() instead.
8917
a0d0e21e 8918=item warn LIST
d74e8afc 8919X<warn> X<warning> X<STDERR>
a0d0e21e 8920
c17cdb72
NC
8921=for Pod::Functions print debugging info
8922
2d6d0015 8923Prints the value of LIST to STDERR. If the last element of LIST does
afd8c9c8
DM
8924not end in a newline, it appends the same file/line number text as C<die>
8925does.
774d564b 8926
a96d0188 8927If the output is empty and C<$@> already contains a value (typically from a
7660c0ab 8928previous eval) that value is used after appending C<"\t...caught">
19799a22
GS
8929to C<$@>. This is useful for staying almost, but not entirely similar to
8930C<die>.
43051805 8931
7660c0ab 8932If C<$@> is empty then the string C<"Warning: Something's wrong"> is used.
43051805 8933
774d564b 8934No message is printed if there is a C<$SIG{__WARN__}> handler
8935installed. It is the handler's responsibility to deal with the message
19799a22 8936as it sees fit (like, for instance, converting it into a C<die>). Most
80d38338 8937handlers must therefore arrange to actually display the
19799a22 8938warnings that they are not prepared to deal with, by calling C<warn>
774d564b 8939again in the handler. Note that this is quite safe and will not
8940produce an endless loop, since C<__WARN__> hooks are not called from
8941inside one.
8942
8943You will find this behavior is slightly different from that of
8944C<$SIG{__DIE__}> handlers (which don't suppress the error text, but can
19799a22 8945instead call C<die> again to change it).
774d564b 8946
8947Using a C<__WARN__> handler provides a powerful way to silence all
8948warnings (even the so-called mandatory ones). An example:
8949
8950 # wipe out *all* compile-time warnings
8951 BEGIN { $SIG{'__WARN__'} = sub { warn $_[0] if $DOWARN } }
8952 my $foo = 10;
8953 my $foo = 20; # no warning about duplicate my $foo,
8954 # but hey, you asked for it!
8955 # no compile-time or run-time warnings before here
8956 $DOWARN = 1;
8957
8958 # run-time warnings enabled after here
8959 warn "\$foo is alive and $foo!"; # does show up
8960
8f1da26d 8961See L<perlvar> for details on setting C<%SIG> entries and for more
2b5ab1e7
TC
8962examples. See the Carp module for other kinds of warnings using its
8963carp() and cluck() functions.
a0d0e21e 8964
15a348aa
NC
8965=item when EXPR BLOCK
8966X<when>
8967
8968=item when BLOCK
8969
c17cdb72
NC
8970=for Pod::Functions !RT #108848
8971
391b733c
FC
8972C<when> is analogous to the C<case>
8973keyword in other languages. Used with a
8f1da26d
TC
8974C<foreach> loop or the experimental C<given> block, C<when> can be used in
8975Perl to implement C<switch>/C<case> like statements. Available as a
8976statement after Perl 5.10 and as a statement modifier after 5.14.
8977Here are three examples:
8978
8979 use v5.10;
8980 foreach (@fruits) {
8981 when (/apples?/) {
8982 say "I like apples."
8983 }
8984 when (/oranges?/) {
8985 say "I don't like oranges."
8986 }
8987 default {
8988 say "I don't like anything"
8989 }
8990 }
15a348aa 8991
8f1da26d
TC
8992 # require 5.14 for when as statement modifier
8993 use v5.14;
8994 foreach (@fruits) {
8995 say "I like apples." when /apples?/;
8996 say "I don't like oranges." when /oranges?;
8997 default { say "I don't like anything" }
8998 }
8999
9000 use v5.10;
15a348aa
NC
9001 given ($fruit) {
9002 when (/apples?/) {
8f1da26d 9003 say "I like apples."
15a348aa
NC
9004 }
9005 when (/oranges?/) {
8f1da26d 9006 say "I don't like oranges."
15a348aa
NC
9007 }
9008 default {
8f1da26d 9009 say "I don't like anything"
15a348aa
NC
9010 }
9011 }
9012
48238296 9013See L<perlsyn/"Switch Statements"> for detailed information.
15a348aa 9014
a0d0e21e 9015=item write FILEHANDLE
d74e8afc 9016X<write>
a0d0e21e
LW
9017
9018=item write EXPR
9019
9020=item write
9021
c17cdb72
NC
9022=for Pod::Functions print a picture record
9023
5a964f20 9024Writes a formatted record (possibly multi-line) to the specified FILEHANDLE,
a0d0e21e 9025using the format associated with that file. By default the format for
54310121 9026a file is the one having the same name as the filehandle, but the
19799a22 9027format for the current output channel (see the C<select> function) may be set
184e9718 9028explicitly by assigning the name of the format to the C<$~> variable.
a0d0e21e 9029
8f1da26d
TC
9030Top of form processing is handled automatically: if there is insufficient
9031room on the current page for the formatted record, the page is advanced by
9032writing a form feed, a special top-of-page format is used to format the new
9033page header before the record is written. By default, the top-of-page
391b733c 9034format is the name of the filehandle with "_TOP" appended. This would be a
8f1da26d
TC
9035problem with autovivified filehandles, but it may be dynamically set to the
9036format of your choice by assigning the name to the C<$^> variable while
9037that filehandle is selected. The number of lines remaining on the current
9038page is in variable C<$->, which can be set to C<0> to force a new page.
a0d0e21e
LW
9039
9040If FILEHANDLE is unspecified, output goes to the current default output
9041channel, which starts out as STDOUT but may be changed by the
19799a22 9042C<select> operator. If the FILEHANDLE is an EXPR, then the expression
a0d0e21e
LW
9043is evaluated and the resulting string is used to look up the name of
9044the FILEHANDLE at run time. For more on formats, see L<perlform>.
9045
19799a22 9046Note that write is I<not> the opposite of C<read>. Unfortunately.
a0d0e21e
LW
9047
9048=item y///
9049
c17cdb72
NC
9050=for Pod::Functions transliterate a string
9051
9f4b9cd0
SP
9052The transliteration operator. Same as C<tr///>. See
9053L<perlop/"Quote and Quote-like Operators">.
a0d0e21e
LW
9054
9055=back
8f1da26d 9056
8f0d6a61
RS
9057=head2 Non-function Keywords by Cross-reference
9058
1336785e
RS
9059=head3 perldata
9060
9061=over
9062
9063=item __DATA__
9064
9065=item __END__
9066
9067These keywords are documented in L<perldata>.
9068
9069=back
9070
9071=head3 perlmod
9072
9073=over
9074
9075=item BEGIN
9076
9077=item CHECK
9078
9079=item DESTROY
9080
9081=item END
9082
9083=item INIT
9084
9085=item UNITCHECK
9086
9087These keywords are documented in L<perlmod>.
9088
9089=back
9090
8f0d6a61
RS
9091=head3 perlop
9092
9093=over
9094
9095=item and
9096
9097=item cmp
9098
9099=item eq
9100
9101=item ge
9102
9103=item gt
9104
9105=item if
9106
9107=item le
9108
9109=item lt
9110
9111=item ne
9112
9113=item not
9114
9115=item or
9116
9117=item x
9118
9119=item xor
9120
9121These operators are documented in L<perlop>.
9122
9123=back
9124
1336785e
RS
9125=head3 perlsub
9126
9127=over
9128
9129=item AUTOLOAD
9130
1336785e
RS
9131These are documented in L<perlsub>.
9132
9133=back
9134
41cf8e73 9135=head3 perlsyn
8f0d6a61
RS
9136
9137=over
9138
9139=item else
9140
9141=item elseif
9142
9143=item elsif
9144
9145=item for
9146
9147=item foreach
9148
9149=item unless
9150
9151=item until
9152
9153=item while
9154
9155These flow-control keywords are documented in L<perlsyn>.
9156
9157=back
9158
8f1da26d 9159=cut