1PERLFUNC(1) Perl Programmers Reference Guide PERLFUNC(1)
2
3
4
6 perlfunc - Perl builtin functions
7
9 The functions in this section can serve as terms in an expression.
10 They fall into two major categories: list operators and named unary
11 operators. These differ in their precedence relationship with a
12 following comma. (See the precedence table in perlop.) List operators
13 take more than one argument, while unary operators can never take more
14 than one argument. Thus, a comma terminates the argument of a unary
15 operator, but merely separates the arguments of a list operator. A
16 unary operator generally provides scalar context to its argument, while
17 a list operator may provide either scalar or list contexts for its
18 arguments. If it does both, scalar arguments come first and list
19 argument follow, and there can only ever be one such list argument.
20 For instance, "splice" has three scalar arguments followed by a list,
21 whereas "gethostbyname" has four scalar arguments.
22
23 In the syntax descriptions that follow, list operators that expect a
24 list (and provide list context for elements of the list) are shown with
25 LIST as an argument. Such a list may consist of any combination of
26 scalar arguments or list values; the list values will be included in
27 the list as if each individual element were interpolated at that point
28 in the list, forming a longer single-dimensional list value. Commas
29 should separate literal elements of the LIST.
30
31 Any function in the list below may be used either with or without
32 parentheses around its arguments. (The syntax descriptions omit the
33 parentheses.) If you use parentheses, the simple but occasionally
34 surprising rule is this: It looks like a function, therefore it is a
35 function, and precedence doesn't matter. Otherwise it's a list
36 operator or unary operator, and precedence does matter. Whitespace
37 between the function and left parenthesis doesn't count, so sometimes
38 you need to be careful:
39
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.
45
46 If you run Perl with the "use warnings" pragma, it can warn you about
47 this. For example, 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
52 A few functions take no arguments at all, and therefore work as neither
53 unary nor list operators. These include such functions as "time" and
54 "endpwent". For example, "time+86_400" always means "time() + 86_400".
55
56 For functions that can be used in either a scalar or list context,
57 nonabortive failure is generally indicated in scalar context by
58 returning the undefined value, and in list context by returning the
59 empty list.
60
61 Remember the following important rule: There is no rule that relates
62 the behavior of an expression in list context to its behavior in scalar
63 context, or vice versa. It might do two totally different things.
64 Each operator and function decides which sort of value would be most
65 appropriate to return in scalar context. Some operators return the
66 length of the list that would have been returned in list context. Some
67 operators return the first value in the list. Some operators return
68 the last value in the list. Some operators return a count of
69 successful operations. In general, they do what you want, unless you
70 want consistency.
71
72 A named array in scalar context is quite different from what would at
73 first glance appear to be a list in scalar context. You can't get a
74 list like "(1,2,3)" into being in scalar context, because the compiler
75 knows the context at compile time. It would generate the scalar comma
76 operator there, not the list concatenation version of the comma. That
77 means it was never a list to start with.
78
79 In general, functions in Perl that serve as wrappers for system calls
80 ("syscalls") of the same name (like chown(2), fork(2), closedir(2),
81 etc.) return true when they succeed and "undef" otherwise, as is
82 usually mentioned in the descriptions below. This is different from
83 the C interfaces, which return -1 on failure. Exceptions to this rule
84 include "wait", "waitpid", and "syscall". System calls also set the
85 special $! variable on failure. Other functions do not, except
86 accidentally.
87
88 Extension modules can also hook into the Perl parser to define new
89 kinds of keyword-headed expression. These may look like functions, but
90 may also look completely different. The syntax following the keyword
91 is defined entirely by the extension. If you are an implementor, see
92 "PL_keyword_plugin" in perlapi for the mechanism. If you are using
93 such a module, see the module's documentation for details of the syntax
94 that it defines.
95
96 Perl Functions by Category
97 Here are Perl's functions (including things that look like functions,
98 like some keywords and named operators) arranged by category. Some
99 functions appear in more than one place. Any warnings, including those
100 produced by keywords, are described in perldiag and warnings.
101
102 Functions for SCALARs or strings
103 "chomp", "chop", "chr", "crypt", "fc", "hex", "index", "lc",
104 "lcfirst", "length", "oct", "ord", "pack", "q//", "qq//",
105 "reverse", "rindex", "sprintf", "substr", "tr///", "uc", "ucfirst",
106 "y///"
107
108 "fc" is available only if the "fc" feature is enabled or if it is
109 prefixed with "CORE::". The "fc" feature is enabled automatically
110 with a "use v5.16" (or higher) declaration in the current scope.
111
112 Regular expressions and pattern matching
113 "m//", "pos", "qr//", "quotemeta", "s///", "split", "study"
114
115 Numeric functions
116 "abs", "atan2", "cos", "exp", "hex", "int", "log", "oct", "rand",
117 "sin", "sqrt", "srand"
118
119 Functions for real @ARRAYs
120 "each", "keys", "pop", "push", "shift", "splice", "unshift",
121 "values"
122
123 Functions for list data
124 "grep", "join", "map", "qw//", "reverse", "sort", "unpack"
125
126 Functions for real %HASHes
127 "delete", "each", "exists", "keys", "values"
128
129 Input and output functions
130 "binmode", "close", "closedir", "dbmclose", "dbmopen", "die",
131 "eof", "fileno", "flock", "format", "getc", "print", "printf",
132 "read", "readdir", "readline", "rewinddir", "say", "seek",
133 "seekdir", "select", "syscall", "sysread", "sysseek", "syswrite",
134 "tell", "telldir", "truncate", "warn", "write"
135
136 "say" is available only if the "say" feature is enabled or if it is
137 prefixed with "CORE::". The "say" feature is enabled automatically
138 with a "use v5.10" (or higher) declaration in the current scope.
139
140 Functions for fixed-length data or records
141 "pack", "read", "syscall", "sysread", "sysseek", "syswrite",
142 "unpack", "vec"
143
144 Functions for filehandles, files, or directories
145 "-X", "chdir", "chmod", "chown", "chroot", "fcntl", "glob",
146 "ioctl", "link", "lstat", "mkdir", "open", "opendir", "readlink",
147 "rename", "rmdir", "select", "stat", "symlink", "sysopen", "umask",
148 "unlink", "utime"
149
150 Keywords related to the control flow of your Perl program
151 "break", "caller", "continue", "die", "do", "dump", "eval",
152 "evalbytes", "exit", "__FILE__", "goto", "last", "__LINE__",
153 "method", "next", "__PACKAGE__", "redo", "return", "sub",
154 "__SUB__", "wantarray"
155
156 "break" is available only if you enable the experimental "switch"
157 feature or use the "CORE::" prefix. The "switch" feature also
158 enables the "default", "given" and "when" statements, which are
159 documented in "Switch Statements" in perlsyn. The "switch" feature
160 is enabled automatically with a "use v5.10" (or higher) declaration
161 in the current scope. In Perl v5.14 and earlier, "continue"
162 required the "switch" feature, like the other keywords.
163
164 "evalbytes" is only available with the "evalbytes" feature (see
165 feature) or if prefixed with "CORE::". "__SUB__" is only available
166 with the "current_sub" feature or if prefixed with "CORE::". Both
167 the "evalbytes" and "current_sub" features are enabled
168 automatically with a "use v5.16" (or higher) declaration in the
169 current scope.
170
171 Keywords related to scoping
172 "caller", "class", "field", "import", "local", "my", "our",
173 "package", "state", "use"
174
175 "state" is available only if the "state" feature is enabled or if
176 it is prefixed with "CORE::". The "state" feature is enabled
177 automatically with a "use v5.10" (or higher) declaration in the
178 current scope.
179
180 Miscellaneous functions
181 "defined", "formline", "lock", "prototype", "reset", "scalar",
182 "undef"
183
184 Functions for processes and process groups
185 "alarm", "exec", "fork", "getpgrp", "getppid", "getpriority",
186 "kill", "pipe", "qx//", "readpipe", "setpgrp", "setpriority",
187 "sleep", "system", "times", "wait", "waitpid"
188
189 Keywords related to Perl modules
190 "do", "import", "no", "package", "require", "use"
191
192 Keywords related to classes and object-orientation
193 "bless", "class", "dbmclose", "dbmopen", "field", "method",
194 "package", "ref", "tie", "tied", "untie", "use"
195
196 Low-level socket functions
197 "accept", "bind", "connect", "getpeername", "getsockname",
198 "getsockopt", "listen", "recv", "send", "setsockopt", "shutdown",
199 "socket", "socketpair"
200
201 System V interprocess communication functions
202 "msgctl", "msgget", "msgrcv", "msgsnd", "semctl", "semget",
203 "semop", "shmctl", "shmget", "shmread", "shmwrite"
204
205 Fetching user and group info
206 "endgrent", "endhostent", "endnetent", "endpwent", "getgrent",
207 "getgrgid", "getgrnam", "getlogin", "getpwent", "getpwnam",
208 "getpwuid", "setgrent", "setpwent"
209
210 Fetching network info
211 "endprotoent", "endservent", "gethostbyaddr", "gethostbyname",
212 "gethostent", "getnetbyaddr", "getnetbyname", "getnetent",
213 "getprotobyname", "getprotobynumber", "getprotoent",
214 "getservbyname", "getservbyport", "getservent", "sethostent",
215 "setnetent", "setprotoent", "setservent"
216
217 Time-related functions
218 "gmtime", "localtime", "time", "times"
219
220 Non-function keywords
221 "ADJUST", "and", "AUTOLOAD", "BEGIN", "catch", "CHECK", "cmp",
222 "CORE", "__DATA__", "default", "defer", "DESTROY", "else",
223 "elseif", "elsif", "END", "__END__", "eq", "finally", "for",
224 "foreach", "ge", "given", "gt", "if", "INIT", "isa", "le", "lt",
225 "ne", "not", "or", "try", "UNITCHECK", "unless", "until", "when",
226 "while", "x", "xor"
227
228 Portability
229 Perl was born in Unix and can therefore access all common Unix system
230 calls. In non-Unix environments, the functionality of some Unix system
231 calls may not be available or details of the available functionality
232 may differ slightly. The Perl functions affected by this are:
233
234 "-X", "binmode", "chmod", "chown", "chroot", "crypt", "dbmclose",
235 "dbmopen", "dump", "endgrent", "endhostent", "endnetent",
236 "endprotoent", "endpwent", "endservent", "exec", "fcntl", "flock",
237 "fork", "getgrent", "getgrgid", "gethostbyname", "gethostent",
238 "getlogin", "getnetbyaddr", "getnetbyname", "getnetent", "getppid",
239 "getpgrp", "getpriority", "getprotobynumber", "getprotoent",
240 "getpwent", "getpwnam", "getpwuid", "getservbyport", "getservent",
241 "getsockopt", "glob", "ioctl", "kill", "link", "lstat", "msgctl",
242 "msgget", "msgrcv", "msgsnd", "open", "pipe", "readlink", "rename",
243 "select", "semctl", "semget", "semop", "setgrent", "sethostent",
244 "setnetent", "setpgrp", "setpriority", "setprotoent", "setpwent",
245 "setservent", "setsockopt", "shmctl", "shmget", "shmread", "shmwrite",
246 "socket", "socketpair", "stat", "symlink", "syscall", "sysopen",
247 "system", "times", "truncate", "umask", "unlink", "utime", "wait",
248 "waitpid"
249
250 For more information about the portability of these functions, see
251 perlport and other available platform-specific documentation.
252
253 Alphabetical Listing of Perl Functions
254 -X FILEHANDLE
255 -X EXPR
256 -X DIRHANDLE
257 -X A file test, where X is one of the letters listed below. This
258 unary operator takes one argument, either a filename, a filehandle,
259 or a dirhandle, and tests the associated file to see if something
260 is true about it. If the argument is omitted, tests $_, except for
261 "-t", which tests STDIN. Unless otherwise documented, it returns 1
262 for true and '' for false. If the file doesn't exist or can't be
263 examined, it returns "undef" and sets $! (errno). With the
264 exception of the "-l" test they all follow symbolic links because
265 they use stat() and not lstat() (so dangling symlinks can't be
266 examined and will therefore report failure).
267
268 Despite the funny names, precedence is the same as any other named
269 unary operator. The operator may be any of:
270
271 -r File is readable by effective uid/gid.
272 -w File is writable by effective uid/gid.
273 -x File is executable by effective uid/gid.
274 -o File is owned by effective uid.
275
276 -R File is readable by real uid/gid.
277 -W File is writable by real uid/gid.
278 -X File is executable by real uid/gid.
279 -O File is owned by real uid.
280
281 -e File exists.
282 -z File has zero size (is empty).
283 -s File has nonzero size (returns size in bytes).
284
285 -f File is a plain file.
286 -d File is a directory.
287 -l File is a symbolic link (false if symlinks aren't
288 supported by the file system).
289 -p File is a named pipe (FIFO), or Filehandle is a pipe.
290 -S File is a socket.
291 -b File is a block special file.
292 -c File is a character special file.
293 -t Filehandle is opened to a tty.
294
295 -u File has setuid bit set.
296 -g File has setgid bit set.
297 -k File has sticky bit set.
298
299 -T File is an ASCII or UTF-8 text file (heuristic guess).
300 -B File is a "binary" file (opposite of -T).
301
302 -M Script start time minus file modification time, in days.
303 -A Same for access time.
304 -C Same for inode change time (Unix, may differ for other
305 platforms)
306
307 Example:
308
309 while (<>) {
310 chomp;
311 next unless -f $_; # ignore specials
312 #...
313 }
314
315 Note that "-s/a/b/" does not do a negated substitution. Saying
316 "-exp($foo)" still works as expected, however: only single letters
317 following a minus are interpreted as file tests.
318
319 These operators are exempt from the "looks like a function rule"
320 described above. That is, an opening parenthesis after the
321 operator does not affect how much of the following code constitutes
322 the argument. Put the opening parentheses before the operator to
323 separate it from code that follows (this applies only to operators
324 with higher precedence than unary operators, of course):
325
326 -s($file) + 1024 # probably wrong; same as -s($file + 1024)
327 (-s $file) + 1024 # correct
328
329 The interpretation of the file permission operators "-r", "-R",
330 "-w", "-W", "-x", and "-X" is by default based solely on the mode
331 of the file and the uids and gids of the user. There may be other
332 reasons you can't actually read, write, or execute the file: for
333 example network filesystem access controls, ACLs (access control
334 lists), read-only filesystems, and unrecognized executable formats.
335 Note that the use of these six specific operators to verify if some
336 operation is possible is usually a mistake, because it may be open
337 to race conditions.
338
339 Also note that, for the superuser on the local filesystems, the
340 "-r", "-R", "-w", and "-W" tests always return 1, and "-x" and "-X"
341 return 1 if any execute bit is set in the mode. Scripts run by the
342 superuser may thus need to do a "stat" to determine the actual mode
343 of the file, or temporarily set their effective uid to something
344 else.
345
346 If you are using ACLs, there is a pragma called "filetest" that may
347 produce more accurate results than the bare "stat" mode bits. When
348 under "use filetest 'access'", the above-mentioned filetests test
349 whether the permission can(not) be granted using the access(2)
350 family of system calls. Also note that the "-x" and "-X" tests may
351 under this pragma return true even if there are no execute
352 permission bits set (nor any extra execute permission ACLs). This
353 strangeness is due to the underlying system calls' definitions.
354 Note also that, due to the implementation of "use filetest
355 'access'", the "_" special filehandle won't cache the results of
356 the file tests when this pragma is in effect. Read the
357 documentation for the "filetest" pragma for more information.
358
359 The "-T" and "-B" tests work as follows. The first block or so of
360 the file is examined to see if it is valid UTF-8 that includes non-
361 ASCII characters. If so, it's a "-T" file. Otherwise, that same
362 portion of the file is examined for odd characters such as strange
363 control codes or characters with the high bit set. If more than a
364 third of the characters are strange, it's a "-B" file; otherwise
365 it's a "-T" file. Also, any file containing a zero byte in the
366 examined portion is considered a binary file. (If executed within
367 the scope of a use locale which includes "LC_CTYPE", odd characters
368 are anything that isn't a printable nor space in the current
369 locale.) If "-T" or "-B" is used on a filehandle, the current IO
370 buffer is examined rather than the first block. Both "-T" and "-B"
371 return true on an empty file, or a file at EOF when testing a
372 filehandle. Because you have to read a file to do the "-T" test,
373 on most occasions you want to use a "-f" against the file first, as
374 in "next unless -f $file && -T $file".
375
376 If any of the file tests (or either the "stat" or "lstat" operator)
377 is given the special filehandle consisting of a solitary underline,
378 then the stat structure of the previous file test (or "stat"
379 operator) is used, saving a system call. (This doesn't work with
380 "-t", and you need to remember that "lstat" and "-l" leave values
381 in the stat structure for the symbolic link, not the real file.)
382 (Also, if the stat buffer was filled by an "lstat" call, "-T" and
383 "-B" will reset it with the results of "stat _"). Example:
384
385 print "Can do.\n" if -r $a || -w _ || -x _;
386
387 stat($filename);
388 print "Readable\n" if -r _;
389 print "Writable\n" if -w _;
390 print "Executable\n" if -x _;
391 print "Setuid\n" if -u _;
392 print "Setgid\n" if -g _;
393 print "Sticky\n" if -k _;
394 print "Text\n" if -T _;
395 print "Binary\n" if -B _;
396
397 As of Perl 5.10.0, as a form of purely syntactic sugar, you can
398 stack file test operators, in a way that "-f -w -x $file" is
399 equivalent to "-x $file && -w _ && -f _". (This is only fancy
400 syntax: if you use the return value of "-f $file" as an argument to
401 another filetest operator, no special magic will happen.)
402
403 Portability issues: "-X" in perlport.
404
405 To avoid confusing would-be users of your code with mysterious
406 syntax errors, put something like this at the top of your script:
407
408 use v5.10; # so filetest ops can stack
409
410 abs VALUE
411 abs Returns the absolute value of its argument. If VALUE is omitted,
412 uses $_.
413
414 accept NEWSOCKET,GENERICSOCKET
415 Accepts an incoming socket connect, just as accept(2) does.
416 Returns the packed address if it succeeded, false otherwise. See
417 the example in "Sockets: Client/Server Communication" in perlipc.
418
419 On systems that support a close-on-exec flag on files, the flag
420 will be set for the newly opened file descriptor, as determined by
421 the value of $^F. See "$^F" in perlvar.
422
423 alarm SECONDS
424 alarm
425 Arranges to have a SIGALRM delivered to this process after the
426 specified number of wallclock seconds has elapsed. If SECONDS is
427 not specified, the value stored in $_ is used. (On some machines,
428 unfortunately, the elapsed time may be up to one second less or
429 more than you specified because of how seconds are counted, and
430 process scheduling may delay the delivery of the signal even
431 further.)
432
433 Only one timer may be counting at once. Each call disables the
434 previous timer, and an argument of 0 may be supplied to cancel the
435 previous timer without starting a new one. The returned value is
436 the amount of time remaining on the previous timer.
437
438 For delays of finer granularity than one second, the Time::HiRes
439 module (from CPAN, and starting from Perl 5.8 part of the standard
440 distribution) provides "ualarm". You may also use Perl's four-
441 argument version of "select" leaving the first three arguments
442 undefined, or you might be able to use the "syscall" interface to
443 access setitimer(2) if your system supports it. See perlfaq8 for
444 details.
445
446 It is usually a mistake to intermix "alarm" and "sleep" calls,
447 because "sleep" may be internally implemented on your system with
448 "alarm".
449
450 If you want to use "alarm" to time out a system call you need to
451 use an "eval"/"die" pair. You can't rely on the alarm causing the
452 system call to fail with $! set to "EINTR" because Perl sets up
453 signal handlers to restart system calls on some systems. Using
454 "eval"/"die" always works, modulo the caveats given in "Signals" in
455 perlipc.
456
457 eval {
458 local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
459 alarm $timeout;
460 my $nread = sysread $socket, $buffer, $size;
461 alarm 0;
462 };
463 if ($@) {
464 die unless $@ eq "alarm\n"; # propagate unexpected errors
465 # timed out
466 }
467 else {
468 # didn't
469 }
470
471 For more information see perlipc.
472
473 Portability issues: "alarm" in perlport.
474
475 atan2 Y,X
476 Returns the arctangent of Y/X in the range -PI to PI.
477
478 For the tangent operation, you may use the "Math::Trig::tan"
479 function, or use the familiar relation:
480
481 sub tan { sin($_[0]) / cos($_[0]) }
482
483 The return value for "atan2(0,0)" is implementation-defined;
484 consult your atan2(3) manpage for more information.
485
486 Portability issues: "atan2" in perlport.
487
488 bind SOCKET,NAME
489 Binds a network address to a socket, just as bind(2) does. Returns
490 true if it succeeded, false otherwise. NAME should be a packed
491 address of the appropriate type for the socket. See the examples
492 in "Sockets: Client/Server Communication" in perlipc.
493
494 binmode FILEHANDLE, LAYER
495 binmode FILEHANDLE
496 Arranges for FILEHANDLE to be read or written in "binary" or "text"
497 mode on systems where the run-time libraries distinguish between
498 binary and text files. If FILEHANDLE is an expression, the value
499 is taken as the name of the filehandle. Returns true on success,
500 otherwise it returns "undef" and sets $! (errno).
501
502 On some systems (in general, DOS- and Windows-based systems)
503 "binmode" is necessary when you're not working with a text file.
504 For the sake of portability it is a good idea always to use it when
505 appropriate, and never to use it when it isn't appropriate. Also,
506 people can set their I/O to be by default UTF8-encoded Unicode, not
507 bytes.
508
509 In other words: regardless of platform, use "binmode" on binary
510 data, like images, for example.
511
512 If LAYER is present it is a single string, but may contain multiple
513 directives. The directives alter the behaviour of the filehandle.
514 When LAYER is present, using binmode on a text file makes sense.
515
516 If LAYER is omitted or specified as ":raw" the filehandle is made
517 suitable for passing binary data. This includes turning off
518 possible CRLF translation and marking it as bytes (as opposed to
519 Unicode characters). Note that, despite what may be implied in
520 "Programming Perl" (the Camel, 3rd edition) or elsewhere, ":raw" is
521 not simply the inverse of ":crlf". Other layers that would affect
522 the binary nature of the stream are also disabled. See PerlIO, and
523 the discussion about the PERLIO environment variable in perlrun.
524
525 The ":bytes", ":crlf", ":utf8", and any other directives of the
526 form ":...", are called I/O layers. The open pragma can be used to
527 establish default I/O layers.
528
529 The LAYER parameter of the "binmode" function is described as
530 "DISCIPLINE" in "Programming Perl, 3rd Edition". However, since
531 the publishing of this book, by many known as "Camel III", the
532 consensus of the naming of this functionality has moved from
533 "discipline" to "layer". All documentation of this version of Perl
534 therefore refers to "layers" rather than to "disciplines". Now
535 back to the regularly scheduled documentation...
536
537 To mark FILEHANDLE as UTF-8, use ":utf8" or :encoding(UTF-8).
538 ":utf8" just marks the data as UTF-8 without further checking,
539 while :encoding(UTF-8) checks the data for actually being valid
540 UTF-8. More details can be found in PerlIO::encoding.
541
542 In general, "binmode" should be called after "open" but before any
543 I/O is done on the filehandle. Calling "binmode" normally flushes
544 any pending buffered output data (and perhaps pending input data)
545 on the handle. An exception to this is the ":encoding" layer that
546 changes the default character encoding of the handle. The
547 ":encoding" layer sometimes needs to be called in mid-stream, and
548 it doesn't flush the stream. ":encoding" also implicitly pushes on
549 top of itself the ":utf8" layer because internally Perl operates on
550 UTF8-encoded Unicode characters.
551
552 The operating system, device drivers, C libraries, and Perl run-
553 time system all conspire to let the programmer treat a single
554 character ("\n") as the line terminator, irrespective of external
555 representation. On many operating systems, the native text file
556 representation matches the internal representation, but on some
557 platforms the external representation of "\n" is made up of more
558 than one character.
559
560 All variants of Unix, Mac OS (old and new), and Stream_LF files on
561 VMS use a single character to end each line in the external
562 representation of text (even though that single character is
563 CARRIAGE RETURN on old, pre-Darwin flavors of Mac OS, and is LINE
564 FEED on Unix and most VMS files). In other systems like OS/2, DOS,
565 and the various flavors of MS-Windows, your program sees a "\n" as
566 a simple "\cJ", but what's stored in text files are the two
567 characters "\cM\cJ". That means that if you don't use "binmode" on
568 these systems, "\cM\cJ" sequences on disk will be converted to "\n"
569 on input, and any "\n" in your program will be converted back to
570 "\cM\cJ" on output. This is what you want for text files, but it
571 can be disastrous for binary files.
572
573 Another consequence of using "binmode" (on some systems) is that
574 special end-of-file markers will be seen as part of the data
575 stream. For systems from the Microsoft family this means that, if
576 your binary data contain "\cZ", the I/O subsystem will regard it as
577 the end of the file, unless you use "binmode".
578
579 "binmode" is important not only for "readline" and "print"
580 operations, but also when using "read", "seek", "sysread",
581 "syswrite" and "tell" (see perlport for more details). See the $/
582 and "$\" variables in perlvar for how to manually set your input
583 and output line-termination sequences.
584
585 Portability issues: "binmode" in perlport.
586
587 bless REF,CLASSNAME
588 bless REF
589 "bless" tells Perl to mark the item referred to by "REF" as an
590 object in a package. The two-argument version of "bless" is always
591 preferable unless there is a specific reason to not use it.
592
593 • Bless the referred-to item into a specific package (recommended
594 form):
595
596 bless $ref, $package;
597
598 The two-argument form adds the object to the package specified
599 as the second argument.
600
601 • Bless the referred-to item into package "main":
602
603 bless $ref, "";
604
605 If the second argument is an empty string, "bless" adds the
606 object to package "main".
607
608 • Bless the referred-to item into the current package (not
609 inheritable):
610
611 bless $ref;
612
613 If "bless" is used without its second argument, the object is
614 created in the current package. The second argument should
615 always be supplied if a derived class might inherit a method
616 executing "bless". Because it is a potential source of bugs,
617 one-argument "bless" is discouraged.
618
619 See perlobj for more about the blessing (and blessings) of objects.
620
621 "bless" returns its first argument, the supplied reference, as the
622 value of the function; since "bless" is commonly the last thing
623 executed in constructors, this means that the reference to the
624 object is returned as the constructor's value and allows the caller
625 to immediately use this returned object in method calls.
626
627 "CLASSNAME" should always be a mixed-case name, as all-uppercase
628 and all-lowercase names are meant to be used only for Perl builtin
629 types and pragmas, respectively. Avoid creating all-uppercase or
630 all-lowercase package names to prevent confusion.
631
632 Also avoid <Cbless>ing things into the class name 0; this will
633 cause code which (erroneously) checks the result of "ref" to see if
634 a reference is "bless"ed to fail, as "0", a falsy value, is
635 returned.
636
637 See "Perl Modules" in perlmod for more details.
638
639 break
640 Break out of a "given" block.
641
642 "break" is available only if the "switch" feature is enabled or if
643 it is prefixed with "CORE::". The "switch" feature is enabled
644 automatically with a "use v5.10" (or higher) declaration in the
645 current scope.
646
647 caller EXPR
648 caller
649 Returns the context of the current pure perl subroutine call. In
650 scalar context, returns the caller's package name if there is a
651 caller (that is, if we're in a subroutine or "eval" or "require")
652 and the undefined value otherwise. caller never returns XS subs
653 and they are skipped. The next pure perl sub will appear instead
654 of the XS sub in caller's return values. In list context, caller
655 returns
656
657 # 0 1 2
658 my ($package, $filename, $line) = caller;
659
660 Like "__FILE__" and "__LINE__", the filename and line number
661 returned here may be altered by the mechanism described at "Plain
662 Old Comments (Not!)" in perlsyn.
663
664 With EXPR, it returns some extra information that the debugger uses
665 to print a stack trace. The value of EXPR indicates how many call
666 frames to go back before the current one.
667
668 # 0 1 2 3 4
669 my ($package, $filename, $line, $subroutine, $hasargs,
670
671 # 5 6 7 8 9 10
672 $wantarray, $evaltext, $is_require, $hints, $bitmask, $hinthash)
673 = caller($i);
674
675 Here, $subroutine is the function that the caller called (rather
676 than the function containing the caller). Note that $subroutine
677 may be "(eval)" if the frame is not a subroutine call, but an
678 "eval". In such a case additional elements $evaltext and
679 $is_require are set: $is_require is true if the frame is created by
680 a "require" or "use" statement, $evaltext contains the text of the
681 "eval EXPR" statement. In particular, for an "eval BLOCK"
682 statement, $subroutine is "(eval)", but $evaltext is undefined.
683 (Note also that each "use" statement creates a "require" frame
684 inside an "eval EXPR" frame.) $subroutine may also be "(unknown)"
685 if this particular subroutine happens to have been deleted from the
686 symbol table. $hasargs is true if a new instance of @_ was set up
687 for the frame. $hints and $bitmask contain pragmatic hints that
688 the caller was compiled with. $hints corresponds to $^H, and
689 $bitmask corresponds to "${^WARNING_BITS}". The $hints and
690 $bitmask values are subject to change between versions of Perl, and
691 are not meant for external use.
692
693 $hinthash is a reference to a hash containing the value of "%^H"
694 when the caller was compiled, or "undef" if "%^H" was empty. Do
695 not modify the values of this hash, as they are the actual values
696 stored in the optree.
697
698 Note that the only types of call frames that are visible are
699 subroutine calls and "eval". Other forms of context, such as
700 "while" or "foreach" loops or "try" blocks are not considered
701 interesting to "caller", as they do not alter the behaviour of the
702 "return" expression.
703
704 Furthermore, when called from within the DB package in list
705 context, and with an argument, caller returns more detailed
706 information: it sets the list variable @DB::args to be the
707 arguments with which the subroutine was invoked.
708
709 Be aware that the optimizer might have optimized call frames away
710 before "caller" had a chance to get the information. That means
711 that caller(N) might not return information about the call frame
712 you expect it to, for "N > 1". In particular, @DB::args might have
713 information from the previous time "caller" was called.
714
715 Be aware that setting @DB::args is best effort, intended for
716 debugging or generating backtraces, and should not be relied upon.
717 In particular, as @_ contains aliases to the caller's arguments,
718 Perl does not take a copy of @_, so @DB::args will contain
719 modifications the subroutine makes to @_ or its contents, not the
720 original values at call time. @DB::args, like @_, does not hold
721 explicit references to its elements, so under certain cases its
722 elements may have become freed and reallocated for other variables
723 or temporary values. Finally, a side effect of the current
724 implementation is that the effects of "shift @_" can normally be
725 undone (but not "pop @_" or other splicing, and not if a reference
726 to @_ has been taken, and subject to the caveat about reallocated
727 elements), so @DB::args is actually a hybrid of the current state
728 and initial state of @_. Buyer beware.
729
730 chdir EXPR
731 chdir FILEHANDLE
732 chdir DIRHANDLE
733 chdir
734 Changes the working directory to EXPR, if possible. If EXPR is
735 omitted, changes to the directory specified by $ENV{HOME}, if set;
736 if not, changes to the directory specified by $ENV{LOGDIR}. (Under
737 VMS, the variable $ENV{'SYS$LOGIN'} is also checked, and used if it
738 is set.) If neither is set, "chdir" does nothing and fails. It
739 returns true on success, false otherwise. See the example under
740 "die".
741
742 On systems that support fchdir(2), you may pass a filehandle or
743 directory handle as the argument. On systems that don't support
744 fchdir(2), passing handles raises an exception.
745
746 chmod LIST
747 Changes the permissions of a list of files. The first element of
748 the list must be the numeric mode, which should probably be an
749 octal number, and which definitely should not be a string of octal
750 digits: 0644 is okay, but "0644" is not. Returns the number of
751 files successfully changed. See also "oct" if all you have is a
752 string.
753
754 my $cnt = chmod 0755, "foo", "bar";
755 chmod 0755, @executables;
756 my $mode = "0644"; chmod $mode, "foo"; # !!! sets mode to
757 # --w----r-T
758 my $mode = "0644"; chmod oct($mode), "foo"; # this is better
759 my $mode = 0644; chmod $mode, "foo"; # this is best
760
761 On systems that support fchmod(2), you may pass filehandles among
762 the files. On systems that don't support fchmod(2), passing
763 filehandles raises an exception. Filehandles must be passed as
764 globs or glob references to be recognized; barewords are considered
765 filenames.
766
767 open(my $fh, "<", "foo");
768 my $perm = (stat $fh)[2] & 07777;
769 chmod($perm | 0600, $fh);
770
771 You can also import the symbolic "S_I*" constants from the "Fcntl"
772 module:
773
774 use Fcntl qw( :mode );
775 chmod S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH, @executables;
776 # Identical to the chmod 0755 of the example above.
777
778 Portability issues: "chmod" in perlport.
779
780 chomp VARIABLE
781 chomp( LIST )
782 chomp
783 This safer version of "chop" removes any trailing string that
784 corresponds to the current value of $/ (also known as
785 $INPUT_RECORD_SEPARATOR in the "English" module). It returns the
786 total number of characters removed from all its arguments. It's
787 often used to remove the newline from the end of an input record
788 when you're worried that the final record may be missing its
789 newline. When in paragraph mode ("$/ = ''"), it removes all
790 trailing newlines from the string. When in slurp mode ("$/ =
791 undef") or fixed-length record mode ($/ is a reference to an
792 integer or the like; see perlvar), "chomp" won't remove anything.
793 If VARIABLE is omitted, it chomps $_. Example:
794
795 while (<>) {
796 chomp; # avoid \n on last field
797 my @array = split(/:/);
798 # ...
799 }
800
801 If VARIABLE is a hash, it chomps the hash's values, but not its
802 keys, resetting the "each" iterator in the process.
803
804 You can actually chomp anything that's an lvalue, including an
805 assignment:
806
807 chomp(my $cwd = `pwd`);
808 chomp(my $answer = <STDIN>);
809
810 If you chomp a list, each element is chomped, and the total number
811 of characters removed is returned.
812
813 Note that parentheses are necessary when you're chomping anything
814 that is not a simple variable. This is because "chomp $cwd =
815 `pwd`;" is interpreted as "(chomp $cwd) = `pwd`;", rather than as
816 "chomp( $cwd = `pwd` )" which you might expect. Similarly, "chomp
817 $a, $b" is interpreted as "chomp($a), $b" rather than as "chomp($a,
818 $b)".
819
820 chop VARIABLE
821 chop( LIST )
822 chop
823 Chops off the last character of a string and returns the character
824 chopped. It is much more efficient than "s/.$//s" because it
825 neither scans nor copies the string. If VARIABLE is omitted, chops
826 $_. If VARIABLE is a hash, it chops the hash's values, but not its
827 keys, resetting the "each" iterator in the process.
828
829 You can actually chop anything that's an lvalue, including an
830 assignment.
831
832 If you chop a list, each element is chopped. Only the value of the
833 last "chop" is returned.
834
835 Note that "chop" returns the last character. To return all but the
836 last character, use "substr($string, 0, -1)".
837
838 See also "chomp".
839
840 chown LIST
841 Changes the owner (and group) of a list of files. The first two
842 elements of the list must be the numeric uid and gid, in that
843 order. A value of -1 in either position is interpreted by most
844 systems to leave that value unchanged. Returns the number of files
845 successfully changed.
846
847 my $cnt = chown $uid, $gid, 'foo', 'bar';
848 chown $uid, $gid, @filenames;
849
850 On systems that support fchown(2), you may pass filehandles among
851 the files. On systems that don't support fchown(2), passing
852 filehandles raises an exception. Filehandles must be passed as
853 globs or glob references to be recognized; barewords are considered
854 filenames.
855
856 Here's an example that looks up nonnumeric uids in the passwd file:
857
858 print "User: ";
859 chomp(my $user = <STDIN>);
860 print "Files: ";
861 chomp(my $pattern = <STDIN>);
862
863 my ($login,$pass,$uid,$gid) = getpwnam($user)
864 or die "$user not in passwd file";
865
866 my @ary = glob($pattern); # expand filenames
867 chown $uid, $gid, @ary;
868
869 On most systems, you are not allowed to change the ownership of the
870 file unless you're the superuser, although you should be able to
871 change the group to any of your secondary groups. On insecure
872 systems, these restrictions may be relaxed, but this is not a
873 portable assumption. On POSIX systems, you can detect this
874 condition this way:
875
876 use POSIX qw(sysconf _PC_CHOWN_RESTRICTED);
877 my $can_chown_giveaway = ! sysconf(_PC_CHOWN_RESTRICTED);
878
879 Portability issues: "chown" in perlport.
880
881 chr NUMBER
882 chr Returns the character represented by that NUMBER in the character
883 set. For example, chr(65) is "A" in either ASCII or Unicode, and
884 chr(0x263a) is a Unicode smiley face.
885
886 Negative values give the Unicode replacement character
887 (chr(0xfffd)), except under the bytes pragma, where the low eight
888 bits of the value (truncated to an integer) are used.
889
890 If NUMBER is omitted, uses $_.
891
892 For the reverse, use "ord".
893
894 Note that characters from 128 to 255 (inclusive) are by default
895 internally not encoded as UTF-8 for backward compatibility reasons.
896
897 See perlunicode for more about Unicode.
898
899 chroot FILENAME
900 chroot
901 This function works like the system call by the same name: it makes
902 the named directory the new root directory for all further
903 pathnames that begin with a "/" by your process and all its
904 children. (It doesn't change your current working directory, which
905 is unaffected.) For security reasons, this call is restricted to
906 the superuser. If FILENAME is omitted, does a "chroot" to $_.
907
908 NOTE: It is mandatory for security to chdir("/") ("chdir" to the
909 root directory) immediately after a "chroot", otherwise the current
910 working directory may be outside of the new root.
911
912 Portability issues: "chroot" in perlport.
913
914 class NAMESPACE
915 class NAMESPACE VERSION
916 class NAMESPACE BLOCK
917 class NAMESPACE VERSION BLOCK
918 Declares the BLOCK or the rest of the compilation unit as being in
919 the given namespace, which implements an object class. This
920 behaves similarly to "package", except that the newly-created
921 package behaves as a class.
922
923 close FILEHANDLE
924 close
925 Closes the file or pipe associated with the filehandle, flushes the
926 IO buffers, and closes the system file descriptor. Returns true if
927 those operations succeed and if no error was reported by any PerlIO
928 layer. Closes the currently selected filehandle if the argument is
929 omitted.
930
931 You don't have to close FILEHANDLE if you are immediately going to
932 do another "open" on it, because "open" closes it for you. (See
933 "open".) However, an explicit "close" on an input file resets the
934 line counter ($.), while the implicit close done by "open" does
935 not.
936
937 If the filehandle came from a piped open, "close" returns false if
938 one of the other syscalls involved fails or if its program exits
939 with non-zero status. If the only problem was that the program
940 exited non-zero, $! will be set to 0. Closing a pipe also waits
941 for the process executing on the pipe to exit--in case you wish to
942 look at the output of the pipe afterwards--and implicitly puts the
943 exit status value of that command into $? and
944 "${^CHILD_ERROR_NATIVE}".
945
946 If there are multiple threads running, "close" on a filehandle from
947 a piped open returns true without waiting for the child process to
948 terminate, if the filehandle is still open in another thread.
949
950 Closing the read end of a pipe before the process writing to it at
951 the other end is done writing results in the writer receiving a
952 SIGPIPE. If the other end can't handle that, be sure to read all
953 the data before closing the pipe.
954
955 Example:
956
957 open(OUTPUT, '|sort >foo') # pipe to sort
958 or die "Can't start sort: $!";
959 #... # print stuff to output
960 close OUTPUT # wait for sort to finish
961 or warn $! ? "Error closing sort pipe: $!"
962 : "Exit status $? from sort";
963 open(INPUT, 'foo') # get sort's results
964 or die "Can't open 'foo' for input: $!";
965
966 FILEHANDLE may be an expression whose value can be used as an
967 indirect filehandle, usually the real filehandle name or an
968 autovivified handle.
969
970 closedir DIRHANDLE
971 Closes a directory opened by "opendir" and returns the success of
972 that system call.
973
974 connect SOCKET,NAME
975 Attempts to connect to a remote socket, just like connect(2).
976 Returns true if it succeeded, false otherwise. NAME should be a
977 packed address of the appropriate type for the socket. See the
978 examples in "Sockets: Client/Server Communication" in perlipc.
979
980 continue BLOCK
981 continue
982 When followed by a BLOCK, "continue" is actually a flow control
983 statement rather than a function. If there is a "continue" BLOCK
984 attached to a BLOCK (typically in a "while" or "foreach"), it is
985 always executed just before the conditional is about to be
986 evaluated again, just like the third part of a "for" loop in C.
987 Thus it can be used to increment a loop variable, even when the
988 loop has been continued via the "next" statement (which is similar
989 to the C "continue" statement).
990
991 "last", "next", or "redo" may appear within a "continue" block;
992 "last" and "redo" behave as if they had been executed within the
993 main block. So will "next", but since it will execute a "continue"
994 block, it may be more entertaining.
995
996 while (EXPR) {
997 ### redo always comes here
998 do_something;
999 } continue {
1000 ### next always comes here
1001 do_something_else;
1002 # then back the top to re-check EXPR
1003 }
1004 ### last always comes here
1005
1006 Omitting the "continue" section is equivalent to using an empty
1007 one, logically enough, so "next" goes directly back to check the
1008 condition at the top of the loop.
1009
1010 When there is no BLOCK, "continue" is a function that falls through
1011 the current "when" or "default" block instead of iterating a
1012 dynamically enclosing "foreach" or exiting a lexically enclosing
1013 "given". In Perl 5.14 and earlier, this form of "continue" was
1014 only available when the "switch" feature was enabled. See feature
1015 and "Switch Statements" in perlsyn for more information.
1016
1017 cos EXPR
1018 cos Returns the cosine of EXPR (expressed in radians). If EXPR is
1019 omitted, takes the cosine of $_.
1020
1021 For the inverse cosine operation, you may use the
1022 "Math::Trig::acos" function, or use this relation:
1023
1024 sub acos { atan2( sqrt(1 - $_[0] * $_[0]), $_[0] ) }
1025
1026 crypt PLAINTEXT,SALT
1027 Creates a digest string exactly like the crypt(3) function in the C
1028 library (assuming that you actually have a version there that has
1029 not been extirpated as a potential munition).
1030
1031 "crypt" is a one-way hash function. The PLAINTEXT and SALT are
1032 turned into a short string, called a digest, which is returned.
1033 The same PLAINTEXT and SALT will always return the same string, but
1034 there is no (known) way to get the original PLAINTEXT from the
1035 hash. Small changes in the PLAINTEXT or SALT will result in large
1036 changes in the digest.
1037
1038 There is no decrypt function. This function isn't all that useful
1039 for cryptography (for that, look for Crypt modules on your nearby
1040 CPAN mirror) and the name "crypt" is a bit of a misnomer. Instead
1041 it is primarily used to check if two pieces of text are the same
1042 without having to transmit or store the text itself. An example is
1043 checking if a correct password is given. The digest of the
1044 password is stored, not the password itself. The user types in a
1045 password that is "crypt"'d with the same salt as the stored digest.
1046 If the two digests match, the password is correct.
1047
1048 When verifying an existing digest string you should use the digest
1049 as the salt (like "crypt($plain, $digest) eq $digest"). The SALT
1050 used to create the digest is visible as part of the digest. This
1051 ensures "crypt" will hash the new string with the same salt as the
1052 digest. This allows your code to work with the standard "crypt"
1053 and with more exotic implementations. In other words, assume
1054 nothing about the returned string itself nor about how many bytes
1055 of SALT may matter.
1056
1057 Traditionally the result is a string of 13 bytes: two first bytes
1058 of the salt, followed by 11 bytes from the set "[./0-9A-Za-z]", and
1059 only the first eight bytes of PLAINTEXT mattered. But alternative
1060 hashing schemes (like MD5), higher level security schemes (like
1061 C2), and implementations on non-Unix platforms may produce
1062 different strings.
1063
1064 When choosing a new salt create a random two character string whose
1065 characters come from the set "[./0-9A-Za-z]" (like "join '', ('.',
1066 '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64]"). This set of
1067 characters is just a recommendation; the characters allowed in the
1068 salt depend solely on your system's crypt library, and Perl can't
1069 restrict what salts "crypt" accepts.
1070
1071 Here's an example that makes sure that whoever runs this program
1072 knows their password:
1073
1074 my $pwd = (getpwuid($<))[1];
1075
1076 system "stty -echo";
1077 print "Password: ";
1078 chomp(my $word = <STDIN>);
1079 print "\n";
1080 system "stty echo";
1081
1082 if (crypt($word, $pwd) ne $pwd) {
1083 die "Sorry...\n";
1084 } else {
1085 print "ok\n";
1086 }
1087
1088 Of course, typing in your own password to whoever asks you for it
1089 is unwise.
1090
1091 The "crypt" function is unsuitable for hashing large quantities of
1092 data, not least of all because you can't get the information back.
1093 Look at the Digest module for more robust algorithms.
1094
1095 If using "crypt" on a Unicode string (which potentially has
1096 characters with codepoints above 255), Perl tries to make sense of
1097 the situation by trying to downgrade (a copy of) the string back to
1098 an eight-bit byte string before calling "crypt" (on that copy). If
1099 that works, good. If not, "crypt" dies with "Wide character in
1100 crypt".
1101
1102 Portability issues: "crypt" in perlport.
1103
1104 dbmclose HASH
1105 [This function has been largely superseded by the "untie"
1106 function.]
1107
1108 Breaks the binding between a DBM file and a hash.
1109
1110 Portability issues: "dbmclose" in perlport.
1111
1112 dbmopen HASH,DBNAME,MASK
1113 [This function has been largely superseded by the "tie" function.]
1114
1115 This binds a dbm(3), ndbm(3), sdbm(3), gdbm(3), or Berkeley DB file
1116 to a hash. HASH is the name of the hash. (Unlike normal "open",
1117 the first argument is not a filehandle, even though it looks like
1118 one). DBNAME is the name of the database (without the .dir or .pag
1119 extension if any). If the database does not exist, it is created
1120 with protection specified by MASK (as modified by the "umask"). To
1121 prevent creation of the database if it doesn't exist, you may
1122 specify a MASK of 0, and the function will return a false value if
1123 it can't find an existing database. If your system supports only
1124 the older DBM functions, you may make only one "dbmopen" call in
1125 your program. In older versions of Perl, if your system had
1126 neither DBM nor ndbm, calling "dbmopen" produced a fatal error; it
1127 now falls back to sdbm(3).
1128
1129 If you don't have write access to the DBM file, you can only read
1130 hash variables, not set them. If you want to test whether you can
1131 write, either use file tests or try setting a dummy hash entry
1132 inside an "eval" to trap the error.
1133
1134 Note that functions such as "keys" and "values" may return huge
1135 lists when used on large DBM files. You may prefer to use the
1136 "each" function to iterate over large DBM files. Example:
1137
1138 # print out history file offsets
1139 dbmopen(%HIST,'/usr/lib/news/history',0666);
1140 while (($key,$val) = each %HIST) {
1141 print $key, ' = ', unpack('L',$val), "\n";
1142 }
1143 dbmclose(%HIST);
1144
1145 See also AnyDBM_File for a more general description of the pros and
1146 cons of the various dbm approaches, as well as DB_File for a
1147 particularly rich implementation.
1148
1149 You can control which DBM library you use by loading that library
1150 before you call "dbmopen":
1151
1152 use DB_File;
1153 dbmopen(%NS_Hist, "$ENV{HOME}/.netscape/history.db")
1154 or die "Can't open netscape history file: $!";
1155
1156 Portability issues: "dbmopen" in perlport.
1157
1158 defined EXPR
1159 defined
1160 Returns a Boolean value telling whether EXPR has a value other than
1161 the undefined value "undef". If EXPR is not present, $_ is
1162 checked.
1163
1164 Many operations return "undef" to indicate failure, end of file,
1165 system error, uninitialized variable, and other exceptional
1166 conditions. This function allows you to distinguish "undef" from
1167 other values. (A simple Boolean test will not distinguish among
1168 "undef", zero, the empty string, and "0", which are all equally
1169 false.) Note that since "undef" is a valid scalar, its presence
1170 doesn't necessarily indicate an exceptional condition: "pop"
1171 returns "undef" when its argument is an empty array, or when the
1172 element to return happens to be "undef".
1173
1174 You may also use defined(&func) to check whether subroutine "func"
1175 has ever been defined. The return value is unaffected by any
1176 forward declarations of "func". A subroutine that is not defined
1177 may still be callable: its package may have an "AUTOLOAD" method
1178 that makes it spring into existence the first time that it is
1179 called; see perlsub.
1180
1181 Use of "defined" on aggregates (hashes and arrays) is no longer
1182 supported. It used to report whether memory for that aggregate had
1183 ever been allocated. You should instead use a simple test for
1184 size:
1185
1186 if (@an_array) { print "has array elements\n" }
1187 if (%a_hash) { print "has hash members\n" }
1188
1189 When used on a hash element, it tells you whether the value is
1190 defined, not whether the key exists in the hash. Use "exists" for
1191 the latter purpose.
1192
1193 Examples:
1194
1195 print if defined $switch{D};
1196 print "$val\n" while defined($val = pop(@ary));
1197 die "Can't readlink $sym: $!"
1198 unless defined($value = readlink $sym);
1199 sub foo { defined &$bar ? $bar->(@_) : die "No bar"; }
1200 $debugging = 0 unless defined $debugging;
1201
1202 Note: Many folks tend to overuse "defined" and are then surprised
1203 to discover that the number 0 and "" (the zero-length string) are,
1204 in fact, defined values. For example, if you say
1205
1206 "ab" =~ /a(.*)b/;
1207
1208 The pattern match succeeds and $1 is defined, although it matched
1209 "nothing". It didn't really fail to match anything. Rather, it
1210 matched something that happened to be zero characters long. This
1211 is all very above-board and honest. When a function returns an
1212 undefined value, it's an admission that it couldn't give you an
1213 honest answer. So you should use "defined" only when questioning
1214 the integrity of what you're trying to do. At other times, a
1215 simple comparison to 0 or "" is what you want.
1216
1217 See also "undef", "exists", "ref".
1218
1219 delete EXPR
1220 Given an expression that specifies an element or slice of a hash,
1221 "delete" deletes the specified elements from that hash so that
1222 "exists" on that element no longer returns true. Setting a hash
1223 element to the undefined value does not remove its key, but
1224 deleting it does; see "exists".
1225
1226 In list context, usually returns the value or values deleted, or
1227 the last such element in scalar context. The return list's length
1228 corresponds to that of the argument list: deleting non-existent
1229 elements returns the undefined value in their corresponding
1230 positions. Since Perl 5.28, a key/value hash slice can be passed to
1231 "delete", and the return value is a list of key/value pairs (two
1232 elements for each item deleted from the hash).
1233
1234 "delete" may also be used on arrays and array slices, but its
1235 behavior is less straightforward. Although "exists" will return
1236 false for deleted entries, deleting array elements never changes
1237 indices of existing values; use "shift" or "splice" for that.
1238 However, if any deleted elements fall at the end of an array, the
1239 array's size shrinks to the position of the highest element that
1240 still tests true for "exists", or to 0 if none do. In other words,
1241 an array won't have trailing nonexistent elements after a delete.
1242
1243 WARNING: Calling "delete" on array values is strongly discouraged.
1244 The notion of deleting or checking the existence of Perl array
1245 elements is not conceptually coherent, and can lead to surprising
1246 behavior.
1247
1248 Deleting from %ENV modifies the environment. Deleting from a hash
1249 tied to a DBM file deletes the entry from the DBM file. Deleting
1250 from a "tied" hash or array may not necessarily return anything; it
1251 depends on the implementation of the "tied" package's DELETE
1252 method, which may do whatever it pleases.
1253
1254 The "delete local EXPR" construct localizes the deletion to the
1255 current block at run time. Until the block exits, elements locally
1256 deleted temporarily no longer exist. See "Localized deletion of
1257 elements of composite types" in perlsub.
1258
1259 my %hash = (foo => 11, bar => 22, baz => 33);
1260 my $scalar = delete $hash{foo}; # $scalar is 11
1261 $scalar = delete @hash{qw(foo bar)}; # $scalar is 22
1262 my @array = delete @hash{qw(foo baz)}; # @array is (undef,33)
1263
1264 The following (inefficiently) deletes all the values of %HASH and
1265 @ARRAY:
1266
1267 foreach my $key (keys %HASH) {
1268 delete $HASH{$key};
1269 }
1270
1271 foreach my $index (0 .. $#ARRAY) {
1272 delete $ARRAY[$index];
1273 }
1274
1275 And so do these:
1276
1277 delete @HASH{keys %HASH};
1278
1279 delete @ARRAY[0 .. $#ARRAY];
1280
1281 But both are slower than assigning the empty list or undefining
1282 %HASH or @ARRAY, which is the customary way to empty out an
1283 aggregate:
1284
1285 %HASH = (); # completely empty %HASH
1286 undef %HASH; # forget %HASH ever existed
1287
1288 @ARRAY = (); # completely empty @ARRAY
1289 undef @ARRAY; # forget @ARRAY ever existed
1290
1291 The EXPR can be arbitrarily complicated provided its final
1292 operation is an element or slice of an aggregate:
1293
1294 delete $ref->[$x][$y]{$key};
1295 delete $ref->[$x][$y]->@{$key1, $key2, @morekeys};
1296
1297 delete $ref->[$x][$y][$index];
1298 delete $ref->[$x][$y]->@[$index1, $index2, @moreindices];
1299
1300 die LIST
1301 "die" raises an exception. Inside an "eval" the exception is
1302 stuffed into $@ and the "eval" is terminated with the undefined
1303 value. If the exception is outside of all enclosing "eval"s, then
1304 the uncaught exception is printed to "STDERR" and perl exits with
1305 an exit code indicating failure. If you need to exit the process
1306 with a specific exit code, see "exit".
1307
1308 Equivalent examples:
1309
1310 die "Can't cd to spool: $!\n" unless chdir '/usr/spool/news';
1311 chdir '/usr/spool/news' or die "Can't cd to spool: $!\n"
1312
1313 Most of the time, "die" is called with a string to use as the
1314 exception. You may either give a single non-reference operand to
1315 serve as the exception, or a list of two or more items, which will
1316 be stringified and concatenated to make the exception.
1317
1318 If the string exception does not end in a newline, the current
1319 script line number and input line number (if any) and a newline are
1320 appended to it. Note that the "input line number" (also known as
1321 "chunk") is subject to whatever notion of "line" happens to be
1322 currently in effect, and is also available as the special variable
1323 $.. See "$/" in perlvar and "$." in perlvar.
1324
1325 Hint: sometimes appending ", stopped" to your message will cause it
1326 to make better sense when the string "at foo line 123" is appended.
1327 Suppose you are running script "canasta".
1328
1329 die "/etc/games is no good";
1330 die "/etc/games is no good, stopped";
1331
1332 produce, respectively
1333
1334 /etc/games is no good at canasta line 123.
1335 /etc/games is no good, stopped at canasta line 123.
1336
1337 If LIST was empty or made an empty string, and $@ already contains
1338 an exception value (typically from a previous "eval"), then that
1339 value is reused after appending "\t...propagated". This is useful
1340 for propagating exceptions:
1341
1342 eval { ... };
1343 die unless $@ =~ /Expected exception/;
1344
1345 If LIST was empty or made an empty string, and $@ contains an
1346 object reference that has a "PROPAGATE" method, that method will be
1347 called with additional file and line number parameters. The return
1348 value replaces the value in $@; i.e., as if "$@ = eval {
1349 $@->PROPAGATE(__FILE__, __LINE__) };" were called.
1350
1351 If LIST was empty or made an empty string, and $@ is also empty,
1352 then the string "Died" is used.
1353
1354 You can also call "die" with a reference argument, and if this is
1355 trapped within an "eval", $@ contains that reference. This permits
1356 more elaborate exception handling using objects that maintain
1357 arbitrary state about the exception. Such a scheme is sometimes
1358 preferable to matching particular string values of $@ with regular
1359 expressions.
1360
1361 Because Perl stringifies uncaught exception messages before
1362 display, you'll probably want to overload stringification
1363 operations on exception objects. See overload for details about
1364 that. The stringified message should be non-empty, and should end
1365 in a newline, in order to fit in with the treatment of string
1366 exceptions. Also, because an exception object reference cannot be
1367 stringified without destroying it, Perl doesn't attempt to append
1368 location or other information to a reference exception. If you
1369 want location information with a complex exception object, you'll
1370 have to arrange to put the location information into the object
1371 yourself.
1372
1373 Because $@ is a global variable, be careful that analyzing an
1374 exception caught by "eval" doesn't replace the reference in the
1375 global variable. It's easiest to make a local copy of the
1376 reference before any manipulations. Here's an example:
1377
1378 use Scalar::Util "blessed";
1379
1380 eval { ... ; die Some::Module::Exception->new( FOO => "bar" ) };
1381 if (my $ev_err = $@) {
1382 if (blessed($ev_err)
1383 && $ev_err->isa("Some::Module::Exception")) {
1384 # handle Some::Module::Exception
1385 }
1386 else {
1387 # handle all other possible exceptions
1388 }
1389 }
1390
1391 If an uncaught exception results in interpreter exit, the exit code
1392 is determined from the values of $! and $? with this pseudocode:
1393
1394 exit $! if $!; # errno
1395 exit $? >> 8 if $? >> 8; # child exit status
1396 exit 255; # last resort
1397
1398 As with "exit", $? is set prior to unwinding the call stack; any
1399 "DESTROY" or "END" handlers can then alter this value, and thus
1400 Perl's exit code.
1401
1402 The intent is to squeeze as much possible information about the
1403 likely cause into the limited space of the system exit code.
1404 However, as $! is the value of C's "errno", which can be set by any
1405 system call, this means that the value of the exit code used by
1406 "die" can be non-predictable, so should not be relied upon, other
1407 than to be non-zero.
1408
1409 You can arrange for a callback to be run just before the "die" does
1410 its deed, by setting the $SIG{__DIE__} hook. The associated
1411 handler is called with the exception as an argument, and can change
1412 the exception, if it sees fit, by calling "die" again. See "%SIG"
1413 in perlvar for details on setting %SIG entries, and "eval" for some
1414 examples. Although this feature was to be run only right before
1415 your program was to exit, this is not currently so: the
1416 $SIG{__DIE__} hook is currently called even inside "eval"ed
1417 blocks/strings! If one wants the hook to do nothing in such
1418 situations, put
1419
1420 die @_ if $^S;
1421
1422 as the first line of the handler (see "$^S" in perlvar). Because
1423 this promotes strange action at a distance, this counterintuitive
1424 behavior may be fixed in a future release.
1425
1426 See also "exit", "warn", and the Carp module.
1427
1428 do BLOCK
1429 Not really a function. Returns the value of the last command in
1430 the sequence of commands indicated by BLOCK. When modified by the
1431 "while" or "until" loop modifier, executes the BLOCK once before
1432 testing the loop condition. (On other statements the loop
1433 modifiers test the conditional first.)
1434
1435 "do BLOCK" does not count as a loop, so the loop control statements
1436 "next", "last", or "redo" cannot be used to leave or restart the
1437 block. See perlsyn for alternative strategies.
1438
1439 do EXPR
1440 Uses the value of EXPR as a filename and executes the contents of
1441 the file as a Perl script:
1442
1443 # load the exact specified file (./ and ../ special-cased)
1444 do '/foo/stat.pl';
1445 do './stat.pl';
1446 do '../foo/stat.pl';
1447
1448 # search for the named file within @INC
1449 do 'stat.pl';
1450 do 'foo/stat.pl';
1451
1452 "do './stat.pl'" is largely like
1453
1454 eval `cat stat.pl`;
1455
1456 except that it's more concise, runs no external processes, and
1457 keeps track of the current filename for error messages. It also
1458 differs in that code evaluated with "do FILE" cannot see lexicals
1459 in the enclosing scope; "eval STRING" does. It's the same,
1460 however, in that it does reparse the file every time you call it,
1461 so you probably don't want to do this inside a loop.
1462
1463 Using "do" with a relative path (except for ./ and ../), like
1464
1465 do 'foo/stat.pl';
1466
1467 will search the @INC directories, and update %INC if the file is
1468 found. See "@INC" in perlvar and "%INC" in perlvar for these
1469 variables. In particular, note that whilst historically @INC
1470 contained '.' (the current directory) making these two cases
1471 equivalent, that is no longer necessarily the case, as '.' is not
1472 included in @INC by default in perl versions 5.26.0 onwards.
1473 Instead, perl will now warn:
1474
1475 do "stat.pl" failed, '.' is no longer in @INC;
1476 did you mean do "./stat.pl"?
1477
1478 If "do" can read the file but cannot compile it, it returns "undef"
1479 and sets an error message in $@. If "do" cannot read the file, it
1480 returns undef and sets $! to the error. Always check $@ first, as
1481 compilation could fail in a way that also sets $!. If the file is
1482 successfully compiled, "do" returns the value of the last
1483 expression evaluated.
1484
1485 Inclusion of library modules is better done with the "use" and
1486 "require" operators, which also do automatic error checking and
1487 raise an exception if there's a problem.
1488
1489 You might like to use "do" to read in a program configuration file.
1490 Manual error checking can be done this way:
1491
1492 # Read in config files: system first, then user.
1493 # Beware of using relative pathnames here.
1494 for $file ("/share/prog/defaults.rc",
1495 "$ENV{HOME}/.someprogrc")
1496 {
1497 unless ($return = do $file) {
1498 warn "couldn't parse $file: $@" if $@;
1499 warn "couldn't do $file: $!" unless defined $return;
1500 warn "couldn't run $file" unless $return;
1501 }
1502 }
1503
1504 dump LABEL
1505 dump EXPR
1506 dump
1507 This function causes an immediate core dump. See also the -u
1508 command-line switch in perlrun, which does the same thing.
1509 Primarily this is so that you can use the undump program (not
1510 supplied) to turn your core dump into an executable binary after
1511 having initialized all your variables at the beginning of the
1512 program. When the new binary is executed it will begin by
1513 executing a "goto LABEL" (with all the restrictions that "goto"
1514 suffers). Think of it as a goto with an intervening core dump and
1515 reincarnation. If "LABEL" is omitted, restarts the program from
1516 the top. The "dump EXPR" form, available starting in Perl 5.18.0,
1517 allows a name to be computed at run time, being otherwise identical
1518 to "dump LABEL".
1519
1520 WARNING: Any files opened at the time of the dump will not be open
1521 any more when the program is reincarnated, with possible resulting
1522 confusion by Perl.
1523
1524 This function is now largely obsolete, mostly because it's very
1525 hard to convert a core file into an executable. As of Perl 5.30,
1526 it must be invoked as CORE::dump().
1527
1528 Unlike most named operators, this has the same precedence as
1529 assignment. It is also exempt from the looks-like-a-function rule,
1530 so "dump ("foo")."bar"" will cause "bar" to be part of the argument
1531 to "dump".
1532
1533 Portability issues: "dump" in perlport.
1534
1535 each HASH
1536 each ARRAY
1537 When called on a hash in list context, returns a 2-element list
1538 consisting of the key and value for the next element of a hash. In
1539 Perl 5.12 and later only, it will also return the index and value
1540 for the next element of an array so that you can iterate over it;
1541 older Perls consider this a syntax error. When called in scalar
1542 context, returns only the key (not the value) in a hash, or the
1543 index in an array.
1544
1545 Hash entries are returned in an apparently random order. The
1546 actual random order is specific to a given hash; the exact same
1547 series of operations on two hashes may result in a different order
1548 for each hash. Any insertion into the hash may change the order,
1549 as will any deletion, with the exception that the most recent key
1550 returned by "each" or "keys" may be deleted without changing the
1551 order. So long as a given hash is unmodified you may rely on
1552 "keys", "values" and "each" to repeatedly return the same order as
1553 each other. See "Algorithmic Complexity Attacks" in perlsec for
1554 details on why hash order is randomized. Aside from the guarantees
1555 provided here the exact details of Perl's hash algorithm and the
1556 hash traversal order are subject to change in any release of Perl.
1557
1558 After "each" has returned all entries from the hash or array, the
1559 next call to "each" returns the empty list in list context and
1560 "undef" in scalar context; the next call following that one
1561 restarts iteration. Each hash or array has its own internal
1562 iterator, accessed by "each", "keys", and "values". The iterator
1563 is implicitly reset when "each" has reached the end as just
1564 described; it can be explicitly reset by calling "keys" or "values"
1565 on the hash or array, or by referencing the hash (but not array) in
1566 list context. If you add or delete a hash's elements while
1567 iterating over it, the effect on the iterator is unspecified; for
1568 example, entries may be skipped or duplicated--so don't do that.
1569 Exception: It is always safe to delete the item most recently
1570 returned by "each", so the following code works properly:
1571
1572 while (my ($key, $value) = each %hash) {
1573 print $key, "\n";
1574 delete $hash{$key}; # This is safe
1575 }
1576
1577 Tied hashes may have a different ordering behaviour to perl's hash
1578 implementation.
1579
1580 The iterator used by "each" is attached to the hash or array, and
1581 is shared between all iteration operations applied to the same hash
1582 or array. Thus all uses of "each" on a single hash or array
1583 advance the same iterator location. All uses of "each" are also
1584 subject to having the iterator reset by any use of "keys" or
1585 "values" on the same hash or array, or by the hash (but not array)
1586 being referenced in list context. This makes "each"-based loops
1587 quite fragile: it is easy to arrive at such a loop with the
1588 iterator already part way through the object, or to accidentally
1589 clobber the iterator state during execution of the loop body. It's
1590 easy enough to explicitly reset the iterator before starting a
1591 loop, but there is no way to insulate the iterator state used by a
1592 loop from the iterator state used by anything else that might
1593 execute during the loop body. To avoid these problems, use a
1594 "foreach" loop rather than "while"-"each".
1595
1596 This extends to using "each" on the result of an anonymous hash or
1597 array constructor. A new underlying array or hash is created each
1598 time so each will always start iterating from scratch, eg:
1599
1600 # loops forever
1601 while (my ($key, $value) = each @{ +{ a => 1 } }) {
1602 print "$key=$value\n";
1603 }
1604
1605 This prints out your environment like the printenv(1) program, but
1606 in a different order:
1607
1608 while (my ($key,$value) = each %ENV) {
1609 print "$key=$value\n";
1610 }
1611
1612 Starting with Perl 5.14, an experimental feature allowed "each" to
1613 take a scalar expression. This experiment has been deemed
1614 unsuccessful, and was removed as of Perl 5.24.
1615
1616 As of Perl 5.18 you can use a bare "each" in a "while" loop, which
1617 will set $_ on every iteration. If either an "each" expression or
1618 an explicit assignment of an "each" expression to a scalar is used
1619 as a "while"/"for" condition, then the condition actually tests for
1620 definedness of the expression's value, not for its regular truth
1621 value.
1622
1623 while (each %ENV) {
1624 print "$_=$ENV{$_}\n";
1625 }
1626
1627 To avoid confusing would-be users of your code who are running
1628 earlier versions of Perl with mysterious syntax errors, put this
1629 sort of thing at the top of your file to signal that your code will
1630 work only on Perls of a recent vintage:
1631
1632 use v5.12; # so keys/values/each work on arrays
1633 use v5.18; # so each assigns to $_ in a lone while test
1634
1635 See also "keys", "values", and "sort".
1636
1637 eof FILEHANDLE
1638 eof ()
1639 eof Returns 1 if the next read on FILEHANDLE will return end of file or
1640 if FILEHANDLE is not open. FILEHANDLE may be an expression whose
1641 value gives the real filehandle. (Note that this function actually
1642 reads a character and then "ungetc"s it, so isn't useful in an
1643 interactive context.) Do not read from a terminal file (or call
1644 eof(FILEHANDLE) on it) after end-of-file is reached. File types
1645 such as terminals may lose the end-of-file condition if you do.
1646
1647 An "eof" without an argument uses the last file read. Using eof()
1648 with empty parentheses is different. It refers to the pseudo file
1649 formed from the files listed on the command line and accessed via
1650 the "<>" operator. Since "<>" isn't explicitly opened, as a normal
1651 filehandle is, an eof() before "<>" has been used will cause @ARGV
1652 to be examined to determine if input is available. Similarly, an
1653 eof() after "<>" has returned end-of-file will assume you are
1654 processing another @ARGV list, and if you haven't set @ARGV, will
1655 read input from "STDIN"; see "I/O Operators" in perlop.
1656
1657 In a "while (<>)" loop, "eof" or eof(ARGV) can be used to detect
1658 the end of each file, whereas eof() will detect the end of the very
1659 last file only. Examples:
1660
1661 # reset line numbering on each input file
1662 while (<>) {
1663 next if /^\s*#/; # skip comments
1664 print "$.\t$_";
1665 } continue {
1666 close ARGV if eof; # Not eof()!
1667 }
1668
1669 # insert dashes just before last line of last file
1670 while (<>) {
1671 if (eof()) { # check for end of last file
1672 print "--------------\n";
1673 }
1674 print;
1675 last if eof(); # needed if we're reading from a terminal
1676 }
1677
1678 Practical hint: you almost never need to use "eof" in Perl, because
1679 the input operators typically return "undef" when they run out of
1680 data or encounter an error.
1681
1682 eval EXPR
1683 eval BLOCK
1684 eval
1685 "eval" in all its forms is used to execute a little Perl program,
1686 trapping any errors encountered so they don't crash the calling
1687 program.
1688
1689 Plain "eval" with no argument is just "eval EXPR", where the
1690 expression is understood to be contained in $_. Thus there are
1691 only two real "eval" forms; the one with an EXPR is often called
1692 "string eval". In a string eval, the value of the expression
1693 (which is itself determined within scalar context) is first parsed,
1694 and if there were no errors, executed as a block within the lexical
1695 context of the current Perl program. This form is typically used
1696 to delay parsing and subsequent execution of the text of EXPR until
1697 run time. Note that the value is parsed every time the "eval"
1698 executes.
1699
1700 The other form is called "block eval". It is less general than
1701 string eval, but the code within the BLOCK is parsed only once (at
1702 the same time the code surrounding the "eval" itself was parsed)
1703 and executed within the context of the current Perl program. This
1704 form is typically used to trap exceptions more efficiently than the
1705 first, while also providing the benefit of checking the code within
1706 BLOCK at compile time. BLOCK is parsed and compiled just once.
1707 Since errors are trapped, it often is used to check if a given
1708 feature is available.
1709
1710 In both forms, the value returned is the value of the last
1711 expression evaluated inside the mini-program; a return statement
1712 may also be used, just as with subroutines. The expression
1713 providing the return value is evaluated in void, scalar, or list
1714 context, depending on the context of the "eval" itself. See
1715 "wantarray" for more on how the evaluation context can be
1716 determined.
1717
1718 If there is a syntax error or runtime error, or a "die" statement
1719 is executed, "eval" returns "undef" in scalar context, or an empty
1720 list in list context, and $@ is set to the error message. (Prior
1721 to 5.16, a bug caused "undef" to be returned in list context for
1722 syntax errors, but not for runtime errors.) If there was no error,
1723 $@ is set to the empty string. A control flow operator like "last"
1724 or "goto" can bypass the setting of $@. Beware that using "eval"
1725 neither silences Perl from printing warnings to STDERR, nor does it
1726 stuff the text of warning messages into $@. To do either of those,
1727 you have to use the $SIG{__WARN__} facility, or turn off warnings
1728 inside the BLOCK or EXPR using "no warnings 'all'". See "warn",
1729 perlvar, and warnings.
1730
1731 Note that, because "eval" traps otherwise-fatal errors, it is
1732 useful for determining whether a particular feature (such as
1733 "socket" or "symlink") is implemented. It is also Perl's
1734 exception-trapping mechanism, where the "die" operator is used to
1735 raise exceptions.
1736
1737 Before Perl 5.14, the assignment to $@ occurred before restoration
1738 of localized variables, which means that for your code to run on
1739 older versions, a temporary is required if you want to mask some,
1740 but not all errors:
1741
1742 # alter $@ on nefarious repugnancy only
1743 {
1744 my $e;
1745 {
1746 local $@; # protect existing $@
1747 eval { test_repugnancy() };
1748 # $@ =~ /nefarious/ and die $@; # Perl 5.14 and higher only
1749 $@ =~ /nefarious/ and $e = $@;
1750 }
1751 die $e if defined $e
1752 }
1753
1754 There are some different considerations for each form:
1755
1756 String eval
1757 Since the return value of EXPR is executed as a block within
1758 the lexical context of the current Perl program, any outer
1759 lexical variables are visible to it, and any package variable
1760 settings or subroutine and format definitions remain
1761 afterwards.
1762
1763 Note that when "BEGIN {}" blocks are embedded inside of an eval
1764 block the contents of the block will be executed immediately
1765 and before the rest of the eval code is executed. You can
1766 disable this entirely by
1767
1768 local ${^MAX_NESTED_EVAL_BEGIN_BLOCKS} = 0;
1769 eval $string;
1770
1771 which will cause any embedded "BEGIN" blocks in $string to
1772 throw an exception.
1773
1774 Under the "unicode_eval" feature
1775 If this feature is enabled (which is the default under a
1776 "use 5.16" or higher declaration), Perl assumes that EXPR
1777 is a character string. Any "use utf8" or "no utf8"
1778 declarations within the string thus have no effect. Source
1779 filters are forbidden as well. ("unicode_strings",
1780 however, can appear within the string.)
1781
1782 See also the "evalbytes" operator, which works properly
1783 with source filters.
1784
1785 Outside the "unicode_eval" feature
1786 In this case, the behavior is problematic and is not so
1787 easily described. Here are two bugs that cannot easily be
1788 fixed without breaking existing programs:
1789
1790 • Perl's internal storage of EXPR affects the behavior of
1791 the executed code. For example:
1792
1793 my $v = eval "use utf8; '$expr'";
1794
1795 If $expr is "\xc4\x80" (U+0100 in UTF-8), then the
1796 value stored in $v will depend on whether Perl stores
1797 $expr "upgraded" (cf. utf8) or not:
1798
1799 • If upgraded, $v will be "\xc4\x80" (i.e., the "use
1800 utf8" has no effect.)
1801
1802 • If non-upgraded, $v will be "\x{100}".
1803
1804 This is undesirable since being upgraded or not should
1805 not affect a string's behavior.
1806
1807 • Source filters activated within "eval" leak out into
1808 whichever file scope is currently being compiled. To
1809 give an example with the CPAN module Semi::Semicolons:
1810
1811 BEGIN { eval "use Semi::Semicolons; # not filtered" }
1812 # filtered here!
1813
1814 "evalbytes" fixes that to work the way one would
1815 expect:
1816
1817 use feature "evalbytes";
1818 BEGIN { evalbytes "use Semi::Semicolons; # filtered" }
1819 # not filtered
1820
1821 Problems can arise if the string expands a scalar containing a
1822 floating point number. That scalar can expand to letters, such
1823 as "NaN" or "Infinity"; or, within the scope of a "use locale",
1824 the decimal point character may be something other than a dot
1825 (such as a comma). None of these are likely to parse as you
1826 are likely expecting.
1827
1828 You should be especially careful to remember what's being
1829 looked at when:
1830
1831 eval $x; # CASE 1
1832 eval "$x"; # CASE 2
1833
1834 eval '$x'; # CASE 3
1835 eval { $x }; # CASE 4
1836
1837 eval "\$$x++"; # CASE 5
1838 $$x++; # CASE 6
1839
1840 Cases 1 and 2 above behave identically: they run the code
1841 contained in the variable $x. (Although case 2 has misleading
1842 double quotes making the reader wonder what else might be
1843 happening (nothing is).) Cases 3 and 4 likewise behave in the
1844 same way: they run the code '$x', which does nothing but return
1845 the value of $x. (Case 4 is preferred for purely visual
1846 reasons, but it also has the advantage of compiling at compile-
1847 time instead of at run-time.) Case 5 is a place where normally
1848 you would like to use double quotes, except that in this
1849 particular situation, you can just use symbolic references
1850 instead, as in case 6.
1851
1852 An "eval ''" executed within a subroutine defined in the "DB"
1853 package doesn't see the usual surrounding lexical scope, but
1854 rather the scope of the first non-DB piece of code that called
1855 it. You don't normally need to worry about this unless you are
1856 writing a Perl debugger.
1857
1858 The final semicolon, if any, may be omitted from the value of
1859 EXPR.
1860
1861 Block eval
1862 If the code to be executed doesn't vary, you may use the eval-
1863 BLOCK form to trap run-time errors without incurring the
1864 penalty of recompiling each time. The error, if any, is still
1865 returned in $@. Examples:
1866
1867 # make divide-by-zero nonfatal
1868 eval { $answer = $a / $b; }; warn $@ if $@;
1869
1870 # same thing, but less efficient
1871 eval '$answer = $a / $b'; warn $@ if $@;
1872
1873 # a compile-time error
1874 eval { $answer = }; # WRONG
1875
1876 # a run-time error
1877 eval '$answer ='; # sets $@
1878
1879 If you want to trap errors when loading an XS module, some
1880 problems with the binary interface (such as Perl version skew)
1881 may be fatal even with "eval" unless $ENV{PERL_DL_NONLAZY} is
1882 set. See perlrun.
1883
1884 Using the "eval {}" form as an exception trap in libraries does
1885 have some issues. Due to the current arguably broken state of
1886 "__DIE__" hooks, you may wish not to trigger any "__DIE__"
1887 hooks that user code may have installed. You can use the
1888 "local $SIG{__DIE__}" construct for this purpose, as this
1889 example shows:
1890
1891 # a private exception trap for divide-by-zero
1892 eval { local $SIG{'__DIE__'}; $answer = $a / $b; };
1893 warn $@ if $@;
1894
1895 This is especially significant, given that "__DIE__" hooks can
1896 call "die" again, which has the effect of changing their error
1897 messages:
1898
1899 # __DIE__ hooks may modify error messages
1900 {
1901 local $SIG{'__DIE__'} =
1902 sub { (my $x = $_[0]) =~ s/foo/bar/g; die $x };
1903 eval { die "foo lives here" };
1904 print $@ if $@; # prints "bar lives here"
1905 }
1906
1907 Because this promotes action at a distance, this
1908 counterintuitive behavior may be fixed in a future release.
1909
1910 "eval BLOCK" does not count as a loop, so the loop control
1911 statements "next", "last", or "redo" cannot be used to leave or
1912 restart the block.
1913
1914 The final semicolon, if any, may be omitted from within the
1915 BLOCK.
1916
1917 evalbytes EXPR
1918 evalbytes
1919 This function is similar to a string eval, except it always parses
1920 its argument (or $_ if EXPR is omitted) as a byte string. If the
1921 string contains any code points above 255, then it cannot be a byte
1922 string, and the "evalbytes" will fail with the error stored in $@.
1923
1924 "use utf8" and "no utf8" within the string have their usual effect.
1925
1926 Source filters activated within the evaluated code apply to the
1927 code itself.
1928
1929 "evalbytes" is available starting in Perl v5.16. To access it, you
1930 must say "CORE::evalbytes", but you can omit the "CORE::" if the
1931 "evalbytes" feature is enabled. This is enabled automatically with
1932 a "use v5.16" (or higher) declaration in the current scope.
1933
1934 exec LIST
1935 exec PROGRAM LIST
1936 The "exec" function executes a system command and never returns;
1937 use "system" instead of "exec" if you want it to return. It fails
1938 and returns false only if the command does not exist and it is
1939 executed directly instead of via your system's command shell (see
1940 below).
1941
1942 Since it's a common mistake to use "exec" instead of "system", Perl
1943 warns you if "exec" is called in void context and if there is a
1944 following statement that isn't "die", "warn", or "exit" (if
1945 warnings are enabled--but you always do that, right?). If you
1946 really want to follow an "exec" with some other statement, you can
1947 use one of these styles to avoid the warning:
1948
1949 exec ('foo') or print STDERR "couldn't exec foo: $!";
1950 { exec ('foo') }; print STDERR "couldn't exec foo: $!";
1951
1952 If there is more than one argument in LIST, this calls execvp(3)
1953 with the arguments in LIST. If there is only one element in LIST,
1954 the argument is checked for shell metacharacters, and if there are
1955 any, the entire argument is passed to the system's command shell
1956 for parsing (this is "/bin/sh -c" on Unix platforms, but varies on
1957 other platforms). If there are no shell metacharacters in the
1958 argument, it is split into words and passed directly to "execvp",
1959 which is more efficient. Examples:
1960
1961 exec '/bin/echo', 'Your arguments are: ', @ARGV;
1962 exec "sort $outfile | uniq";
1963
1964 If you don't really want to execute the first argument, but want to
1965 lie to the program you are executing about its own name, you can
1966 specify the program you actually want to run as an "indirect
1967 object" (without a comma) in front of the LIST, as in "exec PROGRAM
1968 LIST". (This always forces interpretation of the LIST as a
1969 multivalued list, even if there is only a single scalar in the
1970 list.) Example:
1971
1972 my $shell = '/bin/csh';
1973 exec $shell '-sh'; # pretend it's a login shell
1974
1975 or, more directly,
1976
1977 exec {'/bin/csh'} '-sh'; # pretend it's a login shell
1978
1979 When the arguments get executed via the system shell, results are
1980 subject to its quirks and capabilities. See "`STRING`" in perlop
1981 for details.
1982
1983 Using an indirect object with "exec" or "system" is also more
1984 secure. This usage (which also works fine with "system") forces
1985 interpretation of the arguments as a multivalued list, even if the
1986 list had just one argument. That way you're safe from the shell
1987 expanding wildcards or splitting up words with whitespace in them.
1988
1989 my @args = ( "echo surprise" );
1990
1991 exec @args; # subject to shell escapes
1992 # if @args == 1
1993 exec { $args[0] } @args; # safe even with one-arg list
1994
1995 The first version, the one without the indirect object, ran the
1996 echo program, passing it "surprise" an argument. The second
1997 version didn't; it tried to run a program named "echo surprise",
1998 didn't find it, and set $? to a non-zero value indicating failure.
1999
2000 On Windows, only the "exec PROGRAM LIST" indirect object syntax
2001 will reliably avoid using the shell; "exec LIST", even with more
2002 than one element, will fall back to the shell if the first spawn
2003 fails.
2004
2005 Perl attempts to flush all files opened for output before the exec,
2006 but this may not be supported on some platforms (see perlport). To
2007 be safe, you may need to set $| ($AUTOFLUSH in English) or call the
2008 "autoflush" method of "IO::Handle" on any open handles to avoid
2009 lost output.
2010
2011 Note that "exec" will not call your "END" blocks, nor will it
2012 invoke "DESTROY" methods on your objects.
2013
2014 Portability issues: "exec" in perlport.
2015
2016 exists EXPR
2017 Given an expression that specifies an element of a hash, returns
2018 true if the specified element in the hash has ever been
2019 initialized, even if the corresponding value is undefined.
2020
2021 print "Exists\n" if exists $hash{$key};
2022 print "Defined\n" if defined $hash{$key};
2023 print "True\n" if $hash{$key};
2024
2025 exists may also be called on array elements, but its behavior is
2026 much less obvious and is strongly tied to the use of "delete" on
2027 arrays.
2028
2029 WARNING: Calling "exists" on array values is strongly discouraged.
2030 The notion of deleting or checking the existence of Perl array
2031 elements is not conceptually coherent, and can lead to surprising
2032 behavior.
2033
2034 print "Exists\n" if exists $array[$index];
2035 print "Defined\n" if defined $array[$index];
2036 print "True\n" if $array[$index];
2037
2038 A hash or array element can be true only if it's defined and
2039 defined only if it exists, but the reverse doesn't necessarily hold
2040 true.
2041
2042 Given an expression that specifies the name of a subroutine,
2043 returns true if the specified subroutine has ever been declared,
2044 even if it is undefined. Mentioning a subroutine name for exists
2045 or defined does not count as declaring it. Note that a subroutine
2046 that does not exist may still be callable: its package may have an
2047 "AUTOLOAD" method that makes it spring into existence the first
2048 time that it is called; see perlsub.
2049
2050 print "Exists\n" if exists &subroutine;
2051 print "Defined\n" if defined &subroutine;
2052
2053 Note that the EXPR can be arbitrarily complicated as long as the
2054 final operation is a hash or array key lookup or subroutine name:
2055
2056 if (exists $ref->{A}->{B}->{$key}) { }
2057 if (exists $hash{A}{B}{$key}) { }
2058
2059 if (exists $ref->{A}->{B}->[$ix]) { }
2060 if (exists $hash{A}{B}[$ix]) { }
2061
2062 if (exists &{$ref->{A}{B}{$key}}) { }
2063
2064 Although the most deeply nested array or hash element will not
2065 spring into existence just because its existence was tested, any
2066 intervening ones will. Thus "$ref->{"A"}" and "$ref->{"A"}->{"B"}"
2067 will spring into existence due to the existence test for the $key
2068 element above. This happens anywhere the arrow operator is used,
2069 including even here:
2070
2071 undef $ref;
2072 if (exists $ref->{"Some key"}) { }
2073 print $ref; # prints HASH(0x80d3d5c)
2074
2075 Use of a subroutine call, rather than a subroutine name, as an
2076 argument to "exists" is an error.
2077
2078 exists ⊂ # OK
2079 exists &sub(); # Error
2080
2081 exit EXPR
2082 exit
2083 Evaluates EXPR and exits immediately with that value. Example:
2084
2085 my $ans = <STDIN>;
2086 exit 0 if $ans =~ /^[Xx]/;
2087
2088 See also "die". If EXPR is omitted, exits with 0 status. The only
2089 universally recognized values for EXPR are 0 for success and 1 for
2090 error; other values are subject to interpretation depending on the
2091 environment in which the Perl program is running. For example,
2092 exiting 69 (EX_UNAVAILABLE) from a sendmail incoming-mail filter
2093 will cause the mailer to return the item undelivered, but that's
2094 not true everywhere.
2095
2096 Don't use "exit" to abort a subroutine if there's any chance that
2097 someone might want to trap whatever error happened. Use "die"
2098 instead, which can be trapped by an "eval".
2099
2100 The "exit" function does not always exit immediately. It calls any
2101 defined "END" routines first, but these "END" routines may not
2102 themselves abort the exit. Likewise any object destructors that
2103 need to be called are called before the real exit. "END" routines
2104 and destructors can change the exit status by modifying $?. If
2105 this is a problem, you can call POSIX::_exit($status) to avoid
2106 "END" and destructor processing. See perlmod for details.
2107
2108 Portability issues: "exit" in perlport.
2109
2110 exp EXPR
2111 exp Returns e (the natural logarithm base) to the power of EXPR. If
2112 EXPR is omitted, gives exp($_).
2113
2114 fc EXPR
2115 fc Returns the casefolded version of EXPR. This is the internal
2116 function implementing the "\F" escape in double-quoted strings.
2117
2118 Casefolding is the process of mapping strings to a form where case
2119 differences are erased; comparing two strings in their casefolded
2120 form is effectively a way of asking if two strings are equal,
2121 regardless of case.
2122
2123 Roughly, if you ever found yourself writing this
2124
2125 lc($this) eq lc($that) # Wrong!
2126 # or
2127 uc($this) eq uc($that) # Also wrong!
2128 # or
2129 $this =~ /^\Q$that\E\z/i # Right!
2130
2131 Now you can write
2132
2133 fc($this) eq fc($that)
2134
2135 And get the correct results.
2136
2137 Perl only implements the full form of casefolding, but you can
2138 access the simple folds using "casefold()" in Unicode::UCD and
2139 "prop_invmap()" in Unicode::UCD. For further information on
2140 casefolding, refer to the Unicode Standard, specifically sections
2141 3.13 "Default Case Operations", 4.2 "Case-Normative", and 5.18
2142 "Case Mappings", available at
2143 <https://www.unicode.org/versions/latest/>, as well as the Case
2144 Charts available at <https://www.unicode.org/charts/case/>.
2145
2146 If EXPR is omitted, uses $_.
2147
2148 This function behaves the same way under various pragmas, such as
2149 within "use feature 'unicode_strings", as "lc" does, with the
2150 single exception of "fc" of LATIN CAPITAL LETTER SHARP S (U+1E9E)
2151 within the scope of "use locale". The foldcase of this character
2152 would normally be "ss", but as explained in the "lc" section, case
2153 changes that cross the 255/256 boundary are problematic under
2154 locales, and are hence prohibited. Therefore, this function under
2155 locale returns instead the string "\x{17F}\x{17F}", which is the
2156 LATIN SMALL LETTER LONG S. Since that character itself folds to
2157 "s", the string of two of them together should be equivalent to a
2158 single U+1E9E when foldcased.
2159
2160 While the Unicode Standard defines two additional forms of
2161 casefolding, one for Turkic languages and one that never maps one
2162 character into multiple characters, these are not provided by the
2163 Perl core. However, the CPAN module "Unicode::Casing" may be used
2164 to provide an implementation.
2165
2166 "fc" is available only if the "fc" feature is enabled or if it is
2167 prefixed with "CORE::". The "fc" feature is enabled automatically
2168 with a "use v5.16" (or higher) declaration in the current scope.
2169
2170 fcntl FILEHANDLE,FUNCTION,SCALAR
2171 Implements the fcntl(2) function. You'll probably have to say
2172
2173 use Fcntl;
2174
2175 first to get the correct constant definitions. Argument processing
2176 and value returned work just like "ioctl" below. For example:
2177
2178 use Fcntl;
2179 my $flags = fcntl($filehandle, F_GETFL, 0)
2180 or die "Can't fcntl F_GETFL: $!";
2181
2182 You don't have to check for "defined" on the return from "fcntl".
2183 Like "ioctl", it maps a 0 return from the system call into "0 but
2184 true" in Perl. This string is true in boolean context and 0 in
2185 numeric context. It is also exempt from the normal "Argument "..."
2186 isn't numeric" warnings on improper numeric conversions.
2187
2188 Note that "fcntl" raises an exception if used on a machine that
2189 doesn't implement fcntl(2). See the Fcntl module or your fcntl(2)
2190 manpage to learn what functions are available on your system.
2191
2192 Here's an example of setting a filehandle named $REMOTE to be non-
2193 blocking at the system level. You'll have to negotiate $| on your
2194 own, though.
2195
2196 use Fcntl qw(F_GETFL F_SETFL O_NONBLOCK);
2197
2198 my $flags = fcntl($REMOTE, F_GETFL, 0)
2199 or die "Can't get flags for the socket: $!\n";
2200
2201 fcntl($REMOTE, F_SETFL, $flags | O_NONBLOCK)
2202 or die "Can't set flags for the socket: $!\n";
2203
2204 Portability issues: "fcntl" in perlport.
2205
2206 __FILE__
2207 A special token that returns the name of the file in which it
2208 occurs. It can be altered by the mechanism described at "Plain Old
2209 Comments (Not!)" in perlsyn.
2210
2211 field VARNAME
2212 Declares a new field variable within the current class. Methods
2213 and "ADJUST" blocks of the class will have access to this variable
2214 as if it was a lexical in scope at that point.
2215
2216 fileno FILEHANDLE
2217 fileno DIRHANDLE
2218 Returns the file descriptor for a filehandle or directory handle,
2219 or undefined if the filehandle is not open. If there is no real
2220 file descriptor at the OS level, as can happen with filehandles
2221 connected to memory objects via "open" with a reference for the
2222 third argument, -1 is returned.
2223
2224 This is mainly useful for constructing bitmaps for "select" and
2225 low-level POSIX tty-handling operations. If FILEHANDLE is an
2226 expression, the value is taken as an indirect filehandle, generally
2227 its name.
2228
2229 You can use this to find out whether two handles refer to the same
2230 underlying descriptor:
2231
2232 if (fileno($this) != -1 && fileno($this) == fileno($that)) {
2233 print "\$this and \$that are dups\n";
2234 } elsif (fileno($this) != -1 && fileno($that) != -1) {
2235 print "\$this and \$that have different " .
2236 "underlying file descriptors\n";
2237 } else {
2238 print "At least one of \$this and \$that does " .
2239 "not have a real file descriptor\n";
2240 }
2241
2242 The behavior of "fileno" on a directory handle depends on the
2243 operating system. On a system with dirfd(3) or similar, "fileno"
2244 on a directory handle returns the underlying file descriptor
2245 associated with the handle; on systems with no such support, it
2246 returns the undefined value, and sets $! (errno).
2247
2248 flock FILEHANDLE,OPERATION
2249 Calls flock(2), or an emulation of it, on FILEHANDLE. Returns true
2250 for success, false on failure. Produces a fatal error if used on a
2251 machine that doesn't implement flock(2), fcntl(2) locking, or
2252 lockf(3). "flock" is Perl's portable file-locking interface,
2253 although it locks entire files only, not records.
2254
2255 Two potentially non-obvious but traditional "flock" semantics are
2256 that it waits indefinitely until the lock is granted, and that its
2257 locks are merely advisory. Such discretionary locks are more
2258 flexible, but offer fewer guarantees. This means that programs
2259 that do not also use "flock" may modify files locked with "flock".
2260 See perlport, your port's specific documentation, and your system-
2261 specific local manpages for details. It's best to assume
2262 traditional behavior if you're writing portable programs. (But if
2263 you're not, you should as always feel perfectly free to write for
2264 your own system's idiosyncrasies (sometimes called "features").
2265 Slavish adherence to portability concerns shouldn't get in the way
2266 of your getting your job done.)
2267
2268 OPERATION is one of LOCK_SH, LOCK_EX, or LOCK_UN, possibly combined
2269 with LOCK_NB. These constants are traditionally valued 1, 2, 8 and
2270 4, but you can use the symbolic names if you import them from the
2271 Fcntl module, either individually, or as a group using the ":flock"
2272 tag. LOCK_SH requests a shared lock, LOCK_EX requests an exclusive
2273 lock, and LOCK_UN releases a previously requested lock. If LOCK_NB
2274 is bitwise-or'ed with LOCK_SH or LOCK_EX, then "flock" returns
2275 immediately rather than blocking waiting for the lock; check the
2276 return status to see if you got it.
2277
2278 To avoid the possibility of miscoordination, Perl now flushes
2279 FILEHANDLE before locking or unlocking it.
2280
2281 Note that the emulation built with lockf(3) doesn't provide shared
2282 locks, and it requires that FILEHANDLE be open with write intent.
2283 These are the semantics that lockf(3) implements. Most if not all
2284 systems implement lockf(3) in terms of fcntl(2) locking, though, so
2285 the differing semantics shouldn't bite too many people.
2286
2287 Note that the fcntl(2) emulation of flock(3) requires that
2288 FILEHANDLE be open with read intent to use LOCK_SH and requires
2289 that it be open with write intent to use LOCK_EX.
2290
2291 Note also that some versions of "flock" cannot lock things over the
2292 network; you would need to use the more system-specific "fcntl" for
2293 that. If you like you can force Perl to ignore your system's
2294 flock(2) function, and so provide its own fcntl(2)-based emulation,
2295 by passing the switch "-Ud_flock" to the Configure program when you
2296 configure and build a new Perl.
2297
2298 Here's a mailbox appender for BSD systems.
2299
2300 # import LOCK_* and SEEK_END constants
2301 use Fcntl qw(:flock SEEK_END);
2302
2303 sub lock {
2304 my ($fh) = @_;
2305 flock($fh, LOCK_EX) or die "Cannot lock mailbox - $!\n";
2306 # and, in case we're running on a very old UNIX
2307 # variant without the modern O_APPEND semantics...
2308 seek($fh, 0, SEEK_END) or die "Cannot seek - $!\n";
2309 }
2310
2311 sub unlock {
2312 my ($fh) = @_;
2313 flock($fh, LOCK_UN) or die "Cannot unlock mailbox - $!\n";
2314 }
2315
2316 open(my $mbox, ">>", "/usr/spool/mail/$ENV{'USER'}")
2317 or die "Can't open mailbox: $!";
2318
2319 lock($mbox);
2320 print $mbox $msg,"\n\n";
2321 unlock($mbox);
2322
2323 On systems that support a real flock(2), locks are inherited across
2324 "fork" calls, whereas those that must resort to the more capricious
2325 fcntl(2) function lose their locks, making it seriously harder to
2326 write servers.
2327
2328 See also DB_File for other "flock" examples.
2329
2330 Portability issues: "flock" in perlport.
2331
2332 fork
2333 Does a fork(2) system call to create a new process running the same
2334 program at the same point. It returns the child pid to the parent
2335 process, 0 to the child process, or "undef" if the fork is
2336 unsuccessful. File descriptors (and sometimes locks on those
2337 descriptors) are shared, while everything else is copied. On most
2338 systems supporting fork(2), great care has gone into making it
2339 extremely efficient (for example, using copy-on-write technology on
2340 data pages), making it the dominant paradigm for multitasking over
2341 the last few decades.
2342
2343 Perl attempts to flush all files opened for output before forking
2344 the child process, but this may not be supported on some platforms
2345 (see perlport). To be safe, you may need to set $| ($AUTOFLUSH in
2346 English) or call the "autoflush" method of "IO::Handle" on any open
2347 handles to avoid duplicate output.
2348
2349 If you "fork" without ever waiting on your children, you will
2350 accumulate zombies. On some systems, you can avoid this by setting
2351 $SIG{CHLD} to "IGNORE". See also perlipc for more examples of
2352 forking and reaping moribund children.
2353
2354 Note that if your forked child inherits system file descriptors
2355 like STDIN and STDOUT that are actually connected by a pipe or
2356 socket, even if you exit, then the remote server (such as, say, a
2357 CGI script or a backgrounded job launched from a remote shell)
2358 won't think you're done. You should reopen those to /dev/null if
2359 it's any issue.
2360
2361 On some platforms such as Windows, where the fork(2) system call is
2362 not available, Perl can be built to emulate "fork" in the Perl
2363 interpreter. The emulation is designed, at the level of the Perl
2364 program, to be as compatible as possible with the "Unix" fork(2).
2365 However it has limitations that have to be considered in code
2366 intended to be portable. See perlfork for more details.
2367
2368 Portability issues: "fork" in perlport.
2369
2370 format
2371 Declare a picture format for use by the "write" function. For
2372 example:
2373
2374 format Something =
2375 Test: @<<<<<<<< @||||| @>>>>>
2376 $str, $%, '$' . int($num)
2377 .
2378
2379 $str = "widget";
2380 $num = $cost/$quantity;
2381 $~ = 'Something';
2382 write;
2383
2384 See perlform for many details and examples.
2385
2386 formline PICTURE,LIST
2387 This is an internal function used by "format"s, though you may call
2388 it, too. It formats (see perlform) a list of values according to
2389 the contents of PICTURE, placing the output into the format output
2390 accumulator, $^A (or $ACCUMULATOR in English). Eventually, when a
2391 "write" is done, the contents of $^A are written to some
2392 filehandle. You could also read $^A and then set $^A back to "".
2393 Note that a format typically does one "formline" per line of form,
2394 but the "formline" function itself doesn't care how many newlines
2395 are embedded in the PICTURE. This means that the "~" and "~~"
2396 tokens treat the entire PICTURE as a single line. You may
2397 therefore need to use multiple formlines to implement a single
2398 record format, just like the "format" compiler.
2399
2400 Be careful if you put double quotes around the picture, because an
2401 "@" character may be taken to mean the beginning of an array name.
2402 "formline" always returns true. See perlform for other examples.
2403
2404 If you are trying to use this instead of "write" to capture the
2405 output, you may find it easier to open a filehandle to a scalar
2406 ("open my $fh, ">", \$output") and write to that instead.
2407
2408 getc FILEHANDLE
2409 getc
2410 Returns the next character from the input file attached to
2411 FILEHANDLE, or the undefined value at end of file or if there was
2412 an error (in the latter case $! is set). If FILEHANDLE is omitted,
2413 reads from STDIN. This is not particularly efficient. However, it
2414 cannot be used by itself to fetch single characters without waiting
2415 for the user to hit enter. For that, try something more like:
2416
2417 if ($BSD_STYLE) {
2418 system "stty cbreak </dev/tty >/dev/tty 2>&1";
2419 }
2420 else {
2421 system "stty", '-icanon', 'eol', "\001";
2422 }
2423
2424 my $key = getc(STDIN);
2425
2426 if ($BSD_STYLE) {
2427 system "stty -cbreak </dev/tty >/dev/tty 2>&1";
2428 }
2429 else {
2430 system 'stty', 'icanon', 'eol', '^@'; # ASCII NUL
2431 }
2432 print "\n";
2433
2434 Determination of whether $BSD_STYLE should be set is left as an
2435 exercise to the reader.
2436
2437 The "POSIX::getattr" function can do this more portably on systems
2438 purporting POSIX compliance. See also the "Term::ReadKey" module
2439 on CPAN.
2440
2441 getlogin
2442 This implements the C library function of the same name, which on
2443 most systems returns the current login from /etc/utmp, if any. If
2444 it returns the empty string, use "getpwuid".
2445
2446 my $login = getlogin || getpwuid($<) || "Kilroy";
2447
2448 Do not consider "getlogin" for authentication: it is not as secure
2449 as "getpwuid".
2450
2451 Portability issues: "getlogin" in perlport.
2452
2453 getpeername SOCKET
2454 Returns the packed sockaddr address of the other end of the SOCKET
2455 connection.
2456
2457 use Socket;
2458 my $hersockaddr = getpeername($sock);
2459 my ($port, $iaddr) = sockaddr_in($hersockaddr);
2460 my $herhostname = gethostbyaddr($iaddr, AF_INET);
2461 my $herstraddr = inet_ntoa($iaddr);
2462
2463 getpgrp PID
2464 Returns the current process group for the specified PID. Use a PID
2465 of 0 to get the current process group for the current process.
2466 Will raise an exception if used on a machine that doesn't implement
2467 getpgrp(2). If PID is omitted, returns the process group of the
2468 current process. Note that the POSIX version of "getpgrp" does not
2469 accept a PID argument, so only "PID==0" is truly portable.
2470
2471 Portability issues: "getpgrp" in perlport.
2472
2473 getppid
2474 Returns the process id of the parent process.
2475
2476 Note for Linux users: Between v5.8.1 and v5.16.0 Perl would work
2477 around non-POSIX thread semantics the minority of Linux systems
2478 (and Debian GNU/kFreeBSD systems) that used LinuxThreads, this
2479 emulation has since been removed. See the documentation for $$ for
2480 details.
2481
2482 Portability issues: "getppid" in perlport.
2483
2484 getpriority WHICH,WHO
2485 Returns the current priority for a process, a process group, or a
2486 user. (See getpriority(2).) Will raise a fatal exception if used
2487 on a machine that doesn't implement getpriority(2).
2488
2489 "WHICH" can be any of "PRIO_PROCESS", "PRIO_PGRP" or "PRIO_USER"
2490 imported from "RESOURCE CONSTANTS" in POSIX.
2491
2492 Portability issues: "getpriority" in perlport.
2493
2494 getpwnam NAME
2495 getgrnam NAME
2496 gethostbyname NAME
2497 getnetbyname NAME
2498 getprotobyname NAME
2499 getpwuid UID
2500 getgrgid GID
2501 getservbyname NAME,PROTO
2502 gethostbyaddr ADDR,ADDRTYPE
2503 getnetbyaddr ADDR,ADDRTYPE
2504 getprotobynumber NUMBER
2505 getservbyport PORT,PROTO
2506 getpwent
2507 getgrent
2508 gethostent
2509 getnetent
2510 getprotoent
2511 getservent
2512 setpwent
2513 setgrent
2514 sethostent STAYOPEN
2515 setnetent STAYOPEN
2516 setprotoent STAYOPEN
2517 setservent STAYOPEN
2518 endpwent
2519 endgrent
2520 endhostent
2521 endnetent
2522 endprotoent
2523 endservent
2524 These routines are the same as their counterparts in the system C
2525 library. In list context, the return values from the various get
2526 routines are as follows:
2527
2528 # 0 1 2 3 4
2529 my ( $name, $passwd, $gid, $members ) = getgr*
2530 my ( $name, $aliases, $addrtype, $net ) = getnet*
2531 my ( $name, $aliases, $port, $proto ) = getserv*
2532 my ( $name, $aliases, $proto ) = getproto*
2533 my ( $name, $aliases, $addrtype, $length, @addrs ) = gethost*
2534 my ( $name, $passwd, $uid, $gid, $quota,
2535 $comment, $gcos, $dir, $shell, $expire ) = getpw*
2536 # 5 6 7 8 9
2537
2538 (If the entry doesn't exist, the return value is a single
2539 meaningless true value.)
2540
2541 The exact meaning of the $gcos field varies but it usually contains
2542 the real name of the user (as opposed to the login name) and other
2543 information pertaining to the user. Beware, however, that in many
2544 system users are able to change this information and therefore it
2545 cannot be trusted and therefore the $gcos is tainted (see perlsec).
2546 The $passwd and $shell, user's encrypted password and login shell,
2547 are also tainted, for the same reason.
2548
2549 In scalar context, you get the name, unless the function was a
2550 lookup by name, in which case you get the other thing, whatever it
2551 is. (If the entry doesn't exist you get the undefined value.) For
2552 example:
2553
2554 my $uid = getpwnam($name);
2555 my $name = getpwuid($num);
2556 my $name = getpwent();
2557 my $gid = getgrnam($name);
2558 my $name = getgrgid($num);
2559 my $name = getgrent();
2560 # etc.
2561
2562 In getpw*() the fields $quota, $comment, and $expire are special in
2563 that they are unsupported on many systems. If the $quota is
2564 unsupported, it is an empty scalar. If it is supported, it usually
2565 encodes the disk quota. If the $comment field is unsupported, it
2566 is an empty scalar. If it is supported it usually encodes some
2567 administrative comment about the user. In some systems the $quota
2568 field may be $change or $age, fields that have to do with password
2569 aging. In some systems the $comment field may be $class. The
2570 $expire field, if present, encodes the expiration period of the
2571 account or the password. For the availability and the exact
2572 meaning of these fields in your system, please consult getpwnam(3)
2573 and your system's pwd.h file. You can also find out from within
2574 Perl what your $quota and $comment fields mean and whether you have
2575 the $expire field by using the "Config" module and the values
2576 "d_pwquota", "d_pwage", "d_pwchange", "d_pwcomment", and
2577 "d_pwexpire". Shadow password files are supported only if your
2578 vendor has implemented them in the intuitive fashion that calling
2579 the regular C library routines gets the shadow versions if you're
2580 running under privilege or if there exists the shadow(3) functions
2581 as found in System V (this includes Solaris and Linux). Those
2582 systems that implement a proprietary shadow password facility are
2583 unlikely to be supported.
2584
2585 The $members value returned by getgr*() is a space-separated list
2586 of the login names of the members of the group.
2587
2588 For the gethost*() functions, if the "h_errno" variable is
2589 supported in C, it will be returned to you via $? if the function
2590 call fails. The @addrs value returned by a successful call is a
2591 list of raw addresses returned by the corresponding library call.
2592 In the Internet domain, each address is four bytes long; you can
2593 unpack it by saying something like:
2594
2595 my ($w,$x,$y,$z) = unpack('W4',$addr[0]);
2596
2597 The Socket library makes this slightly easier:
2598
2599 use Socket;
2600 my $iaddr = inet_aton("127.1"); # or whatever address
2601 my $name = gethostbyaddr($iaddr, AF_INET);
2602
2603 # or going the other way
2604 my $straddr = inet_ntoa($iaddr);
2605
2606 In the opposite way, to resolve a hostname to the IP address you
2607 can write this:
2608
2609 use Socket;
2610 my $packed_ip = gethostbyname("www.perl.org");
2611 my $ip_address;
2612 if (defined $packed_ip) {
2613 $ip_address = inet_ntoa($packed_ip);
2614 }
2615
2616 Make sure "gethostbyname" is called in SCALAR context and that its
2617 return value is checked for definedness.
2618
2619 The "getprotobynumber" function, even though it only takes one
2620 argument, has the precedence of a list operator, so beware:
2621
2622 getprotobynumber $number eq 'icmp' # WRONG
2623 getprotobynumber($number eq 'icmp') # actually means this
2624 getprotobynumber($number) eq 'icmp' # better this way
2625
2626 If you get tired of remembering which element of the return list
2627 contains which return value, by-name interfaces are provided in
2628 standard modules: "File::stat", "Net::hostent", "Net::netent",
2629 "Net::protoent", "Net::servent", "Time::gmtime", "Time::localtime",
2630 and "User::grent". These override the normal built-ins, supplying
2631 versions that return objects with the appropriate names for each
2632 field. For example:
2633
2634 use File::stat;
2635 use User::pwent;
2636 my $is_his = (stat($filename)->uid == pwent($whoever)->uid);
2637
2638 Even though it looks as though they're the same method calls (uid),
2639 they aren't, because a "File::stat" object is different from a
2640 "User::pwent" object.
2641
2642 Many of these functions are not safe in a multi-threaded
2643 environment where more than one thread can be using them. In
2644 particular, functions like getpwent() iterate per-process and not
2645 per-thread, so if two threads are simultaneously iterating, neither
2646 will get all the records.
2647
2648 Some systems have thread-safe versions of some of the functions,
2649 such as getpwnam_r() instead of getpwnam(). There, Perl
2650 automatically and invisibly substitutes the thread-safe version,
2651 without notice. This means that code that safely runs on some
2652 systems can fail on others that lack the thread-safe versions.
2653
2654 Portability issues: "getpwnam" in perlport to "endservent" in
2655 perlport.
2656
2657 getsockname SOCKET
2658 Returns the packed sockaddr address of this end of the SOCKET
2659 connection, in case you don't know the address because you have
2660 several different IPs that the connection might have come in on.
2661
2662 use Socket;
2663 my $mysockaddr = getsockname($sock);
2664 my ($port, $myaddr) = sockaddr_in($mysockaddr);
2665 printf "Connect to %s [%s]\n",
2666 scalar gethostbyaddr($myaddr, AF_INET),
2667 inet_ntoa($myaddr);
2668
2669 getsockopt SOCKET,LEVEL,OPTNAME
2670 Queries the option named OPTNAME associated with SOCKET at a given
2671 LEVEL. Options may exist at multiple protocol levels depending on
2672 the socket type, but at least the uppermost socket level SOL_SOCKET
2673 (defined in the "Socket" module) will exist. To query options at
2674 another level the protocol number of the appropriate protocol
2675 controlling the option should be supplied. For example, to
2676 indicate that an option is to be interpreted by the TCP protocol,
2677 LEVEL should be set to the protocol number of TCP, which you can
2678 get using "getprotobyname".
2679
2680 The function returns a packed string representing the requested
2681 socket option, or "undef" on error, with the reason for the error
2682 placed in $!. Just what is in the packed string depends on LEVEL
2683 and OPTNAME; consult getsockopt(2) for details. A common case is
2684 that the option is an integer, in which case the result is a packed
2685 integer, which you can decode using "unpack" with the "i" (or "I")
2686 format.
2687
2688 Here's an example to test whether Nagle's algorithm is enabled on a
2689 socket:
2690
2691 use Socket qw(:all);
2692
2693 defined(my $tcp = getprotobyname("tcp"))
2694 or die "Could not determine the protocol number for tcp";
2695 # my $tcp = IPPROTO_TCP; # Alternative
2696 my $packed = getsockopt($socket, $tcp, TCP_NODELAY)
2697 or die "getsockopt TCP_NODELAY: $!";
2698 my $nodelay = unpack("I", $packed);
2699 print "Nagle's algorithm is turned ",
2700 $nodelay ? "off\n" : "on\n";
2701
2702 Portability issues: "getsockopt" in perlport.
2703
2704 glob EXPR
2705 glob
2706 In list context, returns a (possibly empty) list of filename
2707 expansions on the value of EXPR such as the Unix shell Bash would
2708 do. In scalar context, glob iterates through such filename
2709 expansions, returning "undef" when the list is exhausted. If EXPR
2710 is omitted, $_ is used.
2711
2712 # List context
2713 my @txt_files = glob("*.txt");
2714 my @perl_files = glob("*.pl *.pm");
2715
2716 # Scalar context
2717 while (my $file = glob("*.mp3")) {
2718 # Do stuff
2719 }
2720
2721 Glob also supports an alternate syntax using "<" ">" as delimiters.
2722 While this syntax is supported, it is recommended that you use
2723 "glob" instead as it is more readable and searchable.
2724
2725 my @txt_files = <"*.txt">;
2726
2727 If you need case insensitive file globbing that can be achieved
2728 using the ":nocase" parameter of the "bsd_glob" module.
2729
2730 use File::Glob qw(:globally :nocase);
2731
2732 my @txt = glob("readme*"); # README readme.txt Readme.md
2733
2734 Note that "glob" splits its arguments on whitespace and treats each
2735 segment as separate pattern. As such, "glob("*.c *.h")" matches
2736 all files with a .c or .h extension. The expression "glob(".* *")"
2737 matches all files in the current working directory. If you want to
2738 glob filenames that might contain whitespace, you'll have to use
2739 extra quotes around the spacey filename to protect it. For
2740 example, to glob filenames that have an "e" followed by a space
2741 followed by an "f", use one of:
2742
2743 my @spacies = <"*e f*">;
2744 my @spacies = glob('"*e f*"');
2745 my @spacies = glob(q("*e f*"));
2746
2747 If you had to get a variable through, you could do this:
2748
2749 my @spacies = glob("'*${var}e f*'");
2750 my @spacies = glob(qq("*${var}e f*"));
2751
2752 If non-empty braces are the only wildcard characters used in the
2753 "glob", no filenames are matched, but potentially many strings are
2754 returned. For example, this produces nine strings, one for each
2755 pairing of fruits and colors:
2756
2757 my @many = glob("{apple,tomato,cherry}={green,yellow,red}");
2758
2759 This operator is implemented using the standard "File::Glob"
2760 extension. See "bsd_glob" for details, including "bsd_glob", which
2761 does not treat whitespace as a pattern separator.
2762
2763 If a "glob" expression is used as the condition of a "while" or
2764 "for" loop, then it will be implicitly assigned to $_. If either a
2765 "glob" expression or an explicit assignment of a "glob" expression
2766 to a scalar is used as a "while"/"for" condition, then the
2767 condition actually tests for definedness of the expression's value,
2768 not for its regular truth value.
2769
2770 Internal implemenation details:
2771
2772 This is the internal function implementing the "<*.c>" operator,
2773 but you can use it directly. The "<*.c>" operator is discussed in
2774 more detail in "I/O Operators" in perlop.
2775
2776 Portability issues: "glob" in perlport.
2777
2778 gmtime EXPR
2779 gmtime
2780 Works just like "localtime", but the returned values are localized
2781 for the standard Greenwich time zone.
2782
2783 Note: When called in list context, $isdst, the last value returned
2784 by gmtime, is always 0. There is no Daylight Saving Time in GMT.
2785
2786 Portability issues: "gmtime" in perlport.
2787
2788 goto LABEL
2789 goto EXPR
2790 goto &NAME
2791 The "goto LABEL" form finds the statement labeled with LABEL and
2792 resumes execution there. It can't be used to get out of a block or
2793 subroutine given to "sort". It can be used to go almost anywhere
2794 else within the dynamic scope, including out of subroutines, but
2795 it's usually better to use some other construct such as "last" or
2796 "die". The author of Perl has never felt the need to use this form
2797 of "goto" (in Perl, that is; C is another matter). (The difference
2798 is that C does not offer named loops combined with loop control.
2799 Perl does, and this replaces most structured uses of "goto" in
2800 other languages.)
2801
2802 The "goto EXPR" form expects to evaluate "EXPR" to a code reference
2803 or a label name. If it evaluates to a code reference, it will be
2804 handled like "goto &NAME", below. This is especially useful for
2805 implementing tail recursion via "goto __SUB__".
2806
2807 If the expression evaluates to a label name, its scope will be
2808 resolved dynamically. This allows for computed "goto"s per
2809 FORTRAN, but isn't necessarily recommended if you're optimizing for
2810 maintainability:
2811
2812 goto ("FOO", "BAR", "GLARCH")[$i];
2813
2814 As shown in this example, "goto EXPR" is exempt from the "looks
2815 like a function" rule. A pair of parentheses following it does not
2816 (necessarily) delimit its argument. "goto("NE")."XT"" is
2817 equivalent to "goto NEXT". Also, unlike most named operators, this
2818 has the same precedence as assignment.
2819
2820 Use of "goto LABEL" or "goto EXPR" to jump into a construct is
2821 deprecated and will issue a warning. Even then, it may not be used
2822 to go into any construct that requires initialization, such as a
2823 subroutine, a "foreach" loop, or a "given" block. In general, it
2824 may not be used to jump into the parameter of a binary or list
2825 operator, but it may be used to jump into the first parameter of a
2826 binary operator. (The "=" assignment operator's "first" operand is
2827 its right-hand operand.) It also can't be used to go into a
2828 construct that is optimized away.
2829
2830 The "goto &NAME" form is quite different from the other forms of
2831 "goto". In fact, it isn't a goto in the normal sense at all, and
2832 doesn't have the stigma associated with other gotos. Instead, it
2833 exits the current subroutine (losing any changes set by "local")
2834 and immediately calls in its place the named subroutine using the
2835 current value of @_. This is used by "AUTOLOAD" subroutines that
2836 wish to load another subroutine and then pretend that the other
2837 subroutine had been called in the first place (except that any
2838 modifications to @_ in the current subroutine are propagated to the
2839 other subroutine.) After the "goto", not even "caller" will be able
2840 to tell that this routine was called first.
2841
2842 NAME needn't be the name of a subroutine; it can be a scalar
2843 variable containing a code reference or a block that evaluates to a
2844 code reference.
2845
2846 grep BLOCK LIST
2847 grep EXPR,LIST
2848 This is similar in spirit to, but not the same as, grep(1) and its
2849 relatives. In particular, it is not limited to using regular
2850 expressions.
2851
2852 Evaluates the BLOCK or EXPR for each element of LIST (locally
2853 setting $_ to each element) and returns the list value consisting
2854 of those elements for which the expression evaluated to true. In
2855 scalar context, returns the number of times the expression was
2856 true.
2857
2858 my @foo = grep(!/^#/, @bar); # weed out comments
2859
2860 or equivalently,
2861
2862 my @foo = grep {!/^#/} @bar; # weed out comments
2863
2864 Note that $_ is an alias to the list value, so it can be used to
2865 modify the elements of the LIST. While this is useful and
2866 supported, it can cause bizarre results if the elements of LIST are
2867 not variables. Similarly, grep returns aliases into the original
2868 list, much as a for loop's index variable aliases the list
2869 elements. That is, modifying an element of a list returned by grep
2870 (for example, in a "foreach", "map" or another "grep") actually
2871 modifies the element in the original list. This is usually
2872 something to be avoided when writing clear code.
2873
2874 See also "map" for a list composed of the results of the BLOCK or
2875 EXPR.
2876
2877 hex EXPR
2878 hex Interprets EXPR as a hex string and returns the corresponding
2879 numeric value. If EXPR is omitted, uses $_.
2880
2881 print hex '0xAf'; # prints '175'
2882 print hex 'aF'; # same
2883 $valid_input =~ /\A(?:0?[xX])?(?:_?[0-9a-fA-F])*\z/
2884
2885 A hex string consists of hex digits and an optional "0x" or "x"
2886 prefix. Each hex digit may be preceded by a single underscore,
2887 which will be ignored. Any other character triggers a warning and
2888 causes the rest of the string to be ignored (even leading
2889 whitespace, unlike "oct"). Only integers can be represented, and
2890 integer overflow triggers a warning.
2891
2892 To convert strings that might start with any of 0, "0x", or "0b",
2893 see "oct". To present something as hex, look into "printf",
2894 "sprintf", and "unpack".
2895
2896 import LIST
2897 There is no builtin "import" function. It is just an ordinary
2898 method (subroutine) defined (or inherited) by modules that wish to
2899 export names to another module. The "use" function calls the
2900 "import" method for the package used. See also "use", perlmod, and
2901 Exporter.
2902
2903 index STR,SUBSTR,POSITION
2904 index STR,SUBSTR
2905 The index function searches for one string within another, but
2906 without the wildcard-like behavior of a full regular-expression
2907 pattern match. It returns the position of the first occurrence of
2908 SUBSTR in STR at or after POSITION. If POSITION is omitted, starts
2909 searching from the beginning of the string. POSITION before the
2910 beginning of the string or after its end is treated as if it were
2911 the beginning or the end, respectively. POSITION and the return
2912 value are based at zero. If the substring is not found, "index"
2913 returns -1.
2914
2915 Find characters or strings:
2916
2917 index("Perl is great", "P"); # Returns 0
2918 index("Perl is great", "g"); # Returns 8
2919 index("Perl is great", "great"); # Also returns 8
2920
2921 Attempting to find something not there:
2922
2923 index("Perl is great", "Z"); # Returns -1 (not found)
2924
2925 Using an offset to find the second occurrence:
2926
2927 index("Perl is great", "e", 5); # Returns 10
2928
2929 int EXPR
2930 int Returns the integer portion of EXPR. If EXPR is omitted, uses $_.
2931 You should not use this function for rounding: one because it
2932 truncates towards 0, and two because machine representations of
2933 floating-point numbers can sometimes produce counterintuitive
2934 results. For example, int(-6.725/0.025) produces -268 rather than
2935 the correct -269; that's because it's really more like
2936 -268.99999999999994315658 instead. Usually, the "sprintf",
2937 "printf", or the "POSIX::floor" and "POSIX::ceil" functions will
2938 serve you better than will "int".
2939
2940 ioctl FILEHANDLE,FUNCTION,SCALAR
2941 Implements the ioctl(2) function. You'll probably first have to
2942 say
2943
2944 require "sys/ioctl.ph"; # probably in
2945 # $Config{archlib}/sys/ioctl.ph
2946
2947 to get the correct function definitions. If sys/ioctl.ph doesn't
2948 exist or doesn't have the correct definitions you'll have to roll
2949 your own, based on your C header files such as <sys/ioctl.h>.
2950 (There is a Perl script called h2ph that comes with the Perl kit
2951 that may help you in this, but it's nontrivial.) SCALAR will be
2952 read and/or written depending on the FUNCTION; a C pointer to the
2953 string value of SCALAR will be passed as the third argument of the
2954 actual "ioctl" call. (If SCALAR has no string value but does have
2955 a numeric value, that value will be passed rather than a pointer to
2956 the string value. To guarantee this to be true, add a 0 to the
2957 scalar before using it.) The "pack" and "unpack" functions may be
2958 needed to manipulate the values of structures used by "ioctl".
2959
2960 The return value of "ioctl" (and "fcntl") is as follows:
2961
2962 if OS returns: then Perl returns:
2963 -1 undefined value
2964 0 string "0 but true"
2965 anything else that number
2966
2967 Thus Perl returns true on success and false on failure, yet you can
2968 still easily determine the actual value returned by the operating
2969 system:
2970
2971 my $retval = ioctl(...) || -1;
2972 printf "System returned %d\n", $retval;
2973
2974 The special string "0 but true" is exempt from "Argument "..."
2975 isn't numeric" warnings on improper numeric conversions.
2976
2977 Portability issues: "ioctl" in perlport.
2978
2979 join EXPR,LIST
2980 Joins the separate strings of LIST into a single string with fields
2981 separated by the value of EXPR, and returns that new string.
2982 Example:
2983
2984 my $rec = join(':', $login,$passwd,$uid,$gid,$gcos,$home,$shell);
2985
2986 Beware that unlike "split", "join" doesn't take a pattern as its
2987 first argument. Compare "split".
2988
2989 keys HASH
2990 keys ARRAY
2991 Called in list context, returns a list consisting of all the keys
2992 of the named hash, or in Perl 5.12 or later only, the indices of an
2993 array. Perl releases prior to 5.12 will produce a syntax error if
2994 you try to use an array argument. In scalar context, returns the
2995 number of keys or indices.
2996
2997 Hash entries are returned in an apparently random order. The
2998 actual random order is specific to a given hash; the exact same
2999 series of operations on two hashes may result in a different order
3000 for each hash. Any insertion into the hash may change the order,
3001 as will any deletion, with the exception that the most recent key
3002 returned by "each" or "keys" may be deleted without changing the
3003 order. So long as a given hash is unmodified you may rely on
3004 "keys", "values" and "each" to repeatedly return the same order as
3005 each other. See "Algorithmic Complexity Attacks" in perlsec for
3006 details on why hash order is randomized. Aside from the guarantees
3007 provided here the exact details of Perl's hash algorithm and the
3008 hash traversal order are subject to change in any release of Perl.
3009 Tied hashes may behave differently to Perl's hashes with respect to
3010 changes in order on insertion and deletion of items.
3011
3012 As a side effect, calling "keys" resets the internal iterator of
3013 the HASH or ARRAY (see "each") before yielding the keys. In
3014 particular, calling "keys" in void context resets the iterator with
3015 no other overhead.
3016
3017 Here is yet another way to print your environment:
3018
3019 my @keys = keys %ENV;
3020 my @values = values %ENV;
3021 while (@keys) {
3022 print pop(@keys), '=', pop(@values), "\n";
3023 }
3024
3025 or how about sorted by key:
3026
3027 foreach my $key (sort(keys %ENV)) {
3028 print $key, '=', $ENV{$key}, "\n";
3029 }
3030
3031 The returned values are copies of the original keys in the hash, so
3032 modifying them will not affect the original hash. Compare
3033 "values".
3034
3035 To sort a hash by value, you'll need to use a "sort" function.
3036 Here's a descending numeric sort of a hash by its values:
3037
3038 foreach my $key (sort { $hash{$b} <=> $hash{$a} } keys %hash) {
3039 printf "%4d %s\n", $hash{$key}, $key;
3040 }
3041
3042 Used as an lvalue, "keys" allows you to increase the number of hash
3043 buckets allocated for the given hash. This can gain you a measure
3044 of efficiency if you know the hash is going to get big. (This is
3045 similar to pre-extending an array by assigning a larger number to
3046 $#array.) If you say
3047
3048 keys %hash = 200;
3049
3050 then %hash will have at least 200 buckets allocated for it--256 of
3051 them, in fact, since it rounds up to the next power of two. These
3052 buckets will be retained even if you do "%hash = ()", use undef
3053 %hash if you want to free the storage while %hash is still in
3054 scope. You can't shrink the number of buckets allocated for the
3055 hash using "keys" in this way (but you needn't worry about doing
3056 this by accident, as trying has no effect). "keys @array" in an
3057 lvalue context is a syntax error.
3058
3059 Starting with Perl 5.14, an experimental feature allowed "keys" to
3060 take a scalar expression. This experiment has been deemed
3061 unsuccessful, and was removed as of Perl 5.24.
3062
3063 To avoid confusing would-be users of your code who are running
3064 earlier versions of Perl with mysterious syntax errors, put this
3065 sort of thing at the top of your file to signal that your code will
3066 work only on Perls of a recent vintage:
3067
3068 use v5.12; # so keys/values/each work on arrays
3069
3070 See also "each", "values", and "sort".
3071
3072 kill SIGNAL, LIST
3073 kill SIGNAL
3074 Sends a signal to a list of processes. Returns the number of
3075 arguments that were successfully used to signal (which is not
3076 necessarily the same as the number of processes actually killed,
3077 e.g. where a process group is killed).
3078
3079 my $cnt = kill 'HUP', $child1, $child2;
3080 kill 'KILL', @goners;
3081
3082 SIGNAL may be either a signal name (a string) or a signal number.
3083 A signal name may start with a "SIG" prefix, thus "FOO" and
3084 "SIGFOO" refer to the same signal. The string form of SIGNAL is
3085 recommended for portability because the same signal may have
3086 different numbers in different operating systems.
3087
3088 A list of signal names supported by the current platform can be
3089 found in $Config{sig_name}, which is provided by the "Config"
3090 module. See Config for more details.
3091
3092 A negative signal name is the same as a negative signal number,
3093 killing process groups instead of processes. For example, "kill
3094 '-KILL', $pgrp" and "kill -9, $pgrp" will send "SIGKILL" to the
3095 entire process group specified. That means you usually want to use
3096 positive not negative signals.
3097
3098 If SIGNAL is either the number 0 or the string "ZERO" (or
3099 "SIGZERO"), no signal is sent to the process, but "kill" checks
3100 whether it's possible to send a signal to it (that means, to be
3101 brief, that the process is owned by the same user, or we are the
3102 super-user). This is useful to check that a child process is still
3103 alive (even if only as a zombie) and hasn't changed its UID. See
3104 perlport for notes on the portability of this construct.
3105
3106 The behavior of kill when a PROCESS number is zero or negative
3107 depends on the operating system. For example, on POSIX-conforming
3108 systems, zero will signal the current process group, -1 will signal
3109 all processes, and any other negative PROCESS number will act as a
3110 negative signal number and kill the entire process group specified.
3111
3112 If both the SIGNAL and the PROCESS are negative, the results are
3113 undefined. A warning may be produced in a future version.
3114
3115 See "Signals" in perlipc for more details.
3116
3117 On some platforms such as Windows where the fork(2) system call is
3118 not available, Perl can be built to emulate "fork" at the
3119 interpreter level. This emulation has limitations related to kill
3120 that have to be considered, for code running on Windows and in code
3121 intended to be portable.
3122
3123 See perlfork for more details.
3124
3125 If there is no LIST of processes, no signal is sent, and the return
3126 value is 0. This form is sometimes used, however, because it
3127 causes tainting checks to be run, if your perl support taint
3128 checks. But see "Laundering and Detecting Tainted Data" in
3129 perlsec.
3130
3131 Portability issues: "kill" in perlport.
3132
3133 last LABEL
3134 last EXPR
3135 last
3136 The "last" command is like the "break" statement in C (as used in
3137 loops); it immediately exits the loop in question. If the LABEL is
3138 omitted, the command refers to the innermost enclosing loop. The
3139 "last EXPR" form, available starting in Perl 5.18.0, allows a label
3140 name to be computed at run time, and is otherwise identical to
3141 "last LABEL". The "continue" block, if any, is not executed:
3142
3143 LINE: while (<STDIN>) {
3144 last LINE if /^$/; # exit when done with header
3145 #...
3146 }
3147
3148 "last" cannot return a value from a block that typically returns a
3149 value, such as "eval {}", "sub {}", or "do {}". It will perform its
3150 flow control behavior, which precludes any return value. It should
3151 not be used to exit a "grep" or "map" operation.
3152
3153 Note that a block by itself is semantically identical to a loop
3154 that executes once. Thus "last" can be used to effect an early
3155 exit out of such a block.
3156
3157 See also "continue" for an illustration of how "last", "next", and
3158 "redo" work.
3159
3160 Unlike most named operators, this has the same precedence as
3161 assignment. It is also exempt from the looks-like-a-function rule,
3162 so "last ("foo")."bar"" will cause "bar" to be part of the argument
3163 to "last".
3164
3165 lc EXPR
3166 lc Returns a lowercased version of EXPR. If EXPR is omitted, uses $_.
3167
3168 my $str = lc("Perl is GREAT"); # "perl is great"
3169
3170 What gets returned depends on several factors:
3171
3172 If "use bytes" is in effect:
3173 The results follow ASCII rules. Only the characters "A-Z"
3174 change, to "a-z" respectively.
3175
3176 Otherwise, if "use locale" for "LC_CTYPE" is in effect:
3177 Respects current "LC_CTYPE" locale for code points < 256; and
3178 uses Unicode rules for the remaining code points (this last can
3179 only happen if the UTF8 flag is also set). See perllocale.
3180
3181 Starting in v5.20, Perl uses full Unicode rules if the locale
3182 is UTF-8. Otherwise, there is a deficiency in this scheme,
3183 which is that case changes that cross the 255/256 boundary are
3184 not well-defined. For example, the lower case of LATIN CAPITAL
3185 LETTER SHARP S (U+1E9E) in Unicode rules is U+00DF (on ASCII
3186 platforms). But under "use locale" (prior to v5.20 or not a
3187 UTF-8 locale), the lower case of U+1E9E is itself, because 0xDF
3188 may not be LATIN SMALL LETTER SHARP S in the current locale,
3189 and Perl has no way of knowing if that character even exists in
3190 the locale, much less what code point it is. Perl returns a
3191 result that is above 255 (almost always the input character
3192 unchanged), for all instances (and there aren't many) where the
3193 255/256 boundary would otherwise be crossed; and starting in
3194 v5.22, it raises a locale warning.
3195
3196 Otherwise, If EXPR has the UTF8 flag set:
3197 Unicode rules are used for the case change.
3198
3199 Otherwise, if "use feature 'unicode_strings'" or "use locale
3200 ':not_characters'" is in effect:
3201 Unicode rules are used for the case change.
3202
3203 Otherwise:
3204 ASCII rules are used for the case change. The lowercase of any
3205 character outside the ASCII range is the character itself.
3206
3207 Note: This is the internal function implementing the "\L" escape in
3208 double-quoted strings.
3209
3210 my $str = "Perl is \LGREAT\E"; # "Perl is great"
3211
3212 lcfirst EXPR
3213 lcfirst
3214 Returns the value of EXPR with the first character lowercased.
3215 This is the internal function implementing the "\l" escape in
3216 double-quoted strings.
3217
3218 If EXPR is omitted, uses $_.
3219
3220 This function behaves the same way under various pragmas, such as
3221 in a locale, as "lc" does.
3222
3223 length EXPR
3224 length
3225 Returns the length in characters of the value of EXPR. If EXPR is
3226 omitted, returns the length of $_. If EXPR is undefined, returns
3227 "undef".
3228
3229 This function cannot be used on an entire array or hash to find out
3230 how many elements these have. For that, use "scalar @array" and
3231 scalar keys %hash, respectively.
3232
3233 Like all Perl character operations, "length" normally deals in
3234 logical characters, not physical bytes. For how many bytes a
3235 string encoded as UTF-8 would take up, use
3236 "length(Encode::encode('UTF-8', EXPR))" (you'll have to "use
3237 Encode" first). See Encode and perlunicode.
3238
3239 __LINE__
3240 A special token that compiles to the current line number. It can
3241 be altered by the mechanism described at "Plain Old Comments
3242 (Not!)" in perlsyn.
3243
3244 link OLDFILE,NEWFILE
3245 Creates a new filename linked to the old filename. Returns true
3246 for success, false otherwise.
3247
3248 Portability issues: "link" in perlport.
3249
3250 listen SOCKET,QUEUESIZE
3251 Does the same thing that the listen(2) system call does. Returns
3252 true if it succeeded, false otherwise. See the example in
3253 "Sockets: Client/Server Communication" in perlipc.
3254
3255 local EXPR
3256 You really probably want to be using "my" instead, because "local"
3257 isn't what most people think of as "local". See "Private Variables
3258 via my()" in perlsub for details.
3259
3260 A local modifies the listed variables to be local to the enclosing
3261 block, file, or eval. If more than one value is listed, the list
3262 must be placed in parentheses. See "Temporary Values via local()"
3263 in perlsub for details, including issues with tied arrays and
3264 hashes.
3265
3266 The "delete local EXPR" construct can also be used to localize the
3267 deletion of array/hash elements to the current block. See
3268 "Localized deletion of elements of composite types" in perlsub.
3269
3270 localtime EXPR
3271 localtime
3272 Converts a time as returned by the time function to a 9-element
3273 list with the time analyzed for the local time zone. Typically
3274 used as follows:
3275
3276 # 0 1 2 3 4 5 6 7 8
3277 my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
3278 localtime(time);
3279
3280 All list elements are numeric and come straight out of the C
3281 `struct tm'. $sec, $min, and $hour are the seconds, minutes, and
3282 hours of the specified time.
3283
3284 $mday is the day of the month and $mon the month in the range
3285 0..11, with 0 indicating January and 11 indicating December. This
3286 makes it easy to get a month name from a list:
3287
3288 my @abbr = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
3289 print "$abbr[$mon] $mday";
3290 # $mon=9, $mday=18 gives "Oct 18"
3291
3292 $year contains the number of years since 1900. To get the full
3293 year write:
3294
3295 $year += 1900;
3296
3297 To get the last two digits of the year (e.g., "01" in 2001) do:
3298
3299 $year = sprintf("%02d", $year % 100);
3300
3301 $wday is the day of the week, with 0 indicating Sunday and 3
3302 indicating Wednesday. $yday is the day of the year, in the range
3303 0..364 (or 0..365 in leap years.)
3304
3305 $isdst is true if the specified time occurs when Daylight Saving
3306 Time is in effect, false otherwise.
3307
3308 If EXPR is omitted, "localtime" uses the current time (as returned
3309 by "time").
3310
3311 In scalar context, "localtime" returns the ctime(3) value:
3312
3313 my $now_string = localtime; # e.g., "Thu Oct 13 04:54:34 1994"
3314
3315 This scalar value is always in English, and is not locale-
3316 dependent. To get similar but locale-dependent date strings, try
3317 for example:
3318
3319 use POSIX qw(strftime);
3320 my $now_string = strftime "%a %b %e %H:%M:%S %Y", localtime;
3321 # or for GMT formatted appropriately for your locale:
3322 my $now_string = strftime "%a %b %e %H:%M:%S %Y", gmtime;
3323
3324 C$now_string> will be formatted according to the current LC_TIME
3325 locale the program or thread is running in. See perllocale for how
3326 to set up and change that locale. Note that %a and %b, the short
3327 forms of the day of the week and the month of the year, may not
3328 necessarily be three characters wide.
3329
3330 The Time::gmtime and Time::localtime modules provide a convenient,
3331 by-name access mechanism to the "gmtime" and "localtime" functions,
3332 respectively.
3333
3334 For a comprehensive date and time representation look at the
3335 DateTime module on CPAN.
3336
3337 For GMT instead of local time use the "gmtime" builtin.
3338
3339 See also the "Time::Local" module (for converting seconds, minutes,
3340 hours, and such back to the integer value returned by "time"), and
3341 the POSIX module's "mktime" function.
3342
3343 Portability issues: "localtime" in perlport.
3344
3345 lock THING
3346 This function places an advisory lock on a shared variable or
3347 referenced object contained in THING until the lock goes out of
3348 scope.
3349
3350 The value returned is the scalar itself, if the argument is a
3351 scalar, or a reference, if the argument is a hash, array or
3352 subroutine.
3353
3354 "lock" is a "weak keyword"; this means that if you've defined a
3355 function by this name (before any calls to it), that function will
3356 be called instead. If you are not under "use threads::shared" this
3357 does nothing. See threads::shared.
3358
3359 log EXPR
3360 log Returns the natural logarithm (base e) of EXPR. If EXPR is
3361 omitted, returns the log of $_. To get the log of another base,
3362 use basic algebra: The base-N log of a number is equal to the
3363 natural log of that number divided by the natural log of N. For
3364 example:
3365
3366 sub log10 {
3367 my $n = shift;
3368 return log($n)/log(10);
3369 }
3370
3371 See also "exp" for the inverse operation.
3372
3373 lstat FILEHANDLE
3374 lstat EXPR
3375 lstat DIRHANDLE
3376 lstat
3377 Does the same thing as the "stat" function (including setting the
3378 special "_" filehandle) but stats a symbolic link instead of the
3379 file the symbolic link points to. If symbolic links are
3380 unimplemented on your system, a normal "stat" is done. For much
3381 more detailed information, please see the documentation for "stat".
3382
3383 If EXPR is omitted, stats $_.
3384
3385 Portability issues: "lstat" in perlport.
3386
3387 m// The match operator. See "Regexp Quote-Like Operators" in perlop.
3388
3389 map BLOCK LIST
3390 map EXPR,LIST
3391 Evaluates the BLOCK or EXPR for each element of LIST (locally
3392 setting $_ to each element) and composes a list of the results of
3393 each such evaluation. Each element of LIST may produce zero, one,
3394 or more elements in the generated list, so the number of elements
3395 in the generated list may differ from that in LIST. In scalar
3396 context, returns the total number of elements so generated. In
3397 list context, returns the generated list.
3398
3399 my @chars = map(chr, @numbers);
3400
3401 translates a list of numbers to the corresponding characters.
3402
3403 my @squares = map { $_ * $_ } @numbers;
3404
3405 translates a list of numbers to their squared values.
3406
3407 my @squares = map { $_ > 5 ? ($_ * $_) : () } @numbers;
3408
3409 shows that number of returned elements can differ from the number
3410 of input elements. To omit an element, return an empty list ().
3411 This could also be achieved by writing
3412
3413 my @squares = map { $_ * $_ } grep { $_ > 5 } @numbers;
3414
3415 which makes the intention more clear.
3416
3417 Map always returns a list, which can be assigned to a hash such
3418 that the elements become key/value pairs. See perldata for more
3419 details.
3420
3421 my %hash = map { get_a_key_for($_) => $_ } @array;
3422
3423 is just a funny way to write
3424
3425 my %hash;
3426 foreach (@array) {
3427 $hash{get_a_key_for($_)} = $_;
3428 }
3429
3430 Note that $_ is an alias to the list value, so it can be used to
3431 modify the elements of the LIST. While this is useful and
3432 supported, it can cause bizarre results if the elements of LIST are
3433 not variables. Using a regular "foreach" loop for this purpose
3434 would be clearer in most cases. See also "grep" for a list
3435 composed of those items of the original list for which the BLOCK or
3436 EXPR evaluates to true.
3437
3438 "{" starts both hash references and blocks, so "map { ..." could be
3439 either the start of map BLOCK LIST or map EXPR, LIST. Because Perl
3440 doesn't look ahead for the closing "}" it has to take a guess at
3441 which it's dealing with based on what it finds just after the "{".
3442 Usually it gets it right, but if it doesn't it won't realize
3443 something is wrong until it gets to the "}" and encounters the
3444 missing (or unexpected) comma. The syntax error will be reported
3445 close to the "}", but you'll need to change something near the "{"
3446 such as using a unary "+" or semicolon to give Perl some help:
3447
3448 my %hash = map { "\L$_" => 1 } @array # perl guesses EXPR. wrong
3449 my %hash = map { +"\L$_" => 1 } @array # perl guesses BLOCK. right
3450 my %hash = map {; "\L$_" => 1 } @array # this also works
3451 my %hash = map { ("\L$_" => 1) } @array # as does this
3452 my %hash = map { lc($_) => 1 } @array # and this.
3453 my %hash = map +( lc($_) => 1 ), @array # this is EXPR and works!
3454
3455 my %hash = map ( lc($_), 1 ), @array # evaluates to (1, @array)
3456
3457 or to force an anon hash constructor use "+{":
3458
3459 my @hashes = map +{ lc($_) => 1 }, @array # EXPR, so needs
3460 # comma at end
3461
3462 to get a list of anonymous hashes each with only one entry apiece.
3463
3464 method NAME BLOCK
3465 method NAME : ATTRS BLOCK
3466 Creates a new named method in the scope of the class that it
3467 appears within. This is only valid inside a "class" declaration.
3468
3469 mkdir FILENAME,MODE
3470 mkdir FILENAME
3471 mkdir
3472 Creates the directory specified by FILENAME, with permissions
3473 specified by MODE (as modified by "umask"). If it succeeds it
3474 returns true; otherwise it returns false and sets $! (errno). MODE
3475 defaults to 0777 if omitted, and FILENAME defaults to $_ if
3476 omitted.
3477
3478 In general, it is better to create directories with a permissive
3479 MODE and let the user modify that with their "umask" than it is to
3480 supply a restrictive MODE and give the user no way to be more
3481 permissive. The exceptions to this rule are when the file or
3482 directory should be kept private (mail files, for instance). The
3483 documentation for "umask" discusses the choice of MODE in more
3484 detail. If bits in MODE other than the permission bits are set,
3485 the result may be implementation defined, per POSIX 1003.1-2008.
3486
3487 Note that according to the POSIX 1003.1-1996 the FILENAME may have
3488 any number of trailing slashes. Some operating and filesystems do
3489 not get this right, so Perl automatically removes all trailing
3490 slashes to keep everyone happy.
3491
3492 To recursively create a directory structure, look at the
3493 "make_path" function of the File::Path module.
3494
3495 msgctl ID,CMD,ARG
3496 Calls the System V IPC function msgctl(2). You'll probably have to
3497 say
3498
3499 use IPC::SysV;
3500
3501 first to get the correct constant definitions. If CMD is
3502 "IPC_STAT", then ARG must be a variable that will hold the returned
3503 "msqid_ds" structure. Returns like "ioctl": the undefined value
3504 for error, "0 but true" for zero, or the actual return value
3505 otherwise. See also "SysV IPC" in perlipc and the documentation
3506 for "IPC::SysV" and "IPC::Semaphore".
3507
3508 Portability issues: "msgctl" in perlport.
3509
3510 msgget KEY,FLAGS
3511 Calls the System V IPC function msgget(2). Returns the message
3512 queue id, or "undef" on error. See also "SysV IPC" in perlipc and
3513 the documentation for "IPC::SysV" and "IPC::Msg".
3514
3515 Portability issues: "msgget" in perlport.
3516
3517 msgrcv ID,VAR,SIZE,TYPE,FLAGS
3518 Calls the System V IPC function msgrcv to receive a message from
3519 message queue ID into variable VAR with a maximum message size of
3520 SIZE. Note that when a message is received, the message type as a
3521 native long integer will be the first thing in VAR, followed by the
3522 actual message. This packing may be opened with "unpack("l! a*")".
3523 Taints the variable. Returns true if successful, false on error.
3524 See also "SysV IPC" in perlipc and the documentation for
3525 "IPC::SysV" and "IPC::Msg".
3526
3527 Portability issues: "msgrcv" in perlport.
3528
3529 msgsnd ID,MSG,FLAGS
3530 Calls the System V IPC function msgsnd to send the message MSG to
3531 the message queue ID. MSG must begin with the native long integer
3532 message type, followed by the message itself. This kind of packing
3533 can be achieved with "pack("l! a*", $type, $message)". Returns
3534 true if successful, false on error. See also "SysV IPC" in perlipc
3535 and the documentation for "IPC::SysV" and "IPC::Msg".
3536
3537 Portability issues: "msgsnd" in perlport.
3538
3539 my VARLIST
3540 my TYPE VARLIST
3541 my VARLIST : ATTRS
3542 my TYPE VARLIST : ATTRS
3543 A "my" declares the listed variables to be local (lexically) to the
3544 enclosing block, file, or "eval". If more than one variable is
3545 listed, the list must be placed in parentheses.
3546
3547 Note that with a parenthesised list, "undef" can be used as a dummy
3548 placeholder, for example to skip assignment of initial values:
3549
3550 my ( undef, $min, $hour ) = localtime;
3551
3552 Redeclaring a variable in the same scope or statement will "shadow"
3553 the previous declaration, creating a new instance and preventing
3554 access to the previous one. This is usually undesired and, if
3555 warnings are enabled, will result in a warning in the "shadow"
3556 category.
3557
3558 The exact semantics and interface of TYPE and ATTRS are still
3559 evolving. TYPE may be a bareword, a constant declared with "use
3560 constant", or "__PACKAGE__". It is currently bound to the use of
3561 the fields pragma, and attributes are handled using the attributes
3562 pragma, or starting from Perl 5.8.0 also via the
3563 Attribute::Handlers module. See "Private Variables via my()" in
3564 perlsub for details.
3565
3566 next LABEL
3567 next EXPR
3568 next
3569 The "next" command is like the "continue" statement in C; it starts
3570 the next iteration of the loop:
3571
3572 LINE: while (<STDIN>) {
3573 next LINE if /^#/; # discard comments
3574 #...
3575 }
3576
3577 Note that if there were a "continue" block on the above, it would
3578 get executed even on discarded lines. If LABEL is omitted, the
3579 command refers to the innermost enclosing loop. The "next EXPR"
3580 form, available as of Perl 5.18.0, allows a label name to be
3581 computed at run time, being otherwise identical to "next LABEL".
3582
3583 "next" cannot return a value from a block that typically returns a
3584 value, such as "eval {}", "sub {}", or "do {}". It will perform its
3585 flow control behavior, which precludes any return value. It should
3586 not be used to exit a "grep" or "map" operation.
3587
3588 Note that a block by itself is semantically identical to a loop
3589 that executes once. Thus "next" will exit such a block early.
3590
3591 See also "continue" for an illustration of how "last", "next", and
3592 "redo" work.
3593
3594 Unlike most named operators, this has the same precedence as
3595 assignment. It is also exempt from the looks-like-a-function rule,
3596 so "next ("foo")."bar"" will cause "bar" to be part of the argument
3597 to "next".
3598
3599 no MODULE VERSION LIST
3600 no MODULE VERSION
3601 no MODULE LIST
3602 no MODULE
3603 no VERSION
3604 See the "use" function, of which "no" is the opposite.
3605
3606 oct EXPR
3607 oct Interprets EXPR as an octal string and returns the corresponding
3608 value. An octal string consists of octal digits and, as of Perl
3609 5.33.5, an optional "0o" or "o" prefix. Each octal digit may be
3610 preceded by a single underscore, which will be ignored. (If EXPR
3611 happens to start off with "0x" or "x", interprets it as a hex
3612 string. If EXPR starts off with "0b" or "b", it is interpreted as
3613 a binary string. Leading whitespace is ignored in all three
3614 cases.) The following will handle decimal, binary, octal, and hex
3615 in standard Perl notation:
3616
3617 $val = oct($val) if $val =~ /^0/;
3618
3619 If EXPR is omitted, uses $_. To go the other way (produce a
3620 number in octal), use "sprintf" or "printf":
3621
3622 my $dec_perms = (stat("filename"))[2] & 07777;
3623 my $oct_perm_str = sprintf "%o", $perms;
3624
3625 The "oct" function is commonly used when a string such as 644 needs
3626 to be converted into a file mode, for example. Although Perl
3627 automatically converts strings into numbers as needed, this
3628 automatic conversion assumes base 10.
3629
3630 Leading white space is ignored without warning, as too are any
3631 trailing non-digits, such as a decimal point ("oct" only handles
3632 non-negative integers, not negative integers or floating point).
3633
3634 open FILEHANDLE,MODE,EXPR
3635 open FILEHANDLE,MODE,EXPR,LIST
3636 open FILEHANDLE,MODE,REFERENCE
3637 open FILEHANDLE,EXPR
3638 open FILEHANDLE
3639 Associates an internal FILEHANDLE with the external file specified
3640 by EXPR. That filehandle will subsequently allow you to perform I/O
3641 operations on that file, such as reading from it or writing to it.
3642
3643 Instead of a filename, you may specify an external command (plus an
3644 optional argument list) or a scalar reference, in order to open
3645 filehandles on commands or in-memory scalars, respectively.
3646
3647 A thorough reference to "open" follows. For a gentler introduction
3648 to the basics of "open", see also the perlopentut manual page.
3649
3650 Working with files
3651 Most often, "open" gets invoked with three arguments: the
3652 required FILEHANDLE (usually an empty scalar variable),
3653 followed by MODE (usually a literal describing the I/O mode the
3654 filehandle will use), and then the filename that the new
3655 filehandle will refer to.
3656
3657 Simple examples
3658 Reading from a file:
3659
3660 open(my $fh, "<", "input.txt")
3661 or die "Can't open < input.txt: $!";
3662
3663 # Process every line in input.txt
3664 while (my $line = readline($fh)) {
3665 #
3666 # ... do something interesting with $line here ...
3667 #
3668 }
3669
3670 or writing to one:
3671
3672 open(my $fh, ">", "output.txt")
3673 or die "Can't open > output.txt: $!";
3674
3675 print $fh "This line gets printed into output.txt.\n";
3676
3677 For a summary of common filehandle operations such as
3678 these, see "Files and I/O" in perlintro.
3679
3680 About filehandles
3681 The first argument to "open", labeled FILEHANDLE in this
3682 reference, is usually a scalar variable. (Exceptions exist,
3683 described in "Other considerations", below.) If the call to
3684 "open" succeeds, then the expression provided as FILEHANDLE
3685 will get assigned an open filehandle. That filehandle
3686 provides an internal reference to the specified external
3687 file, conveniently stored in a Perl variable, and ready for
3688 I/O operations such as reading and writing.
3689
3690 About modes
3691 When calling "open" with three or more arguments, the
3692 second argument -- labeled MODE here -- defines the open
3693 mode. MODE is usually a literal string comprising special
3694 characters that define the intended I/O role of the
3695 filehandle being created: whether it's read-only, or read-
3696 and-write, and so on.
3697
3698 If MODE is "<", the file is opened for input (read-only).
3699 If MODE is ">", the file is opened for output, with
3700 existing files first being truncated ("clobbered") and
3701 nonexisting files newly created. If MODE is ">>", the file
3702 is opened for appending, again being created if necessary.
3703
3704 You can put a "+" in front of the ">" or "<" to indicate
3705 that you want both read and write access to the file; thus
3706 "+<" is almost always preferred for read/write updates--the
3707 "+>" mode would clobber the file first. You can't usually
3708 use either read-write mode for updating textfiles, since
3709 they have variable-length records. See the -i switch in
3710 perlrun for a better approach. The file is created with
3711 permissions of 0666 modified by the process's "umask"
3712 value.
3713
3714 These various prefixes correspond to the fopen(3) modes of
3715 "r", "r+", "w", "w+", "a", and "a+".
3716
3717 More examples of different modes in action:
3718
3719 # Open a file for concatenation
3720 open(my $log, ">>", "/usr/spool/news/twitlog")
3721 or warn "Couldn't open log file; discarding input";
3722
3723 # Open a file for reading and writing
3724 open(my $dbase, "+<", "dbase.mine")
3725 or die "Can't open 'dbase.mine' for update: $!";
3726
3727 Checking the return value
3728 Open returns nonzero on success, the undefined value
3729 otherwise. If the "open" involved a pipe, the return value
3730 happens to be the pid of the subprocess.
3731
3732 When opening a file, it's seldom a good idea to continue if
3733 the request failed, so "open" is frequently used with
3734 "die". Even if you want your code to do something other
3735 than "die" on a failed open, you should still always check
3736 the return value from opening a file.
3737
3738 Specifying I/O layers in MODE
3739 You can use the three-argument form of open to specify I/O
3740 layers (sometimes referred to as "disciplines") to apply to the
3741 new filehandle. These affect how the input and output are
3742 processed (see open and PerlIO for more details). For example:
3743
3744 # loads PerlIO::encoding automatically
3745 open(my $fh, "<:encoding(UTF-8)", $filename)
3746 || die "Can't open UTF-8 encoded $filename: $!";
3747
3748 This opens the UTF8-encoded file containing Unicode characters;
3749 see perluniintro. Note that if layers are specified in the
3750 three-argument form, then default layers stored in "${^OPEN}"
3751 (usually set by the open pragma or the switch "-CioD") are
3752 ignored. Those layers will also be ignored if you specify a
3753 colon with no name following it. In that case the default
3754 layer for the operating system (:raw on Unix, :crlf on Windows)
3755 is used.
3756
3757 On some systems (in general, DOS- and Windows-based systems)
3758 "binmode" is necessary when you're not working with a text
3759 file. For the sake of portability it is a good idea always to
3760 use it when appropriate, and never to use it when it isn't
3761 appropriate. Also, people can set their I/O to be by default
3762 UTF8-encoded Unicode, not bytes.
3763
3764 Using "undef" for temporary files
3765 As a special case the three-argument form with a read/write
3766 mode and the third argument being "undef":
3767
3768 open(my $tmp, "+>", undef) or die ...
3769
3770 opens a filehandle to a newly created empty anonymous temporary
3771 file. (This happens under any mode, which makes "+>" the only
3772 useful and sensible mode to use.) You will need to "seek" to
3773 do the reading.
3774
3775 Opening a filehandle into an in-memory scalar
3776 You can open filehandles directly to Perl scalars instead of a
3777 file or other resource external to the program. To do so,
3778 provide a reference to that scalar as the third argument to
3779 "open", like so:
3780
3781 open(my $memory, ">", \$var)
3782 or die "Can't open memory file: $!";
3783 print $memory "foo!\n"; # output will appear in $var
3784
3785 To (re)open "STDOUT" or "STDERR" as an in-memory file, close it
3786 first:
3787
3788 close STDOUT;
3789 open(STDOUT, ">", \$variable)
3790 or die "Can't open STDOUT: $!";
3791
3792 The scalars for in-memory files are treated as octet strings:
3793 unless the file is being opened with truncation the scalar may
3794 not contain any code points over 0xFF.
3795
3796 Opening in-memory files can fail for a variety of reasons. As
3797 with any other "open", check the return value for success.
3798
3799 Technical note: This feature works only when Perl is built with
3800 PerlIO -- the default, except with older (pre-5.16) Perl
3801 installations that were configured to not include it (e.g. via
3802 "Configure -Uuseperlio"). You can see whether your Perl was
3803 built with PerlIO by running "perl -V:useperlio". If it says
3804 'define', you have PerlIO; otherwise you don't.
3805
3806 See perliol for detailed info on PerlIO.
3807
3808 Opening a filehandle into a command
3809 If MODE is "|-", then the filename is interpreted as a command
3810 to which output is to be piped, and if MODE is "-|", the
3811 filename is interpreted as a command that pipes output to us.
3812 In the two-argument (and one-argument) form, one should replace
3813 dash ("-") with the command. See "Using open() for IPC" in
3814 perlipc for more examples of this. (You are not allowed to
3815 "open" to a command that pipes both in and out, but see
3816 IPC::Open2, IPC::Open3, and "Bidirectional Communication with
3817 Another Process" in perlipc for alternatives.)
3818
3819 open(my $article_fh, "-|", "caesar <$article") # decrypt
3820 # article
3821 or die "Can't start caesar: $!";
3822
3823 open(my $article_fh, "caesar <$article |") # ditto
3824 or die "Can't start caesar: $!";
3825
3826 open(my $out_fh, "|-", "sort >Tmp$$") # $$ is our process id
3827 or die "Can't start sort: $!";
3828
3829 In the form of pipe opens taking three or more arguments, if
3830 LIST is specified (extra arguments after the command name) then
3831 LIST becomes arguments to the command invoked if the platform
3832 supports it. The meaning of "open" with more than three
3833 arguments for non-pipe modes is not yet defined, but
3834 experimental "layers" may give extra LIST arguments meaning.
3835
3836 If you open a pipe on the command "-" (that is, specify either
3837 "|-" or "-|" with the one- or two-argument forms of "open"), an
3838 implicit "fork" is done, so "open" returns twice: in the parent
3839 process it returns the pid of the child process, and in the
3840 child process it returns (a defined) 0. Use defined($pid) or
3841 "//" to determine whether the open was successful.
3842
3843 For example, use either
3844
3845 my $child_pid = open(my $from_kid, "-|")
3846 // die "Can't fork: $!";
3847
3848 or
3849
3850 my $child_pid = open(my $to_kid, "|-")
3851 // die "Can't fork: $!";
3852
3853 followed by
3854
3855 if ($child_pid) {
3856 # am the parent:
3857 # either write $to_kid or else read $from_kid
3858 ...
3859 waitpid $child_pid, 0;
3860 } else {
3861 # am the child; use STDIN/STDOUT normally
3862 ...
3863 exit;
3864 }
3865
3866 The filehandle behaves normally for the parent, but I/O to that
3867 filehandle is piped from/to the STDOUT/STDIN of the child
3868 process. In the child process, the filehandle isn't
3869 opened--I/O happens from/to the new STDOUT/STDIN. Typically
3870 this is used like the normal piped open when you want to
3871 exercise more control over just how the pipe command gets
3872 executed, such as when running setuid and you don't want to
3873 have to scan shell commands for metacharacters.
3874
3875 The following blocks are more or less equivalent:
3876
3877 open(my $fh, "|tr '[a-z]' '[A-Z]'");
3878 open(my $fh, "|-", "tr '[a-z]' '[A-Z]'");
3879 open(my $fh, "|-") || exec 'tr', '[a-z]', '[A-Z]';
3880 open(my $fh, "|-", "tr", '[a-z]', '[A-Z]');
3881
3882 open(my $fh, "cat -n '$file'|");
3883 open(my $fh, "-|", "cat -n '$file'");
3884 open(my $fh, "-|") || exec "cat", "-n", $file;
3885 open(my $fh, "-|", "cat", "-n", $file);
3886
3887 The last two examples in each block show the pipe as "list
3888 form", which is not yet supported on all platforms. (If your
3889 platform has a real "fork", such as Linux and macOS, you can
3890 use the list form; it also works on Windows with Perl 5.22 or
3891 later.) You would want to use the list form of the pipe so you
3892 can pass literal arguments to the command without risk of the
3893 shell interpreting any shell metacharacters in them. However,
3894 this also bars you from opening pipes to commands that
3895 intentionally contain shell metacharacters, such as:
3896
3897 open(my $fh, "|cat -n | expand -4 | lpr")
3898 || die "Can't open pipeline to lpr: $!";
3899
3900 See "Safe Pipe Opens" in perlipc for more examples of this.
3901
3902 Duping filehandles
3903 You may also, in the Bourne shell tradition, specify an EXPR
3904 beginning with ">&", in which case the rest of the string is
3905 interpreted as the name of a filehandle (or file descriptor, if
3906 numeric) to be duped (as in dup(2)) and opened. You may use
3907 "&" after ">", ">>", "<", "+>", "+>>", and "+<". The mode you
3908 specify should match the mode of the original filehandle.
3909 (Duping a filehandle does not take into account any existing
3910 contents of IO buffers.) If you use the three-argument form,
3911 then you can pass either a number, the name of a filehandle, or
3912 the normal "reference to a glob".
3913
3914 Here is a script that saves, redirects, and restores "STDOUT"
3915 and "STDERR" using various methods:
3916
3917 #!/usr/bin/perl
3918 open(my $oldout, ">&STDOUT")
3919 or die "Can't dup STDOUT: $!";
3920 open(OLDERR, ">&", \*STDERR)
3921 or die "Can't dup STDERR: $!";
3922
3923 open(STDOUT, '>', "foo.out")
3924 or die "Can't redirect STDOUT: $!";
3925 open(STDERR, ">&STDOUT")
3926 or die "Can't dup STDOUT: $!";
3927
3928 select STDERR; $| = 1; # make unbuffered
3929 select STDOUT; $| = 1; # make unbuffered
3930
3931 print STDOUT "stdout 1\n"; # this works for
3932 print STDERR "stderr 1\n"; # subprocesses too
3933
3934 open(STDOUT, ">&", $oldout)
3935 or die "Can't dup \$oldout: $!";
3936 open(STDERR, ">&OLDERR")
3937 or die "Can't dup OLDERR: $!";
3938
3939 print STDOUT "stdout 2\n";
3940 print STDERR "stderr 2\n";
3941
3942 If you specify '<&=X', where "X" is a file descriptor number or
3943 a filehandle, then Perl will do an equivalent of C's fdopen(3)
3944 of that file descriptor (and not call dup(2)); this is more
3945 parsimonious of file descriptors. For example:
3946
3947 # open for input, reusing the fileno of $fd
3948 open(my $fh, "<&=", $fd)
3949
3950 or
3951
3952 open(my $fh, "<&=$fd")
3953
3954 or
3955
3956 # open for append, using the fileno of $oldfh
3957 open(my $fh, ">>&=", $oldfh)
3958
3959 Being parsimonious on filehandles is also useful (besides being
3960 parsimonious) for example when something is dependent on file
3961 descriptors, like for example locking using "flock". If you do
3962 just "open(my $A, ">>&", $B)", the filehandle $A will not have
3963 the same file descriptor as $B, and therefore flock($A) will
3964 not flock($B) nor vice versa. But with "open(my $A, ">>&=",
3965 $B)", the filehandles will share the same underlying system
3966 file descriptor.
3967
3968 Note that under Perls older than 5.8.0, Perl uses the standard
3969 C library's' fdopen(3) to implement the "=" functionality. On
3970 many Unix systems, fdopen(3) fails when file descriptors exceed
3971 a certain value, typically 255. For Perls 5.8.0 and later,
3972 PerlIO is (most often) the default.
3973
3974 Legacy usage
3975 This section describes ways to call "open" outside of best
3976 practices; you may encounter these uses in older code. Perl
3977 does not consider their use deprecated, exactly, but neither is
3978 it recommended in new code, for the sake of clarity and
3979 readability.
3980
3981 Specifying mode and filename as a single argument
3982 In the one- and two-argument forms of the call, the mode
3983 and filename should be concatenated (in that order),
3984 preferably separated by white space. You can--but
3985 shouldn't--omit the mode in these forms when that mode is
3986 "<". It is safe to use the two-argument form of "open" if
3987 the filename argument is a known literal.
3988
3989 open(my $dbase, "+<dbase.mine") # ditto
3990 or die "Can't open 'dbase.mine' for update: $!";
3991
3992 In the two-argument (and one-argument) form, opening "<-"
3993 or "-" opens STDIN and opening ">-" opens STDOUT.
3994
3995 New code should favor the three-argument form of "open"
3996 over this older form. Declaring the mode and the filename
3997 as two distinct arguments avoids any confusion between the
3998 two.
3999
4000 Calling "open" with one argument via global variables
4001 As a shortcut, a one-argument call takes the filename from
4002 the global scalar variable of the same name as the
4003 filehandle:
4004
4005 $ARTICLE = 100;
4006 open(ARTICLE)
4007 or die "Can't find article $ARTICLE: $!\n";
4008
4009 Here $ARTICLE must be a global (package) scalar variable -
4010 not one declared with "my" or "state".
4011
4012 Assigning a filehandle to a bareword
4013 An older style is to use a bareword as the filehandle, as
4014
4015 open(FH, "<", "input.txt")
4016 or die "Can't open < input.txt: $!";
4017
4018 Then you can use "FH" as the filehandle, in "close FH" and
4019 "<FH>" and so on. Note that it's a global variable, so
4020 this form is not recommended when dealing with filehandles
4021 other than Perl's built-in ones (e.g. STDOUT and STDIN).
4022 In fact, using a bareword for the filehandle is an error
4023 when the "bareword_filehandles" feature has been disabled.
4024 This feature is disabled by default when in the scope of
4025 "use v5.36.0" or later.
4026
4027 Other considerations
4028 Automatic filehandle closure
4029 The filehandle will be closed when its reference count
4030 reaches zero. If it is a lexically scoped variable declared
4031 with "my", that usually means the end of the enclosing
4032 scope. However, this automatic close does not check for
4033 errors, so it is better to explicitly close filehandles,
4034 especially those used for writing:
4035
4036 close($handle)
4037 || warn "close failed: $!";
4038
4039 Automatic pipe flushing
4040 Perl will attempt to flush all files opened for output
4041 before any operation that may do a fork, but this may not
4042 be supported on some platforms (see perlport). To be safe,
4043 you may need to set $| ($AUTOFLUSH in English) or call the
4044 "autoflush" method of "IO::Handle" on any open handles.
4045
4046 On systems that support a close-on-exec flag on files, the
4047 flag will be set for the newly opened file descriptor as
4048 determined by the value of $^F. See "$^F" in perlvar.
4049
4050 Closing any piped filehandle causes the parent process to
4051 wait for the child to finish, then returns the status value
4052 in $? and "${^CHILD_ERROR_NATIVE}".
4053
4054 Direct versus by-reference assignment of filehandles
4055 If FILEHANDLE -- the first argument in a call to "open" --
4056 is an undefined scalar variable (or array or hash element),
4057 a new filehandle is autovivified, meaning that the variable
4058 is assigned a reference to a newly allocated anonymous
4059 filehandle. Otherwise if FILEHANDLE is an expression, its
4060 value is the real filehandle. (This is considered a
4061 symbolic reference, so "use strict "refs"" should not be in
4062 effect.)
4063
4064 Whitespace and special characters in the filename argument
4065 The filename passed to the one- and two-argument forms of
4066 "open" will have leading and trailing whitespace deleted
4067 and normal redirection characters honored. This property,
4068 known as "magic open", can often be used to good effect. A
4069 user could specify a filename of "rsh cat file |", or you
4070 could change certain filenames as needed:
4071
4072 $filename =~ s/(.*\.gz)\s*$/gzip -dc < $1|/;
4073 open(my $fh, $filename)
4074 or die "Can't open $filename: $!";
4075
4076 Use the three-argument form to open a file with arbitrary
4077 weird characters in it,
4078
4079 open(my $fh, "<", $file)
4080 || die "Can't open $file: $!";
4081
4082 otherwise it's necessary to protect any leading and
4083 trailing whitespace:
4084
4085 $file =~ s#^(\s)#./$1#;
4086 open(my $fh, "< $file\0")
4087 || die "Can't open $file: $!";
4088
4089 (this may not work on some bizarre filesystems). One
4090 should conscientiously choose between the magic and three-
4091 argument form of "open":
4092
4093 open(my $in, $ARGV[0]) || die "Can't open $ARGV[0]: $!";
4094
4095 will allow the user to specify an argument of the form "rsh
4096 cat file |", but will not work on a filename that happens
4097 to have a trailing space, while
4098
4099 open(my $in, "<", $ARGV[0])
4100 || die "Can't open $ARGV[0]: $!";
4101
4102 will have exactly the opposite restrictions. (However, some
4103 shells support the syntax "perl your_program.pl <( rsh cat
4104 file )", which produces a filename that can be opened
4105 normally.)
4106
4107 Invoking C-style "open"
4108 If you want a "real" C open(2), then you should use the
4109 "sysopen" function, which involves no such magic (but uses
4110 different filemodes than Perl "open", which corresponds to
4111 C fopen(3)). This is another way to protect your filenames
4112 from interpretation. For example:
4113
4114 use IO::Handle;
4115 sysopen(my $fh, $path, O_RDWR|O_CREAT|O_EXCL)
4116 or die "Can't open $path: $!";
4117 $fh->autoflush(1);
4118 print $fh "stuff $$\n";
4119 seek($fh, 0, 0);
4120 print "File contains: ", readline($fh);
4121
4122 See "seek" for some details about mixing reading and
4123 writing.
4124
4125 Portability issues
4126 See "open" in perlport.
4127
4128 opendir DIRHANDLE,EXPR
4129 Opens a directory named EXPR for processing by "readdir",
4130 "telldir", "seekdir", "rewinddir", and "closedir". Returns true if
4131 successful. DIRHANDLE may be an expression whose value can be used
4132 as an indirect dirhandle, usually the real dirhandle name. If
4133 DIRHANDLE is an undefined scalar variable (or array or hash
4134 element), the variable is assigned a reference to a new anonymous
4135 dirhandle; that is, it's autovivified. Dirhandles are the same
4136 objects as filehandles; an I/O object can only be open as one of
4137 these handle types at once.
4138
4139 See the example at "readdir".
4140
4141 ord EXPR
4142 ord Returns the numeric value of the first character of EXPR. If EXPR
4143 is an empty string, returns 0. If EXPR is omitted, uses $_. (Note
4144 character, not byte.)
4145
4146 For the reverse, see "chr". See perlunicode for more about
4147 Unicode.
4148
4149 our VARLIST
4150 our TYPE VARLIST
4151 our VARLIST : ATTRS
4152 our TYPE VARLIST : ATTRS
4153 "our" makes a lexical alias to a package (i.e. global) variable of
4154 the same name in the current package for use within the current
4155 lexical scope.
4156
4157 "our" has the same scoping rules as "my" or "state", meaning that
4158 it is only valid within a lexical scope. Unlike "my" and "state",
4159 which both declare new (lexical) variables, "our" only creates an
4160 alias to an existing variable: a package variable of the same name.
4161
4162 This means that when "use strict 'vars'" is in effect, "our" lets
4163 you use a package variable without qualifying it with the package
4164 name, but only within the lexical scope of the "our" declaration.
4165 This applies immediately--even within the same statement.
4166
4167 package Foo;
4168 use v5.36; # which implies "use strict;"
4169
4170 $Foo::foo = 23;
4171
4172 {
4173 our $foo; # alias to $Foo::foo
4174 print $foo; # prints 23
4175 }
4176
4177 print $Foo::foo; # prints 23
4178
4179 print $foo; # ERROR: requires explicit package name
4180
4181 This works even if the package variable has not been used before,
4182 as package variables spring into existence when first used.
4183
4184 package Foo;
4185 use v5.36;
4186
4187 our $foo = 23; # just like $Foo::foo = 23
4188
4189 print $Foo::foo; # prints 23
4190
4191 Because the variable becomes legal immediately under "use strict
4192 'vars'", so long as there is no variable with that name is already
4193 in scope, you can then reference the package variable again even
4194 within the same statement.
4195
4196 package Foo;
4197 use v5.36;
4198
4199 my $foo = $foo; # error, undeclared $foo on right-hand side
4200 our $foo = $foo; # no errors
4201
4202 If more than one variable is listed, the list must be placed in
4203 parentheses.
4204
4205 our($bar, $baz);
4206
4207 An "our" declaration declares an alias for a package variable that
4208 will be visible across its entire lexical scope, even across
4209 package boundaries. The package in which the variable is entered
4210 is determined at the point of the declaration, not at the point of
4211 use. This means the following behavior holds:
4212
4213 package Foo;
4214 our $bar; # declares $Foo::bar for rest of lexical scope
4215 $bar = 20;
4216
4217 package Bar;
4218 print $bar; # prints 20, as it refers to $Foo::bar
4219
4220 Multiple "our" declarations with the same name in the same lexical
4221 scope are allowed if they are in different packages. If they
4222 happen to be in the same package, Perl will emit warnings if you
4223 have asked for them, just like multiple "my" declarations. Unlike
4224 a second "my" declaration, which will bind the name to a fresh
4225 variable, a second "our" declaration in the same package, in the
4226 same scope, is merely redundant.
4227
4228 use warnings;
4229 package Foo;
4230 our $bar; # declares $Foo::bar for rest of lexical scope
4231 $bar = 20;
4232
4233 package Bar;
4234 our $bar = 30; # declares $Bar::bar for rest of lexical scope
4235 print $bar; # prints 30
4236
4237 our $bar; # emits warning but has no other effect
4238 print $bar; # still prints 30
4239
4240 An "our" declaration may also have a list of attributes associated
4241 with it.
4242
4243 The exact semantics and interface of TYPE and ATTRS are still
4244 evolving. TYPE is currently bound to the use of the fields pragma,
4245 and attributes are handled using the attributes pragma, or,
4246 starting from Perl 5.8.0, also via the Attribute::Handlers module.
4247 See "Private Variables via my()" in perlsub for details.
4248
4249 Note that with a parenthesised list, "undef" can be used as a dummy
4250 placeholder, for example to skip assignment of initial values:
4251
4252 our ( undef, $min, $hour ) = localtime;
4253
4254 "our" differs from "use vars", which allows use of an unqualified
4255 name only within the affected package, but across scopes.
4256
4257 pack TEMPLATE,LIST
4258 Takes a LIST of values and converts it into a string using the
4259 rules given by the TEMPLATE. The resulting string is the
4260 concatenation of the converted values. Typically, each converted
4261 value looks like its machine-level representation. For example, on
4262 32-bit machines an integer may be represented by a sequence of 4
4263 bytes, which will in Perl be presented as a string that's 4
4264 characters long.
4265
4266 See perlpacktut for an introduction to this function.
4267
4268 The TEMPLATE is a sequence of characters that give the order and
4269 type of values, as follows:
4270
4271 a A string with arbitrary binary data, will be null padded.
4272 A A text (ASCII) string, will be space padded.
4273 Z A null-terminated (ASCIZ) string, will be null padded.
4274
4275 b A bit string (ascending bit order inside each byte,
4276 like vec()).
4277 B A bit string (descending bit order inside each byte).
4278 h A hex string (low nybble first).
4279 H A hex string (high nybble first).
4280
4281 c A signed char (8-bit) value.
4282 C An unsigned char (octet) value.
4283 W An unsigned char value (can be greater than 255).
4284
4285 s A signed short (16-bit) value.
4286 S An unsigned short value.
4287
4288 l A signed long (32-bit) value.
4289 L An unsigned long value.
4290
4291 q A signed quad (64-bit) value.
4292 Q An unsigned quad value.
4293 (Quads are available only if your system supports 64-bit
4294 integer values _and_ if Perl has been compiled to support
4295 those. Raises an exception otherwise.)
4296
4297 i A signed integer value.
4298 I An unsigned integer value.
4299 (This 'integer' is _at_least_ 32 bits wide. Its exact
4300 size depends on what a local C compiler calls 'int'.)
4301
4302 n An unsigned short (16-bit) in "network" (big-endian) order.
4303 N An unsigned long (32-bit) in "network" (big-endian) order.
4304 v An unsigned short (16-bit) in "VAX" (little-endian) order.
4305 V An unsigned long (32-bit) in "VAX" (little-endian) order.
4306
4307 j A Perl internal signed integer value (IV).
4308 J A Perl internal unsigned integer value (UV).
4309
4310 f A single-precision float in native format.
4311 d A double-precision float in native format.
4312
4313 F A Perl internal floating-point value (NV) in native format
4314 D A float of long-double precision in native format.
4315 (Long doubles are available only if your system supports
4316 long double values. Raises an exception otherwise.
4317 Note that there are different long double formats.)
4318
4319 p A pointer to a null-terminated string.
4320 P A pointer to a structure (fixed-length string).
4321
4322 u A uuencoded string.
4323 U A Unicode character number. Encodes to a character in char-
4324 acter mode and UTF-8 (or UTF-EBCDIC in EBCDIC platforms) in
4325 byte mode. Also on EBCDIC platforms, the character number will
4326 be the native EBCDIC value for character numbers below 256.
4327 This allows most programs using this feature to not have to
4328 care which type of platform they are running on.
4329
4330 w A BER compressed integer (not an ASN.1 BER, see perlpacktut
4331 for details). Its bytes represent an unsigned integer in
4332 base 128, most significant digit first, with as few digits
4333 as possible. Bit eight (the high bit) is set on each byte
4334 except the last.
4335
4336 x A null byte (a.k.a ASCII NUL, "\000", chr(0))
4337 X Back up a byte.
4338 @ Null-fill or truncate to absolute position, counted from the
4339 start of the innermost ()-group.
4340 . Null-fill or truncate to absolute position specified by
4341 the value.
4342 ( Start of a ()-group.
4343
4344 One or more modifiers below may optionally follow certain letters
4345 in the TEMPLATE (the second column lists letters for which the
4346 modifier is valid):
4347
4348 ! sSlLiI Forces native (short, long, int) sizes instead
4349 of fixed (16-/32-bit) sizes.
4350
4351 ! xX Make x and X act as alignment commands.
4352
4353 ! nNvV Treat integers as signed instead of unsigned.
4354
4355 ! @. Specify position as byte offset in the internal
4356 representation of the packed string. Efficient
4357 but dangerous.
4358
4359 > sSiIlLqQ Force big-endian byte-order on the type.
4360 jJfFdDpP (The "big end" touches the construct.)
4361
4362 < sSiIlLqQ Force little-endian byte-order on the type.
4363 jJfFdDpP (The "little end" touches the construct.)
4364
4365 The ">" and "<" modifiers can also be used on "()" groups to force
4366 a particular byte-order on all components in that group, including
4367 all its subgroups.
4368
4369 The following rules apply:
4370
4371 • Each letter may optionally be followed by a number indicating
4372 the repeat count. A numeric repeat count may optionally be
4373 enclosed in brackets, as in "pack("C[80]", @arr)". The repeat
4374 count gobbles that many values from the LIST when used with all
4375 format types other than "a", "A", "Z", "b", "B", "h", "H", "@",
4376 ".", "x", "X", and "P", where it means something else,
4377 described below. Supplying a "*" for the repeat count instead
4378 of a number means to use however many items are left, except
4379 for:
4380
4381 • "@", "x", and "X", where it is equivalent to 0.
4382
4383 • <.>, where it means relative to the start of the string.
4384
4385 • "u", where it is equivalent to 1 (or 45, which here is
4386 equivalent).
4387
4388 One can replace a numeric repeat count with a template letter
4389 enclosed in brackets to use the packed byte length of the
4390 bracketed template for the repeat count.
4391
4392 For example, the template "x[L]" skips as many bytes as in a
4393 packed long, and the template "$t X[$t] $t" unpacks twice
4394 whatever $t (when variable-expanded) unpacks. If the template
4395 in brackets contains alignment commands (such as "x![d]"), its
4396 packed length is calculated as if the start of the template had
4397 the maximal possible alignment.
4398
4399 When used with "Z", a "*" as the repeat count is guaranteed to
4400 add a trailing null byte, so the resulting string is always one
4401 byte longer than the byte length of the item itself.
4402
4403 When used with "@", the repeat count represents an offset from
4404 the start of the innermost "()" group.
4405
4406 When used with ".", the repeat count determines the starting
4407 position to calculate the value offset as follows:
4408
4409 • If the repeat count is 0, it's relative to the current
4410 position.
4411
4412 • If the repeat count is "*", the offset is relative to the
4413 start of the packed string.
4414
4415 • And if it's an integer n, the offset is relative to the
4416 start of the nth innermost "( )" group, or to the start of
4417 the string if n is bigger then the group level.
4418
4419 The repeat count for "u" is interpreted as the maximal number
4420 of bytes to encode per line of output, with 0, 1 and 2 replaced
4421 by 45. The repeat count should not be more than 65.
4422
4423 • The "a", "A", and "Z" types gobble just one value, but pack it
4424 as a string of length count, padding with nulls or spaces as
4425 needed. When unpacking, "A" strips trailing whitespace and
4426 nulls, "Z" strips everything after the first null, and "a"
4427 returns data with no stripping at all.
4428
4429 If the value to pack is too long, the result is truncated. If
4430 it's too long and an explicit count is provided, "Z" packs only
4431 "$count-1" bytes, followed by a null byte. Thus "Z" always
4432 packs a trailing null, except when the count is 0.
4433
4434 • Likewise, the "b" and "B" formats pack a string that's that
4435 many bits long. Each such format generates 1 bit of the
4436 result. These are typically followed by a repeat count like
4437 "B8" or "B64".
4438
4439 Each result bit is based on the least-significant bit of the
4440 corresponding input character, i.e., on "ord($char)%2". In
4441 particular, characters "0" and "1" generate bits 0 and 1, as do
4442 characters "\000" and "\001".
4443
4444 Starting from the beginning of the input string, each 8-tuple
4445 of characters is converted to 1 character of output. With
4446 format "b", the first character of the 8-tuple determines the
4447 least-significant bit of a character; with format "B", it
4448 determines the most-significant bit of a character.
4449
4450 If the length of the input string is not evenly divisible by 8,
4451 the remainder is packed as if the input string were padded by
4452 null characters at the end. Similarly during unpacking,
4453 "extra" bits are ignored.
4454
4455 If the input string is longer than needed, remaining characters
4456 are ignored.
4457
4458 A "*" for the repeat count uses all characters of the input
4459 field. On unpacking, bits are converted to a string of 0s and
4460 1s.
4461
4462 • The "h" and "H" formats pack a string that many nybbles (4-bit
4463 groups, representable as hexadecimal digits, "0".."9" "a".."f")
4464 long.
4465
4466 For each such format, "pack" generates 4 bits of result. With
4467 non-alphabetical characters, the result is based on the 4
4468 least-significant bits of the input character, i.e., on
4469 "ord($char)%16". In particular, characters "0" and "1"
4470 generate nybbles 0 and 1, as do bytes "\000" and "\001". For
4471 characters "a".."f" and "A".."F", the result is compatible with
4472 the usual hexadecimal digits, so that "a" and "A" both generate
4473 the nybble "0xA==10". Use only these specific hex characters
4474 with this format.
4475
4476 Starting from the beginning of the template to "pack", each
4477 pair of characters is converted to 1 character of output. With
4478 format "h", the first character of the pair determines the
4479 least-significant nybble of the output character; with format
4480 "H", it determines the most-significant nybble.
4481
4482 If the length of the input string is not even, it behaves as if
4483 padded by a null character at the end. Similarly, "extra"
4484 nybbles are ignored during unpacking.
4485
4486 If the input string is longer than needed, extra characters are
4487 ignored.
4488
4489 A "*" for the repeat count uses all characters of the input
4490 field. For "unpack", nybbles are converted to a string of
4491 hexadecimal digits.
4492
4493 • The "p" format packs a pointer to a null-terminated string.
4494 You are responsible for ensuring that the string is not a
4495 temporary value, as that could potentially get deallocated
4496 before you got around to using the packed result. The "P"
4497 format packs a pointer to a structure of the size indicated by
4498 the length. A null pointer is created if the corresponding
4499 value for "p" or "P" is "undef"; similarly with "unpack", where
4500 a null pointer unpacks into "undef".
4501
4502 If your system has a strange pointer size--meaning a pointer is
4503 neither as big as an int nor as big as a long--it may not be
4504 possible to pack or unpack pointers in big- or little-endian
4505 byte order. Attempting to do so raises an exception.
4506
4507 • The "/" template character allows packing and unpacking of a
4508 sequence of items where the packed structure contains a packed
4509 item count followed by the packed items themselves. This is
4510 useful when the structure you're unpacking has encoded the
4511 sizes or repeat counts for some of its fields within the
4512 structure itself as separate fields.
4513
4514 For "pack", you write length-item"/"sequence-item, and the
4515 length-item describes how the length value is packed. Formats
4516 likely to be of most use are integer-packing ones like "n" for
4517 Java strings, "w" for ASN.1 or SNMP, and "N" for Sun XDR.
4518
4519 For "pack", sequence-item may have a repeat count, in which
4520 case the minimum of that and the number of available items is
4521 used as the argument for length-item. If it has no repeat
4522 count or uses a '*', the number of available items is used.
4523
4524 For "unpack", an internal stack of integer arguments unpacked
4525 so far is used. You write "/"sequence-item and the repeat
4526 count is obtained by popping off the last element from the
4527 stack. The sequence-item must not have a repeat count.
4528
4529 If sequence-item refers to a string type ("A", "a", or "Z"),
4530 the length-item is the string length, not the number of
4531 strings. With an explicit repeat count for pack, the packed
4532 string is adjusted to that length. For example:
4533
4534 This code: gives this result:
4535
4536 unpack("W/a", "\004Gurusamy") ("Guru")
4537 unpack("a3/A A*", "007 Bond J ") (" Bond", "J")
4538 unpack("a3 x2 /A A*", "007: Bond, J.") ("Bond, J", ".")
4539
4540 pack("n/a* w/a","hello,","world") "\000\006hello,\005world"
4541 pack("a/W2", ord("a") .. ord("z")) "2ab"
4542
4543 The length-item is not returned explicitly from "unpack".
4544
4545 Supplying a count to the length-item format letter is only
4546 useful with "A", "a", or "Z". Packing with a length-item of
4547 "a" or "Z" may introduce "\000" characters, which Perl does not
4548 regard as legal in numeric strings.
4549
4550 • The integer types "s", "S", "l", and "L" may be followed by a
4551 "!" modifier to specify native shorts or longs. As shown in
4552 the example above, a bare "l" means exactly 32 bits, although
4553 the native "long" as seen by the local C compiler may be
4554 larger. This is mainly an issue on 64-bit platforms. You can
4555 see whether using "!" makes any difference this way:
4556
4557 printf "format s is %d, s! is %d\n",
4558 length pack("s"), length pack("s!");
4559
4560 printf "format l is %d, l! is %d\n",
4561 length pack("l"), length pack("l!");
4562
4563 "i!" and "I!" are also allowed, but only for completeness'
4564 sake: they are identical to "i" and "I".
4565
4566 The actual sizes (in bytes) of native shorts, ints, longs, and
4567 long longs on the platform where Perl was built are also
4568 available from the command line:
4569
4570 $ perl -V:{short,int,long{,long}}size
4571 shortsize='2';
4572 intsize='4';
4573 longsize='4';
4574 longlongsize='8';
4575
4576 or programmatically via the "Config" module:
4577
4578 use Config;
4579 print $Config{shortsize}, "\n";
4580 print $Config{intsize}, "\n";
4581 print $Config{longsize}, "\n";
4582 print $Config{longlongsize}, "\n";
4583
4584 $Config{longlongsize} is undefined on systems without long long
4585 support.
4586
4587 • The integer formats "s", "S", "i", "I", "l", "L", "j", and "J"
4588 are inherently non-portable between processors and operating
4589 systems because they obey native byteorder and endianness. For
4590 example, a 4-byte integer 0x12345678 (305419896 decimal) would
4591 be ordered natively (arranged in and handled by the CPU
4592 registers) into bytes as
4593
4594 0x12 0x34 0x56 0x78 # big-endian
4595 0x78 0x56 0x34 0x12 # little-endian
4596
4597 Basically, Intel and VAX CPUs are little-endian, while
4598 everybody else, including Motorola m68k/88k, PPC, Sparc, HP PA,
4599 Power, and Cray, are big-endian. Alpha and MIPS can be either:
4600 Digital/Compaq uses (well, used) them in little-endian mode,
4601 but SGI/Cray uses them in big-endian mode.
4602
4603 The names big-endian and little-endian are comic references to
4604 the egg-eating habits of the little-endian Lilliputians and the
4605 big-endian Blefuscudians from the classic Jonathan Swift
4606 satire, Gulliver's Travels. This entered computer lingo via
4607 the paper "On Holy Wars and a Plea for Peace" by Danny Cohen,
4608 USC/ISI IEN 137, April 1, 1980.
4609
4610 Some systems may have even weirder byte orders such as
4611
4612 0x56 0x78 0x12 0x34
4613 0x34 0x12 0x78 0x56
4614
4615 These are called mid-endian, middle-endian, mixed-endian, or
4616 just weird.
4617
4618 You can determine your system endianness with this incantation:
4619
4620 printf("%#02x ", $_) for unpack("W*", pack L=>0x12345678);
4621
4622 The byteorder on the platform where Perl was built is also
4623 available via Config:
4624
4625 use Config;
4626 print "$Config{byteorder}\n";
4627
4628 or from the command line:
4629
4630 $ perl -V:byteorder
4631
4632 Byteorders "1234" and "12345678" are little-endian; "4321" and
4633 "87654321" are big-endian. Systems with multiarchitecture
4634 binaries will have "ffff", signifying that static information
4635 doesn't work, one must use runtime probing.
4636
4637 For portably packed integers, either use the formats "n", "N",
4638 "v", and "V" or else use the ">" and "<" modifiers described
4639 immediately below. See also perlport.
4640
4641 • Also floating point numbers have endianness. Usually (but not
4642 always) this agrees with the integer endianness. Even though
4643 most platforms these days use the IEEE 754 binary format, there
4644 are differences, especially if the long doubles are involved.
4645 You can see the "Config" variables "doublekind" and
4646 "longdblkind" (also "doublesize", "longdblsize"): the "kind"
4647 values are enums, unlike "byteorder".
4648
4649 Portability-wise the best option is probably to keep to the
4650 IEEE 754 64-bit doubles, and of agreed-upon endianness.
4651 Another possibility is the "%a") format of "printf".
4652
4653 • Starting with Perl 5.10.0, integer and floating-point formats,
4654 along with the "p" and "P" formats and "()" groups, may all be
4655 followed by the ">" or "<" endianness modifiers to respectively
4656 enforce big- or little-endian byte-order. These modifiers are
4657 especially useful given how "n", "N", "v", and "V" don't cover
4658 signed integers, 64-bit integers, or floating-point values.
4659
4660 Here are some concerns to keep in mind when using an endianness
4661 modifier:
4662
4663 • Exchanging signed integers between different platforms
4664 works only when all platforms store them in the same
4665 format. Most platforms store signed integers in two's-
4666 complement notation, so usually this is not an issue.
4667
4668 • The ">" or "<" modifiers can only be used on floating-point
4669 formats on big- or little-endian machines. Otherwise,
4670 attempting to use them raises an exception.
4671
4672 • Forcing big- or little-endian byte-order on floating-point
4673 values for data exchange can work only if all platforms use
4674 the same binary representation such as IEEE floating-point.
4675 Even if all platforms are using IEEE, there may still be
4676 subtle differences. Being able to use ">" or "<" on
4677 floating-point values can be useful, but also dangerous if
4678 you don't know exactly what you're doing. It is not a
4679 general way to portably store floating-point values.
4680
4681 • When using ">" or "<" on a "()" group, this affects all
4682 types inside the group that accept byte-order modifiers,
4683 including all subgroups. It is silently ignored for all
4684 other types. You are not allowed to override the byte-
4685 order within a group that already has a byte-order modifier
4686 suffix.
4687
4688 • Real numbers (floats and doubles) are in native machine format
4689 only. Due to the multiplicity of floating-point formats and
4690 the lack of a standard "network" representation for them, no
4691 facility for interchange has been made. This means that packed
4692 floating-point data written on one machine may not be readable
4693 on another, even if both use IEEE floating-point arithmetic
4694 (because the endianness of the memory representation is not
4695 part of the IEEE spec). See also perlport.
4696
4697 If you know exactly what you're doing, you can use the ">" or
4698 "<" modifiers to force big- or little-endian byte-order on
4699 floating-point values.
4700
4701 Because Perl uses doubles (or long doubles, if configured)
4702 internally for all numeric calculation, converting from double
4703 into float and thence to double again loses precision, so
4704 "unpack("f", pack("f", $foo)") will not in general equal $foo.
4705
4706 • Pack and unpack can operate in two modes: character mode ("C0"
4707 mode) where the packed string is processed per character, and
4708 UTF-8 byte mode ("U0" mode) where the packed string is
4709 processed in its UTF-8-encoded Unicode form on a byte-by-byte
4710 basis. Character mode is the default unless the format string
4711 starts with "U". You can always switch mode mid-format with an
4712 explicit "C0" or "U0" in the format. This mode remains in
4713 effect until the next mode change, or until the end of the "()"
4714 group it (directly) applies to.
4715
4716 Using "C0" to get Unicode characters while using "U0" to get
4717 non-Unicode bytes is not necessarily obvious. Probably only
4718 the first of these is what you want:
4719
4720 $ perl -CS -E 'say "\x{3B1}\x{3C9}"' |
4721 perl -CS -ne 'printf "%v04X\n", $_ for unpack("C0A*", $_)'
4722 03B1.03C9
4723 $ perl -CS -E 'say "\x{3B1}\x{3C9}"' |
4724 perl -CS -ne 'printf "%v02X\n", $_ for unpack("U0A*", $_)'
4725 CE.B1.CF.89
4726 $ perl -CS -E 'say "\x{3B1}\x{3C9}"' |
4727 perl -C0 -ne 'printf "%v02X\n", $_ for unpack("C0A*", $_)'
4728 CE.B1.CF.89
4729 $ perl -CS -E 'say "\x{3B1}\x{3C9}"' |
4730 perl -C0 -ne 'printf "%v02X\n", $_ for unpack("U0A*", $_)'
4731 C3.8E.C2.B1.C3.8F.C2.89
4732
4733 Those examples also illustrate that you should not try to use
4734 "pack"/"unpack" as a substitute for the Encode module.
4735
4736 • You must yourself do any alignment or padding by inserting, for
4737 example, enough "x"es while packing. There is no way for
4738 "pack" and "unpack" to know where characters are going to or
4739 coming from, so they handle their output and input as flat
4740 sequences of characters.
4741
4742 • A "()" group is a sub-TEMPLATE enclosed in parentheses. A
4743 group may take a repeat count either as postfix, or for
4744 "unpack", also via the "/" template character. Within each
4745 repetition of a group, positioning with "@" starts over at 0.
4746 Therefore, the result of
4747
4748 pack("@1A((@2A)@3A)", qw[X Y Z])
4749
4750 is the string "\0X\0\0YZ".
4751
4752 • "x" and "X" accept the "!" modifier to act as alignment
4753 commands: they jump forward or back to the closest position
4754 aligned at a multiple of "count" characters. For example, to
4755 "pack" or "unpack" a C structure like
4756
4757 struct {
4758 char c; /* one signed, 8-bit character */
4759 double d;
4760 char cc[2];
4761 }
4762
4763 one may need to use the template "c x![d] d c[2]". This
4764 assumes that doubles must be aligned to the size of double.
4765
4766 For alignment commands, a "count" of 0 is equivalent to a
4767 "count" of 1; both are no-ops.
4768
4769 • "n", "N", "v" and "V" accept the "!" modifier to represent
4770 signed 16-/32-bit integers in big-/little-endian order. This
4771 is portable only when all platforms sharing packed data use the
4772 same binary representation for signed integers; for example,
4773 when all platforms use two's-complement representation.
4774
4775 • Comments can be embedded in a TEMPLATE using "#" through the
4776 end of line. White space can separate pack codes from each
4777 other, but modifiers and repeat counts must follow immediately.
4778 Breaking complex templates into individual line-by-line
4779 components, suitably annotated, can do as much to improve
4780 legibility and maintainability of pack/unpack formats as "/x"
4781 can for complicated pattern matches.
4782
4783 • If TEMPLATE requires more arguments than "pack" is given,
4784 "pack" assumes additional "" arguments. If TEMPLATE requires
4785 fewer arguments than given, extra arguments are ignored.
4786
4787 • Attempting to pack the special floating point values "Inf" and
4788 "NaN" (infinity, also in negative, and not-a-number) into
4789 packed integer values (like "L") is a fatal error. The reason
4790 for this is that there simply isn't any sensible mapping for
4791 these special values into integers.
4792
4793 Examples:
4794
4795 $foo = pack("WWWW",65,66,67,68);
4796 # foo eq "ABCD"
4797 $foo = pack("W4",65,66,67,68);
4798 # same thing
4799 $foo = pack("W4",0x24b6,0x24b7,0x24b8,0x24b9);
4800 # same thing with Unicode circled letters.
4801 $foo = pack("U4",0x24b6,0x24b7,0x24b8,0x24b9);
4802 # same thing with Unicode circled letters. You don't get the
4803 # UTF-8 bytes because the U at the start of the format caused
4804 # a switch to U0-mode, so the UTF-8 bytes get joined into
4805 # characters
4806 $foo = pack("C0U4",0x24b6,0x24b7,0x24b8,0x24b9);
4807 # foo eq "\xe2\x92\xb6\xe2\x92\xb7\xe2\x92\xb8\xe2\x92\xb9"
4808 # This is the UTF-8 encoding of the string in the
4809 # previous example
4810
4811 $foo = pack("ccxxcc",65,66,67,68);
4812 # foo eq "AB\0\0CD"
4813
4814 # NOTE: The examples above featuring "W" and "c" are true
4815 # only on ASCII and ASCII-derived systems such as ISO Latin 1
4816 # and UTF-8. On EBCDIC systems, the first example would be
4817 # $foo = pack("WWWW",193,194,195,196);
4818
4819 $foo = pack("s2",1,2);
4820 # "\001\000\002\000" on little-endian
4821 # "\000\001\000\002" on big-endian
4822
4823 $foo = pack("a4","abcd","x","y","z");
4824 # "abcd"
4825
4826 $foo = pack("aaaa","abcd","x","y","z");
4827 # "axyz"
4828
4829 $foo = pack("a14","abcdefg");
4830 # "abcdefg\0\0\0\0\0\0\0"
4831
4832 $foo = pack("i9pl", gmtime);
4833 # a real struct tm (on my system anyway)
4834
4835 $utmp_template = "Z8 Z8 Z16 L";
4836 $utmp = pack($utmp_template, @utmp1);
4837 # a struct utmp (BSDish)
4838
4839 @utmp2 = unpack($utmp_template, $utmp);
4840 # "@utmp1" eq "@utmp2"
4841
4842 sub bintodec {
4843 unpack("N", pack("B32", substr("0" x 32 . shift, -32)));
4844 }
4845
4846 $foo = pack('sx2l', 12, 34);
4847 # short 12, two zero bytes padding, long 34
4848 $bar = pack('s@4l', 12, 34);
4849 # short 12, zero fill to position 4, long 34
4850 # $foo eq $bar
4851 $baz = pack('s.l', 12, 4, 34);
4852 # short 12, zero fill to position 4, long 34
4853
4854 $foo = pack('nN', 42, 4711);
4855 # pack big-endian 16- and 32-bit unsigned integers
4856 $foo = pack('S>L>', 42, 4711);
4857 # exactly the same
4858 $foo = pack('s<l<', -42, 4711);
4859 # pack little-endian 16- and 32-bit signed integers
4860 $foo = pack('(sl)<', -42, 4711);
4861 # exactly the same
4862
4863 The same template may generally also be used in "unpack".
4864
4865 package NAMESPACE
4866 package NAMESPACE VERSION
4867 package NAMESPACE BLOCK
4868 package NAMESPACE VERSION BLOCK
4869 Declares the BLOCK or the rest of the compilation unit as being in
4870 the given namespace. The scope of the package declaration is
4871 either the supplied code BLOCK or, in the absence of a BLOCK, from
4872 the declaration itself through the end of current scope (the
4873 enclosing block, file, or "eval"). That is, the forms without a
4874 BLOCK are operative through the end of the current scope, just like
4875 the "my", "state", and "our" operators. All unqualified dynamic
4876 identifiers in this scope will be in the given namespace, except
4877 where overridden by another "package" declaration or when they're
4878 one of the special identifiers that qualify into "main::", like
4879 "STDOUT", "ARGV", "ENV", and the punctuation variables.
4880
4881 A package statement affects dynamic variables only, including those
4882 you've used "local" on, but not lexically-scoped variables, which
4883 are created with "my", "state", or "our". Typically it would be
4884 the first declaration in a file included by "require" or "use".
4885 You can switch into a package in more than one place, since this
4886 only determines which default symbol table the compiler uses for
4887 the rest of that block. You can refer to identifiers in other
4888 packages than the current one by prefixing the identifier with the
4889 package name and a double colon, as in $SomePack::var or
4890 "ThatPack::INPUT_HANDLE". If package name is omitted, the "main"
4891 package is assumed. That is, $::sail is equivalent to $main::sail
4892 (as well as to "$main'sail", still seen in ancient code, mostly
4893 from Perl 4).
4894
4895 If VERSION is provided, "package" sets the $VERSION variable in the
4896 given namespace to a version object with the VERSION provided.
4897 VERSION must be a "strict" style version number as defined by the
4898 version module: a positive decimal number (integer or decimal-
4899 fraction) without exponentiation or else a dotted-decimal v-string
4900 with a leading 'v' character and at least three components. You
4901 should set $VERSION only once per package.
4902
4903 See "Packages" in perlmod for more information about packages,
4904 modules, and classes. See perlsub for other scoping issues.
4905
4906 __PACKAGE__
4907 A special token that returns the name of the package in which it
4908 occurs.
4909
4910 pipe READHANDLE,WRITEHANDLE
4911 Opens a pair of connected pipes like the corresponding system call.
4912 Note that if you set up a loop of piped processes, deadlock can
4913 occur unless you are very careful. In addition, note that Perl's
4914 pipes use IO buffering, so you may need to set $| to flush your
4915 WRITEHANDLE after each command, depending on the application.
4916
4917 Returns true on success.
4918
4919 See IPC::Open2, IPC::Open3, and "Bidirectional Communication with
4920 Another Process" in perlipc for examples of such things.
4921
4922 On systems that support a close-on-exec flag on files, that flag is
4923 set on all newly opened file descriptors whose "fileno"s are higher
4924 than the current value of $^F (by default 2 for "STDERR"). See
4925 "$^F" in perlvar.
4926
4927 pop ARRAY
4928 pop Removes and returns the last element of the array, shortening the
4929 array by one element.
4930
4931 my @arr = ('cat', 'dog', 'mouse');
4932 my $item = pop(@arr); # 'mouse'
4933
4934 # @arr is now ('cat', 'dog')
4935
4936 Returns "undef" if the array is empty.
4937
4938 Note: "pop" may also return "undef" if the last element in the
4939 array is "undef".
4940
4941 my @arr = ('one', 'two', undef);
4942 my $item = pop(@arr); # undef
4943
4944 If ARRAY is omitted, "pop" operates on the @ARGV array in the main
4945 program, but the @_ array in subroutines. "pop" will operate on the
4946 @ARGV array in "eval STRING", "BEGIN {}", "INIT {}", "CHECK {}"
4947 blocks.
4948
4949 Starting with Perl 5.14, an experimental feature allowed "pop" to
4950 take a scalar expression. This experiment has been deemed
4951 unsuccessful, and was removed as of Perl 5.24.
4952
4953 pos SCALAR
4954 pos Returns the offset of where the last "m//g" search left off for the
4955 variable in question ($_ is used when the variable is not
4956 specified). This offset is in characters unless the (no-longer-
4957 recommended) "use bytes" pragma is in effect, in which case the
4958 offset is in bytes. Note that 0 is a valid match offset. "undef"
4959 indicates that the search position is reset (usually due to match
4960 failure, but can also be because no match has yet been run on the
4961 scalar).
4962
4963 "pos" directly accesses the location used by the regexp engine to
4964 store the offset, so assigning to "pos" will change that offset,
4965 and so will also influence the "\G" zero-width assertion in regular
4966 expressions. Both of these effects take place for the next match,
4967 so you can't affect the position with "pos" during the current
4968 match, such as in "(?{pos() = 5})" or "s//pos() = 5/e".
4969
4970 Setting "pos" also resets the matched with zero-length flag,
4971 described under "Repeated Patterns Matching a Zero-length
4972 Substring" in perlre.
4973
4974 Because a failed "m//gc" match doesn't reset the offset, the return
4975 from "pos" won't change either in this case. See perlre and
4976 perlop.
4977
4978 print FILEHANDLE LIST
4979 print FILEHANDLE
4980 print LIST
4981 print
4982 Prints a string or a list of strings. Returns true if successful.
4983 FILEHANDLE may be a scalar variable containing the name of or a
4984 reference to the filehandle, thus introducing one level of
4985 indirection. (NOTE: If FILEHANDLE is a variable and the next token
4986 is a term, it may be misinterpreted as an operator unless you
4987 interpose a "+" or put parentheses around the arguments.) If
4988 FILEHANDLE is omitted, prints to the last selected (see "select")
4989 output handle. If LIST is omitted, prints $_ to the currently
4990 selected output handle. To use FILEHANDLE alone to print the
4991 content of $_ to it, you must use a bareword filehandle like "FH",
4992 not an indirect one like $fh. To set the default output handle to
4993 something other than STDOUT, use the select operation.
4994
4995 The current value of $, (if any) is printed between each LIST item.
4996 The current value of "$\" (if any) is printed after the entire LIST
4997 has been printed. Because print takes a LIST, anything in the LIST
4998 is evaluated in list context, including any subroutines whose
4999 return lists you pass to "print". Be careful not to follow the
5000 print keyword with a left parenthesis unless you want the
5001 corresponding right parenthesis to terminate the arguments to the
5002 print; put parentheses around all arguments (or interpose a "+",
5003 but that doesn't look as good).
5004
5005 If you're storing handles in an array or hash, or in general
5006 whenever you're using any expression more complex than a bareword
5007 handle or a plain, unsubscripted scalar variable to retrieve it,
5008 you will have to use a block returning the filehandle value
5009 instead, in which case the LIST may not be omitted:
5010
5011 print { $files[$i] } "stuff\n";
5012 print { $OK ? *STDOUT : *STDERR } "stuff\n";
5013
5014 Printing to a closed pipe or socket will generate a SIGPIPE signal.
5015 See perlipc for more on signal handling.
5016
5017 printf FILEHANDLE FORMAT, LIST
5018 printf FILEHANDLE
5019 printf FORMAT, LIST
5020 printf
5021 Equivalent to "print FILEHANDLE sprintf(FORMAT, LIST)", except that
5022 "$\" (the output record separator) is not appended. The FORMAT and
5023 the LIST are actually parsed as a single list. The first argument
5024 of the list will be interpreted as the "printf" format. This means
5025 that printf(@_) will use $_[0] as the format. See sprintf for an
5026 explanation of the format argument. If "use locale" (including
5027 "use locale ':not_characters'") is in effect and "POSIX::setlocale"
5028 has been called, the character used for the decimal separator in
5029 formatted floating-point numbers is affected by the "LC_NUMERIC"
5030 locale setting. See perllocale and POSIX.
5031
5032 For historical reasons, if you omit the list, $_ is used as the
5033 format; to use FILEHANDLE without a list, you must use a bareword
5034 filehandle like "FH", not an indirect one like $fh. However, this
5035 will rarely do what you want; if $_ contains formatting codes, they
5036 will be replaced with the empty string and a warning will be
5037 emitted if warnings are enabled. Just use "print" if you want to
5038 print the contents of $_.
5039
5040 Don't fall into the trap of using a "printf" when a simple "print"
5041 would do. The "print" is more efficient and less error prone.
5042
5043 prototype FUNCTION
5044 prototype
5045 Returns the prototype of a function as a string (or "undef" if the
5046 function has no prototype). FUNCTION is a reference to, or the
5047 name of, the function whose prototype you want to retrieve. If
5048 FUNCTION is omitted, $_ is used.
5049
5050 If FUNCTION is a string starting with "CORE::", the rest is taken
5051 as a name for a Perl builtin. If the builtin's arguments cannot be
5052 adequately expressed by a prototype (such as "system"), "prototype"
5053 returns "undef", because the builtin does not really behave like a
5054 Perl function. Otherwise, the string describing the equivalent
5055 prototype is returned.
5056
5057 push ARRAY,LIST
5058 Adds one or more items to the end of an array.
5059
5060 my @animals = ("cat");
5061 push(@animals, "mouse"); # ("cat", "mouse")
5062
5063 my @colors = ("red");
5064 push(@colors, ("blue", "green")); # ("red", "blue", "green")
5065
5066 Returns the number of elements in the array following the completed
5067 "push".
5068
5069 my $color_count = push(@colors, ("yellow", "purple"));
5070
5071 say "There are $color_count colors in the updated array";
5072
5073 Starting with Perl 5.14, an experimental feature allowed "push" to
5074 take a scalar expression. This experiment has been deemed
5075 unsuccessful, and was removed as of Perl 5.24.
5076
5077 q/STRING/
5078 qq/STRING/
5079 qw/STRING/
5080 qx/STRING/
5081 Generalized quotes. See "Quote-Like Operators" in perlop.
5082
5083 qr/STRING/
5084 Regexp-like quote. See "Regexp Quote-Like Operators" in perlop.
5085
5086 quotemeta EXPR
5087 quotemeta
5088 Returns the value of EXPR with all the ASCII non-"word" characters
5089 backslashed. (That is, all ASCII characters not matching
5090 "/[A-Za-z_0-9]/" will be preceded by a backslash in the returned
5091 string, regardless of any locale settings.) This is the internal
5092 function implementing the "\Q" escape in double-quoted strings.
5093 (See below for the behavior on non-ASCII code points.)
5094
5095 If EXPR is omitted, uses $_.
5096
5097 quotemeta (and "\Q" ... "\E") are useful when interpolating strings
5098 into regular expressions, because by default an interpolated
5099 variable will be considered a mini-regular expression. For
5100 example:
5101
5102 my $sentence = 'The quick brown fox jumped over the lazy dog';
5103 my $substring = 'quick.*?fox';
5104 $sentence =~ s{$substring}{big bad wolf};
5105
5106 Will cause $sentence to become 'The big bad wolf jumped over...'.
5107
5108 On the other hand:
5109
5110 my $sentence = 'The quick brown fox jumped over the lazy dog';
5111 my $substring = 'quick.*?fox';
5112 $sentence =~ s{\Q$substring\E}{big bad wolf};
5113
5114 Or:
5115
5116 my $sentence = 'The quick brown fox jumped over the lazy dog';
5117 my $substring = 'quick.*?fox';
5118 my $quoted_substring = quotemeta($substring);
5119 $sentence =~ s{$quoted_substring}{big bad wolf};
5120
5121 Will both leave the sentence as is. Normally, when accepting
5122 literal string input from the user, "quotemeta" or "\Q" must be
5123 used.
5124
5125 Beware that if you put literal backslashes (those not inside
5126 interpolated variables) between "\Q" and "\E", double-quotish
5127 backslash interpolation may lead to confusing results. If you need
5128 to use literal backslashes within "\Q...\E", consult "Gory details
5129 of parsing quoted constructs" in perlop.
5130
5131 Because the result of "\Q STRING \E" has all metacharacters quoted,
5132 there is no way to insert a literal "$" or "@" inside a "\Q\E"
5133 pair. If protected by "\", "$" will be quoted to become "\\\$"; if
5134 not, it is interpreted as the start of an interpolated scalar.
5135
5136 In Perl v5.14, all non-ASCII characters are quoted in
5137 non-UTF-8-encoded strings, but not quoted in UTF-8 strings.
5138
5139 Starting in Perl v5.16, Perl adopted a Unicode-defined strategy for
5140 quoting non-ASCII characters; the quoting of ASCII characters is
5141 unchanged.
5142
5143 Also unchanged is the quoting of non-UTF-8 strings when outside the
5144 scope of a "use feature 'unicode_strings'", which is to quote all
5145 characters in the upper Latin1 range. This provides complete
5146 backwards compatibility for old programs which do not use Unicode.
5147 (Note that "unicode_strings" is automatically enabled within the
5148 scope of a "use v5.12" or greater.)
5149
5150 Within the scope of "use locale", all non-ASCII Latin1 code points
5151 are quoted whether the string is encoded as UTF-8 or not. As
5152 mentioned above, locale does not affect the quoting of ASCII-range
5153 characters. This protects against those locales where characters
5154 such as "|" are considered to be word characters.
5155
5156 Otherwise, Perl quotes non-ASCII characters using an adaptation
5157 from Unicode (see <https://www.unicode.org/reports/tr31/>). The
5158 only code points that are quoted are those that have any of the
5159 Unicode properties: Pattern_Syntax, Pattern_White_Space,
5160 White_Space, Default_Ignorable_Code_Point, or
5161 General_Category=Control.
5162
5163 Of these properties, the two important ones are Pattern_Syntax and
5164 Pattern_White_Space. They have been set up by Unicode for exactly
5165 this purpose of deciding which characters in a regular expression
5166 pattern should be quoted. No character that can be in an
5167 identifier has these properties.
5168
5169 Perl promises, that if we ever add regular expression pattern
5170 metacharacters to the dozen already defined ("\ | ( ) [ { ^ $ * + ?
5171 ."), that we will only use ones that have the Pattern_Syntax
5172 property. Perl also promises, that if we ever add characters that
5173 are considered to be white space in regular expressions (currently
5174 mostly affected by "/x"), they will all have the
5175 Pattern_White_Space property.
5176
5177 Unicode promises that the set of code points that have these two
5178 properties will never change, so something that is not quoted in
5179 v5.16 will never need to be quoted in any future Perl release.
5180 (Not all the code points that match Pattern_Syntax have actually
5181 had characters assigned to them; so there is room to grow, but they
5182 are quoted whether assigned or not. Perl, of course, would never
5183 use an unassigned code point as an actual metacharacter.)
5184
5185 Quoting characters that have the other 3 properties is done to
5186 enhance the readability of the regular expression and not because
5187 they actually need to be quoted for regular expression purposes
5188 (characters with the White_Space property are likely to be
5189 indistinguishable on the page or screen from those with the
5190 Pattern_White_Space property; and the other two properties contain
5191 non-printing characters).
5192
5193 rand EXPR
5194 rand
5195 Returns a random fractional number greater than or equal to 0 and
5196 less than the value of EXPR. (EXPR should be positive.) If EXPR
5197 is omitted, the value 1 is used. Currently EXPR with the value 0
5198 is also special-cased as 1 (this was undocumented before Perl 5.8.0
5199 and is subject to change in future versions of Perl).
5200 Automatically calls "srand" unless "srand" has already been called.
5201 See also "srand".
5202
5203 Apply "int" to the value returned by "rand" if you want random
5204 integers instead of random fractional numbers. For example,
5205
5206 int(rand(10))
5207
5208 returns a random integer between 0 and 9, inclusive.
5209
5210 (Note: If your rand function consistently returns numbers that are
5211 too large or too small, then your version of Perl was probably
5212 compiled with the wrong number of RANDBITS.)
5213
5214 "rand" is not cryptographically secure. You should not rely on it
5215 in security-sensitive situations. As of this writing, a number of
5216 third-party CPAN modules offer random number generators intended by
5217 their authors to be cryptographically secure, including:
5218 Data::Entropy, Crypt::Random, Math::Random::Secure, and
5219 Math::TrulyRandom.
5220
5221 read FILEHANDLE,SCALAR,LENGTH,OFFSET
5222 read FILEHANDLE,SCALAR,LENGTH
5223 Attempts to read LENGTH characters of data into variable SCALAR
5224 from the specified FILEHANDLE. Returns the number of characters
5225 actually read, 0 at end of file, or undef if there was an error (in
5226 the latter case $! is also set). SCALAR will be grown or shrunk so
5227 that the last character actually read is the last character of the
5228 scalar after the read.
5229
5230 An OFFSET may be specified to place the read data at some place in
5231 the string other than the beginning. A negative OFFSET specifies
5232 placement at that many characters counting backwards from the end
5233 of the string. A positive OFFSET greater than the length of SCALAR
5234 results in the string being padded to the required size with "\0"
5235 bytes before the result of the read is appended.
5236
5237 The call is implemented in terms of either Perl's or your system's
5238 native fread(3) library function, via the PerlIO layers applied to
5239 the handle. To get a true read(2) system call, see sysread.
5240
5241 Note the characters: depending on the status of the filehandle,
5242 either (8-bit) bytes or characters are read. By default, all
5243 filehandles operate on bytes, but for example if the filehandle has
5244 been opened with the ":utf8" I/O layer (see "open", and the open
5245 pragma), the I/O will operate on UTF8-encoded Unicode characters,
5246 not bytes. Similarly for the ":encoding" layer: in that case
5247 pretty much any characters can be read.
5248
5249 readdir DIRHANDLE
5250 Returns the next directory entry for a directory opened by
5251 "opendir". If used in list context, returns all the rest of the
5252 entries in the directory. If there are no more entries, returns
5253 the undefined value in scalar context and the empty list in list
5254 context.
5255
5256 If you're planning to filetest the return values out of a
5257 "readdir", you'd better prepend the directory in question.
5258 Otherwise, because we didn't "chdir" there, it would have been
5259 testing the wrong file.
5260
5261 opendir(my $dh, $some_dir) || die "Can't opendir $some_dir: $!";
5262 my @dots = grep { /^\./ && -f "$some_dir/$_" } readdir($dh);
5263 closedir $dh;
5264
5265 As of Perl 5.12 you can use a bare "readdir" in a "while" loop,
5266 which will set $_ on every iteration. If either a "readdir"
5267 expression or an explicit assignment of a "readdir" expression to a
5268 scalar is used as a "while"/"for" condition, then the condition
5269 actually tests for definedness of the expression's value, not for
5270 its regular truth value.
5271
5272 opendir(my $dh, $some_dir) || die "Can't open $some_dir: $!";
5273 while (readdir $dh) {
5274 print "$some_dir/$_\n";
5275 }
5276 closedir $dh;
5277
5278 To avoid confusing would-be users of your code who are running
5279 earlier versions of Perl with mysterious failures, put this sort of
5280 thing at the top of your file to signal that your code will work
5281 only on Perls of a recent vintage:
5282
5283 use v5.12; # so readdir assigns to $_ in a lone while test
5284
5285 readline EXPR
5286 readline
5287 Reads from the filehandle whose typeglob is contained in EXPR (or
5288 from *ARGV if EXPR is not provided). In scalar context, each call
5289 reads and returns the next line until end-of-file is reached,
5290 whereupon the subsequent call returns "undef". In list context,
5291 reads until end-of-file is reached and returns a list of lines.
5292 Note that the notion of "line" used here is whatever you may have
5293 defined with $/ (or $INPUT_RECORD_SEPARATOR in English). See "$/"
5294 in perlvar.
5295
5296 When $/ is set to "undef", when "readline" is in scalar context
5297 (i.e., file slurp mode), and when an empty file is read, it returns
5298 '' the first time, followed by "undef" subsequently.
5299
5300 This is the internal function implementing the "<EXPR>" operator,
5301 but you can use it directly. The "<EXPR>" operator is discussed in
5302 more detail in "I/O Operators" in perlop.
5303
5304 my $line = <STDIN>;
5305 my $line = readline(STDIN); # same thing
5306
5307 If "readline" encounters an operating system error, $! will be set
5308 with the corresponding error message. It can be helpful to check
5309 $! when you are reading from filehandles you don't trust, such as a
5310 tty or a socket. The following example uses the operator form of
5311 "readline" and dies if the result is not defined.
5312
5313 while ( ! eof($fh) ) {
5314 defined( $_ = readline $fh ) or die "readline failed: $!";
5315 ...
5316 }
5317
5318 Note that you can't handle "readline" errors that way with the
5319 "ARGV" filehandle. In that case, you have to open each element of
5320 @ARGV yourself since "eof" handles "ARGV" differently.
5321
5322 foreach my $arg (@ARGV) {
5323 open(my $fh, $arg) or warn "Can't open $arg: $!";
5324
5325 while ( ! eof($fh) ) {
5326 defined( $_ = readline $fh )
5327 or die "readline failed for $arg: $!";
5328 ...
5329 }
5330 }
5331
5332 Like the "<EXPR>" operator, if a "readline" expression is used as
5333 the condition of a "while" or "for" loop, then it will be
5334 implicitly assigned to $_. If either a "readline" expression or an
5335 explicit assignment of a "readline" expression to a scalar is used
5336 as a "while"/"for" condition, then the condition actually tests for
5337 definedness of the expression's value, not for its regular truth
5338 value.
5339
5340 readlink EXPR
5341 readlink
5342 Returns the value of a symbolic link, if symbolic links are
5343 implemented. If not, raises an exception. If there is a system
5344 error, returns the undefined value and sets $! (errno). If EXPR is
5345 omitted, uses $_.
5346
5347 Portability issues: "readlink" in perlport.
5348
5349 readpipe EXPR
5350 readpipe
5351 EXPR is executed as a system command. The collected standard
5352 output of the command is returned. In scalar context, it comes
5353 back as a single (potentially multi-line) string. In list context,
5354 returns a list of lines (however you've defined lines with $/ (or
5355 $INPUT_RECORD_SEPARATOR in English)). This is the internal
5356 function implementing the "qx/EXPR/" operator, but you can use it
5357 directly. The "qx/EXPR/" operator is discussed in more detail in
5358 ""qx/STRING/"" in perlop. If EXPR is omitted, uses $_.
5359
5360 recv SOCKET,SCALAR,LENGTH,FLAGS
5361 Receives a message on a socket. Attempts to receive LENGTH
5362 characters of data into variable SCALAR from the specified SOCKET
5363 filehandle. SCALAR will be grown or shrunk to the length actually
5364 read. Takes the same flags as the system call of the same name.
5365 Returns the address of the sender if SOCKET's protocol supports
5366 this; returns an empty string otherwise. If there's an error,
5367 returns the undefined value. This call is actually implemented in
5368 terms of the recvfrom(2) system call. See "UDP: Message Passing"
5369 in perlipc for examples.
5370
5371 Note that if the socket has been marked as ":utf8", "recv" will
5372 throw an exception. The :encoding(...) layer implicitly introduces
5373 the ":utf8" layer. See "binmode".
5374
5375 redo LABEL
5376 redo EXPR
5377 redo
5378 The "redo" command restarts the loop block without evaluating the
5379 conditional again. The "continue" block, if any, is not executed.
5380 If the LABEL is omitted, the command refers to the innermost
5381 enclosing loop. The "redo EXPR" form, available starting in Perl
5382 5.18.0, allows a label name to be computed at run time, and is
5383 otherwise identical to "redo LABEL". Programs that want to lie to
5384 themselves about what was just input normally use this command:
5385
5386 # a simpleminded Pascal comment stripper
5387 # (warning: assumes no { or } in strings)
5388 LINE: while (<STDIN>) {
5389 while (s|({.*}.*){.*}|$1 |) {}
5390 s|{.*}| |;
5391 if (s|{.*| |) {
5392 my $front = $_;
5393 while (<STDIN>) {
5394 if (/}/) { # end of comment?
5395 s|^|$front\{|;
5396 redo LINE;
5397 }
5398 }
5399 }
5400 print;
5401 }
5402
5403 "redo" cannot return a value from a block that typically returns a
5404 value, such as "eval {}", "sub {}", or "do {}". It will perform its
5405 flow control behavior, which precludes any return value. It should
5406 not be used to exit a "grep" or "map" operation.
5407
5408 Note that a block by itself is semantically identical to a loop
5409 that executes once. Thus "redo" inside such a block will
5410 effectively turn it into a looping construct.
5411
5412 See also "continue" for an illustration of how "last", "next", and
5413 "redo" work.
5414
5415 Unlike most named operators, this has the same precedence as
5416 assignment. It is also exempt from the looks-like-a-function rule,
5417 so "redo ("foo")."bar"" will cause "bar" to be part of the argument
5418 to "redo".
5419
5420 ref EXPR
5421 ref Examines the value of EXPR, expecting it to be a reference, and
5422 returns a string giving information about the reference and the
5423 type of referent. If EXPR is not specified, $_ will be used.
5424
5425 If the operand is not a reference, then the empty string will be
5426 returned. An empty string will only be returned in this situation.
5427 "ref" is often useful to just test whether a value is a reference,
5428 which can be done by comparing the result to the empty string. It
5429 is a common mistake to use the result of "ref" directly as a truth
5430 value: this goes wrong because 0 (which is false) can be returned
5431 for a reference.
5432
5433 If the operand is a reference to a blessed object, then the name of
5434 the class into which the referent is blessed will be returned.
5435 "ref" doesn't care what the physical type of the referent is;
5436 blessing takes precedence over such concerns. Beware that exact
5437 comparison of "ref" results against a class name doesn't perform a
5438 class membership test: a class's members also include objects
5439 blessed into subclasses, for which "ref" will return the name of
5440 the subclass. Also beware that class names can clash with the
5441 built-in type names (described below).
5442
5443 If the operand is a reference to an unblessed object, then the
5444 return value indicates the type of object. If the unblessed
5445 referent is not a scalar, then the return value will be one of the
5446 strings "ARRAY", "HASH", "CODE", "FORMAT", or "IO", indicating only
5447 which kind of object it is. If the unblessed referent is a scalar,
5448 then the return value will be one of the strings "SCALAR",
5449 "VSTRING", "REF", "GLOB", "LVALUE", or "REGEXP", depending on the
5450 kind of value the scalar currently has. But note that "qr//"
5451 scalars are created already blessed, so "ref qr/.../" will likely
5452 return "Regexp". Beware that these built-in type names can also be
5453 used as class names, so "ref" returning one of these names doesn't
5454 unambiguously indicate that the referent is of the kind to which
5455 the name refers.
5456
5457 The ambiguity between built-in type names and class names
5458 significantly limits the utility of "ref". For unambiguous
5459 information, use Scalar::Util::blessed() for information about
5460 blessing, and Scalar::Util::reftype() for information about
5461 physical types. Use the "isa" method for class membership tests,
5462 though one must be sure of blessedness before attempting a method
5463 call. Alternatively, the "isa" operator can test class membership
5464 without checking blessedness first.
5465
5466 See also perlref and perlobj.
5467
5468 rename OLDNAME,NEWNAME
5469 Changes the name of a file; an existing file NEWNAME will be
5470 clobbered. Returns true for success; on failure returns false and
5471 sets $!.
5472
5473 Behavior of this function varies wildly depending on your system
5474 implementation. For example, it will usually not work across file
5475 system boundaries, even though the system mv command sometimes
5476 compensates for this. Other restrictions include whether it works
5477 on directories, open files, or pre-existing files. Check perlport
5478 and either the rename(2) manpage or equivalent system documentation
5479 for details.
5480
5481 For a platform independent "move" function look at the File::Copy
5482 module.
5483
5484 Portability issues: "rename" in perlport.
5485
5486 require VERSION
5487 require EXPR
5488 require
5489 Demands a version of Perl specified by VERSION, or demands some
5490 semantics specified by EXPR or by $_ if EXPR is not supplied.
5491
5492 VERSION may be either a literal such as v5.24.1, which will be
5493 compared to $^V (or $PERL_VERSION in English), or a numeric
5494 argument of the form 5.024001, which will be compared to $]. An
5495 exception is raised if VERSION is greater than the version of the
5496 current Perl interpreter. Compare with "use", which can do a
5497 similar check at compile time.
5498
5499 Specifying VERSION as a numeric argument of the form 5.024001
5500 should generally be avoided as older less readable syntax compared
5501 to v5.24.1. Before perl 5.8.0 (released in 2002), the more verbose
5502 numeric form was the only supported syntax, which is why you might
5503 see it in older code.
5504
5505 require v5.24.1; # run time version check
5506 require 5.24.1; # ditto
5507 require 5.024_001; # ditto; older syntax compatible
5508 with perl 5.6
5509
5510 Otherwise, "require" demands that a library file be included if it
5511 hasn't already been included. The file is included via the do-FILE
5512 mechanism, which is essentially just a variety of "eval" with the
5513 caveat that lexical variables in the invoking script will be
5514 invisible to the included code. If it were implemented in pure
5515 Perl, it would have semantics similar to the following:
5516
5517 use Carp 'croak';
5518 use version;
5519
5520 sub require {
5521 my ($filename) = @_;
5522 if ( my $version = eval { version->parse($filename) } ) {
5523 if ( $version > $^V ) {
5524 my $vn = $version->normal;
5525 croak "Perl $vn required--this is only $^V, stopped";
5526 }
5527 return 1;
5528 }
5529
5530 if (exists $INC{$filename}) {
5531 return 1 if $INC{$filename};
5532 croak "Compilation failed in require";
5533 }
5534
5535 local $INC;
5536 # this type of loop lets a hook overwrite $INC if they wish
5537 for($INC = 0; $INC < @INC; $INC++) {
5538 my $prefix = $INC[$INC];
5539 if (!defined $prefix) {
5540 next;
5541 }
5542 if (ref $prefix) {
5543 #... do other stuff - see text below ....
5544 }
5545 # (see text below about possible appending of .pmc
5546 # suffix to $filename)
5547 my $realfilename = "$prefix/$filename";
5548 next if ! -e $realfilename || -d _ || -b _;
5549 $INC{$filename} = $realfilename;
5550 my $result = do($realfilename);
5551 # but run in caller's namespace
5552
5553 if (!defined $result) {
5554 $INC{$filename} = undef;
5555 croak $@ ? "$@Compilation failed in require"
5556 : "Can't locate $filename: $!\n";
5557 }
5558 if (!$result) {
5559 delete $INC{$filename};
5560 croak "$filename did not return true value";
5561 }
5562 $! = 0;
5563 return $result;
5564 }
5565 croak "Can't locate $filename in \@INC ...";
5566 }
5567
5568 Note that the file will not be included twice under the same
5569 specified name.
5570
5571 Historically the file must return true as the last statement to
5572 indicate successful execution of any initialization code, so it's
5573 customary to end such a file with "1;" unless you're sure it'll
5574 return true otherwise. But it's better just to put the "1;", in
5575 case you add more statements. As of 5.37.6 this requirement may be
5576 avoided by enabling the 'module_true' feature, which is enabled by
5577 default in modern version bundles. Thus code with "use v5.37;" no
5578 longer needs to concern itself with this issue. See feature for
5579 more details. Note that this affects the compilation unit within
5580 which the feature is used, and using it before requiring a module
5581 will not change the behavior of existing modules that do not
5582 themselves also use it.
5583
5584 If EXPR is a bareword, "require" assumes a .pm extension and
5585 replaces "::" with "/" in the filename for you, to make it easy to
5586 load standard modules. This form of loading of modules does not
5587 risk altering your namespace, however it will autovivify the stash
5588 for the required module.
5589
5590 In other words, if you try this:
5591
5592 require Foo::Bar; # a splendid bareword
5593
5594 The require function will actually look for the Foo/Bar.pm file in
5595 the directories specified in the @INC array, and it will autovivify
5596 the "Foo::Bar::" stash at compile time.
5597
5598 But if you try this:
5599
5600 my $class = 'Foo::Bar';
5601 require $class; # $class is not a bareword
5602 #or
5603 require "Foo::Bar"; # not a bareword because of the ""
5604
5605 The require function will look for the Foo::Bar file in the @INC
5606 array and will complain about not finding Foo::Bar there. In this
5607 case you can do:
5608
5609 eval "require $class";
5610
5611 or you could do
5612
5613 require "Foo/Bar.pm";
5614
5615 Neither of these forms will autovivify any stashes at compile time
5616 and only have run time effects.
5617
5618 Now that you understand how "require" looks for files with a
5619 bareword argument, there is a little extra functionality going on
5620 behind the scenes. Before "require" looks for a .pm extension, it
5621 will first look for a similar filename with a .pmc extension. If
5622 this file is found, it will be loaded in place of any file ending
5623 in a .pm extension. This applies to both the explicit "require
5624 "Foo/Bar.pm";" form and the "require Foo::Bar;" form.
5625
5626 You can also insert hooks into the import facility by putting Perl
5627 coderefs or objects directly into the @INC array. There are two
5628 types of hooks, INC filters, and INCDIR hooks, and there are three
5629 forms of representing a hook: subroutine references, array
5630 references, and blessed objects.
5631
5632 Subroutine references are the simplest case. When the inclusion
5633 system walks through @INC and encounters a subroutine, unless this
5634 subroutine is blessed and supports an INCDIR hook this subroutine
5635 will be assumed to be an INC hook will be called with two
5636 parameters, the first a reference to itself, and the second the
5637 name of the file to be included (e.g., Foo/Bar.pm). The subroutine
5638 should return either nothing or else a list of up to four values in
5639 the following order:
5640
5641 1. A reference to a scalar, containing any initial source code to
5642 prepend to the file or generator output.
5643
5644 2. A filehandle, from which the file will be read.
5645
5646 3. A reference to a subroutine. If there is no filehandle
5647 (previous item), then this subroutine is expected to generate
5648 one line of source code per call, writing the line into $_ and
5649 returning 1, then finally at end of file returning 0. If there
5650 is a filehandle, then the subroutine will be called to act as a
5651 simple source filter, with the line as read in $_. Again,
5652 return 1 for each valid line, and 0 after all lines have been
5653 returned. For historical reasons the subroutine will receive a
5654 meaningless argument (in fact always the numeric value zero) as
5655 $_[0].
5656
5657 4. Optional state for the subroutine. The state is passed in as
5658 $_[1].
5659
5660 "AUTOLOAD" cannot be used to resolve the "INCDIR" method, "INC" is
5661 checked first, and "AUTOLOAD" would resolve that.
5662
5663 If an empty list, "undef", or nothing that matches the first 3
5664 values above is returned, then "require" looks at the remaining
5665 elements of @INC. Note that this filehandle must be a real
5666 filehandle (strictly a typeglob or reference to a typeglob, whether
5667 blessed or unblessed); tied filehandles will be ignored and
5668 processing will stop there.
5669
5670 If the hook is an object, it should provide an "INC" or "INCDIR"
5671 method that will be called as above, the first parameter being the
5672 object itself. If it does not provide either method, and the object
5673 is not CODE ref then an exception will be thrown, otherwise it will
5674 simply be executed like an unblessed CODE ref would. Note that you
5675 must fully qualify the method name when you declare an "INC" sub
5676 (unlike the "INCDIR" sub), as the unqualified symbol "INC" is
5677 always forced into package "main". Here is a typical code layout
5678 for an "INC" hook:
5679
5680 # In Foo.pm
5681 package Foo;
5682 sub new { ... }
5683 sub Foo::INC {
5684 my ($self, $filename) = @_;
5685 ...
5686 }
5687
5688 # In the main program
5689 push @INC, Foo->new(...);
5690
5691 If the hook is an array reference, its first element must be a
5692 subroutine reference or an object as described above. When the
5693 first element is an object that supports an "INC" or "INCDIR"
5694 method then the method will be called with the object as the first
5695 argument, the filename requested as the second, and the hook array
5696 reference as the the third. When the first element is a subroutine
5697 then it will be called with the array as the first argument, and
5698 the filename as the second, no third parameter will be passed in.
5699 In both forms you can modify the contents of the array to provide
5700 state between calls, or whatever you like.
5701
5702 In other words, you can write:
5703
5704 push @INC, \&my_sub;
5705 sub my_sub {
5706 my ($coderef, $filename) = @_; # $coderef is \&my_sub
5707 ...
5708 }
5709
5710 or:
5711
5712 push @INC, [ \&my_sub, $x, $y, ... ];
5713 sub my_sub {
5714 my ($arrayref, $filename) = @_;
5715 # Retrieve $x, $y, ...
5716 my (undef, @parameters) = @$arrayref;
5717 ...
5718 }
5719
5720 or:
5721
5722 push @INC, [ HookObj->new(), $x, $y, ... ];
5723 sub HookObj::INC {
5724 my ($self, $filename, $arrayref)= @_;
5725 my (undef, @parameters) = @$arrayref;
5726 ...
5727 }
5728
5729 These hooks are also permitted to set the %INC entry corresponding
5730 to the files they have loaded. See "%INC" in perlvar. Should an
5731 "INC" hook not do this then perl will set the %INC entry to be the
5732 hook reference itself.
5733
5734 A hook may also be used to rewrite the @INC array. While this might
5735 sound strange, there are situations where it can be very useful to
5736 do this. Such hooks usually just return undef and do not mix
5737 filtering and @INC modifications. While in older versions of perl
5738 having a hook modify @INC was fraught with issues and could even
5739 result in segfaults or assert failures, as of 5.37.7 the logic has
5740 been made much more robust and the hook now has control over the
5741 loop iteration if it wishes to do so.
5742
5743 There is a now a facility to control the iterator for the @INC
5744 array traversal that is performed during require. The $INC variable
5745 will be initialized with the index of the currently executing hook.
5746 Once the hook returns the next slot in @INC that will be checked
5747 will be the integer successor of value in $INC (or -1 if it is
5748 undef). For example the following code
5749
5750 push @INC, sub {
5751 splice @INC, $INC, 1; # remove this hook from @INC
5752 unshift @INC, sub { warn "A" };
5753 undef $INC; # reset the $INC iterator so we
5754 # execute the newly installed sub
5755 # immediately.
5756 };
5757
5758 would install a sub into @INC that when executed as a hook (by for
5759 instance a require of a file that does not exist), the hook will
5760 splice itself out of @INC, and add a new sub to the front that will
5761 warn whenever someone does a require operation that requires an
5762 @INC search, and then immediately execute that hook.
5763
5764 Prior to 5.37.7, there was no way to cause perl to use the newly
5765 installed hook immediately, or to inspect any changed items in @INC
5766 to the left of the iterator, and so the warning would only be
5767 generated on the second call to require. In more recent perl the
5768 presence of the last statement which undefines $INC will cause perl
5769 to restart the traversal of the @INC array at the beginning and
5770 execute the newly installed sub immediately.
5771
5772 Whatever value $INC held, if any, will be restored at the end of
5773 the require. Any changes made to $INC during the lifetime of the
5774 hook will be unrolled after the hook exits, and its value only has
5775 meaning immediately after execution of the hook, thus setting $INC
5776 to some value prior to executing a "require" will have no effect on
5777 how the require executes at all.
5778
5779 As of 5.37.7 @INC values of undef will be silently ignored.
5780
5781 The function require() is difficult to wrap properly. Many modules
5782 consult the stack to find information about their caller, and
5783 injecting a new stack frame by wrapping require() often breaks
5784 things. Nevertheless it can be very helpful to have the ability to
5785 perform actions before and after a "require", for instance for
5786 trace utilities like "Devel::TraceUse" or to measure time to load
5787 and the memory consumption of the require graph. Because of the
5788 difficulties in safely creating a require() wrapper in 5.37.10 we
5789 introduced a new mechanism.
5790
5791 As of 5.37.10, prior to any other actions it performs, "require"
5792 will check if "${^HOOK}{require__before}" contains a coderef, and
5793 if it does it will be called with the filename form of the item
5794 being loaded. The hook may modify $_[0] to load a different
5795 filename, or it may throw a fatal exception to cause the require to
5796 fail, which will be treated as though the required code itself had
5797 thrown an exception.
5798
5799 The "${^HOOK}{require__before}" hook may return a code reference,
5800 in which case the code reference will be executed (in an eval with
5801 the filname as a parameter) after the require completes. It will be
5802 executed regardless of how the compilation completed, and even if
5803 the require throws a fatal exception. The function may consult
5804 %INC to determine if the require failed or not. For instance the
5805 following code will print some diagnostics before and after every
5806 "require" statement. The example also includes logic to chain the
5807 signal, so that multiple signals can cooperate. Well behaved
5808 "${^HOOK}{require__before}" handlers should always take this into
5809 account.
5810
5811 {
5812 use Scalar::Util qw(reftype);
5813 my $old_hook = ${^HOOK}{require__before};
5814 local ${^HOOK}{require__before} = sub {
5815 my ($name) = @_;
5816 my $old_hook_ret;
5817 $old_hook_ret = $old_hook->($name) if $old_hook;
5818 warn "Requiring: $name\n";
5819 return sub {
5820 $old_hook_ret->() if ref($old_hook_ret)
5821 && reftype($old_hook_ret) eq "CODE";
5822 warn sprintf "Finished requiring %s: %s\n",
5823 $name, $INC{$name} ? "loaded" :"failed";
5824 };
5825 };
5826 require Whatever;
5827 }
5828
5829 This hook executes for ALL "require" statements, unlike "INC" and
5830 "INCDIR" hooks, which are only executed for relative file names,
5831 and it executes first before any other special behaviour inside of
5832 require. Note that the initial hook in "${^HOOK}{require__before}"
5833 is *not* executed inside of an eval, and throwing an exception will
5834 stop further processing, but the after hook it may return is
5835 executed inside of an eval, and any exceptions it throws will be
5836 silently ignored. This is because it executes inside of the scope
5837 cleanup logic that is triggered after the require completes, and an
5838 exception at this time would not stop the module from being loaded,
5839 etc.
5840
5841 There is a similar hook that fires after require completes,
5842 "${^HOOK}{require__after}", which will be called after each require
5843 statement completes, either via an exception or successfully. It
5844 will be called with the filename of the most recently executed
5845 require statement. It is executed in an eval, and will not in any
5846 way affect execution.
5847
5848 For a yet-more-powerful import facility built around "require", see
5849 "use" and perlmod.
5850
5851 reset EXPR
5852 reset
5853 Generally used in a "continue" block at the end of a loop to clear
5854 variables and reset "m?pattern?" searches so that they work again.
5855 The expression is interpreted as a list of single characters
5856 (hyphens allowed for ranges). All variables (scalars, arrays, and
5857 hashes) in the current package beginning with one of those letters
5858 are reset to their pristine state. If the expression is omitted,
5859 one-match searches ("m?pattern?") are reset to match again. Only
5860 resets variables or searches in the current package. Always
5861 returns 1. Examples:
5862
5863 reset 'X'; # reset all X variables
5864 reset 'a-z'; # reset lower case variables
5865 reset; # just reset m?one-time? searches
5866
5867 Resetting "A-Z" is not recommended because you'll wipe out your
5868 @ARGV and @INC arrays and your %ENV hash.
5869
5870 Resets only package variables; lexical variables are unaffected,
5871 but they clean themselves up on scope exit anyway, so you'll
5872 probably want to use them instead. See "my".
5873
5874 return EXPR
5875 return
5876 Returns from a subroutine, "eval", "do FILE", "sort" block or regex
5877 eval block (but not a "grep", "map", or "do BLOCK" block) with the
5878 value given in EXPR. Evaluation of EXPR may be in list, scalar, or
5879 void context, depending on how the return value will be used, and
5880 the context may vary from one execution to the next (see
5881 "wantarray"). If no EXPR is given, returns an empty list in list
5882 context, the undefined value in scalar context, and (of course)
5883 nothing at all in void context.
5884
5885 (In the absence of an explicit "return", a subroutine, "eval", or
5886 "do FILE" automatically returns the value of the last expression
5887 evaluated.)
5888
5889 Unlike most named operators, this is also exempt from the looks-
5890 like-a-function rule, so "return ("foo")."bar"" will cause "bar" to
5891 be part of the argument to "return".
5892
5893 reverse LIST
5894 In list context, returns a list value consisting of the elements of
5895 LIST in the opposite order. In scalar context, concatenates the
5896 elements of LIST and returns a string value with all characters in
5897 the opposite order.
5898
5899 print join(", ", reverse "world", "Hello"); # Hello, world
5900
5901 print scalar reverse "dlrow ,", "olleH"; # Hello, world
5902
5903 Used without arguments in scalar context, "reverse" reverses $_.
5904
5905 $_ = "dlrow ,olleH";
5906 print reverse; # No output, list context
5907 print scalar reverse; # Hello, world
5908
5909 Note that reversing an array to itself (as in "@a = reverse @a")
5910 will preserve non-existent elements whenever possible; i.e., for
5911 non-magical arrays or for tied arrays with "EXISTS" and "DELETE"
5912 methods.
5913
5914 This operator is also handy for inverting a hash, although there
5915 are some caveats. If a value is duplicated in the original hash,
5916 only one of those can be represented as a key in the inverted hash.
5917 Also, this has to unwind one hash and build a whole new one, which
5918 may take some time on a large hash, such as from a DBM file.
5919
5920 my %by_name = reverse %by_address; # Invert the hash
5921
5922 rewinddir DIRHANDLE
5923 Sets the current position to the beginning of the directory for the
5924 "readdir" routine on DIRHANDLE.
5925
5926 Portability issues: "rewinddir" in perlport.
5927
5928 rindex STR,SUBSTR,POSITION
5929 rindex STR,SUBSTR
5930 Works just like "index" except that it returns the position of the
5931 last occurrence of SUBSTR in STR. If POSITION is specified,
5932 returns the last occurrence beginning at or before that position.
5933
5934 rmdir FILENAME
5935 rmdir
5936 Deletes the directory specified by FILENAME if that directory is
5937 empty. If it succeeds it returns true; otherwise it returns false
5938 and sets $! (errno). If FILENAME is omitted, uses $_.
5939
5940 To remove a directory tree recursively ("rm -rf" on Unix) look at
5941 the "rmtree" function of the File::Path module.
5942
5943 s///
5944 The substitution operator. See "Regexp Quote-Like Operators" in
5945 perlop.
5946
5947 say FILEHANDLE LIST
5948 say FILEHANDLE
5949 say LIST
5950 say Just like "print", but implicitly appends a newline at the end of
5951 the LIST instead of any value "$\" might have. To use FILEHANDLE
5952 without a LIST to print the contents of $_ to it, you must use a
5953 bareword filehandle like "FH", not an indirect one like $fh.
5954
5955 "say" is available only if the "say" feature is enabled or if it is
5956 prefixed with "CORE::". The "say" feature is enabled automatically
5957 with a "use v5.10" (or higher) declaration in the current scope.
5958
5959 scalar EXPR
5960 Forces EXPR to be interpreted in scalar context and returns the
5961 value of EXPR.
5962
5963 my @counts = ( scalar @a, scalar @b, scalar @c );
5964
5965 There is no equivalent operator to force an expression to be
5966 interpolated in list context because in practice, this is never
5967 needed. If you really wanted to do so, however, you could use the
5968 construction "@{[ (some expression) ]}", but usually a simple
5969 "(some expression)" suffices.
5970
5971 Because "scalar" is a unary operator, if you accidentally use a
5972 parenthesized list for the EXPR, this behaves as a scalar comma
5973 expression, evaluating all but the last element in void context and
5974 returning the final element evaluated in scalar context. This is
5975 seldom what you want.
5976
5977 The following single statement:
5978
5979 print uc(scalar(foo(), $bar)), $baz;
5980
5981 is the moral equivalent of these two:
5982
5983 foo();
5984 print(uc($bar), $baz);
5985
5986 See perlop for more details on unary operators and the comma
5987 operator, and perldata for details on evaluating a hash in scalar
5988 context.
5989
5990 seek FILEHANDLE,POSITION,WHENCE
5991 Sets FILEHANDLE's position, just like the fseek(3) call of C
5992 "stdio". FILEHANDLE may be an expression whose value gives the
5993 name of the filehandle. The values for WHENCE are 0 to set the new
5994 position in bytes to POSITION; 1 to set it to the current position
5995 plus POSITION; and 2 to set it to EOF plus POSITION, typically
5996 negative. For WHENCE you may use the constants "SEEK_SET",
5997 "SEEK_CUR", and "SEEK_END" (start of the file, current position,
5998 end of the file) from the Fcntl module. Returns 1 on success,
5999 false otherwise.
6000
6001 Note the emphasis on bytes: even if the filehandle has been set to
6002 operate on characters (for example using the :encoding(UTF-8) I/O
6003 layer), the "seek", "tell", and "sysseek" family of functions use
6004 byte offsets, not character offsets, because seeking to a character
6005 offset would be very slow in a UTF-8 file.
6006
6007 If you want to position the file for "sysread" or "syswrite", don't
6008 use "seek", because buffering makes its effect on the file's read-
6009 write position unpredictable and non-portable. Use "sysseek"
6010 instead.
6011
6012 Due to the rules and rigors of ANSI C, on some systems you have to
6013 do a seek whenever you switch between reading and writing. Amongst
6014 other things, this may have the effect of calling stdio's
6015 clearerr(3). A WHENCE of 1 ("SEEK_CUR") is useful for not moving
6016 the file position:
6017
6018 seek($fh, 0, 1);
6019
6020 This is also useful for applications emulating "tail -f". Once you
6021 hit EOF on your read and then sleep for a while, you (probably)
6022 have to stick in a dummy "seek" to reset things. The "seek"
6023 doesn't change the position, but it does clear the end-of-file
6024 condition on the handle, so that the next "readline FILE" makes
6025 Perl try again to read something. (We hope.)
6026
6027 If that doesn't work (some I/O implementations are particularly
6028 cantankerous), you might need something like this:
6029
6030 for (;;) {
6031 for ($curpos = tell($fh); $_ = readline($fh);
6032 $curpos = tell($fh)) {
6033 # search for some stuff and put it into files
6034 }
6035 sleep($for_a_while);
6036 seek($fh, $curpos, 0);
6037 }
6038
6039 seekdir DIRHANDLE,POS
6040 Sets the current position for the "readdir" routine on DIRHANDLE.
6041 POS must be a value returned by "telldir". "seekdir" also has the
6042 same caveats about possible directory compaction as the
6043 corresponding system library routine.
6044
6045 select FILEHANDLE
6046 select
6047 Returns the currently selected filehandle. If FILEHANDLE is
6048 supplied, sets the new current default filehandle for output. This
6049 has two effects: first, a "write", "print", or "say" without a
6050 filehandle default to this FILEHANDLE. Second, references to
6051 variables related to output will refer to this output channel.
6052
6053 For example, to set the top-of-form format for more than one output
6054 channel, you might do the following:
6055
6056 select(REPORT1);
6057 $^ = 'report1_top';
6058 select(REPORT2);
6059 $^ = 'report2_top';
6060
6061 FILEHANDLE may be an expression whose value gives the name of the
6062 actual filehandle. Thus:
6063
6064 my $oldfh = select(STDERR); $| = 1; select($oldfh);
6065
6066 Some programmers may prefer to think of filehandles as objects with
6067 methods, preferring to write the last example as:
6068
6069 STDERR->autoflush(1);
6070
6071 (Prior to Perl version 5.14, you have to "use IO::Handle;"
6072 explicitly first.)
6073
6074 Whilst you can use "select" to temporarily "capture" the output of
6075 "print" like this:
6076
6077 {
6078 my $old_handle = select $new_handle;
6079
6080 # This goes to $new_handle:
6081 print "ok 1\n";
6082 ...
6083
6084 select $old_handle;
6085 }
6086
6087 you might find it easier to localize the typeglob instead:
6088
6089 {
6090 local *STDOUT = $new_handle;
6091
6092 print "ok 1\n";
6093 ...
6094 }
6095
6096 The two are not exactly equivalent, but the latter might be clearer
6097 and will restore STDOUT if the wrapped code dies. The difference
6098 is that in the former, the original STDOUT can still be accessed by
6099 explicitly using it in a "print" statement (as "print STDOUT ..."),
6100 whereas in the latter the meaning of the STDOUT handle itself has
6101 temporarily been changed.
6102
6103 Portability issues: "select" in perlport.
6104
6105 select RBITS,WBITS,EBITS,TIMEOUT
6106 This calls the select(2) syscall with the bit masks specified,
6107 which can be constructed using "fileno" and "vec", along these
6108 lines:
6109
6110 my $rin = my $win = my $ein = '';
6111 vec($rin, fileno(STDIN), 1) = 1;
6112 vec($win, fileno(STDOUT), 1) = 1;
6113 $ein = $rin | $win;
6114
6115 If you want to select on many filehandles, you may wish to write a
6116 subroutine like this:
6117
6118 sub fhbits {
6119 my @fhlist = @_;
6120 my $bits = "";
6121 for my $fh (@fhlist) {
6122 vec($bits, fileno($fh), 1) = 1;
6123 }
6124 return $bits;
6125 }
6126 my $rin = fhbits(\*STDIN, $tty, $mysock);
6127
6128 The usual idiom is:
6129
6130 my ($nfound, $timeleft) =
6131 select(my $rout = $rin, my $wout = $win, my $eout = $ein,
6132 $timeout);
6133
6134 or to block until something becomes ready just do this
6135
6136 my $nfound =
6137 select(my $rout = $rin, my $wout = $win, my $eout = $ein, undef);
6138
6139 Most systems do not bother to return anything useful in $timeleft,
6140 so calling "select" in scalar context just returns $nfound.
6141
6142 Any of the bit masks can also be "undef". The timeout, if
6143 specified, is in seconds, which may be fractional. Note: not all
6144 implementations are capable of returning the $timeleft. If not,
6145 they always return $timeleft equal to the supplied $timeout.
6146
6147 You can effect a sleep of 250 milliseconds this way:
6148
6149 select(undef, undef, undef, 0.25);
6150
6151 Note that whether "select" gets restarted after signals (say,
6152 SIGALRM) is implementation-dependent. See also perlport for notes
6153 on the portability of "select".
6154
6155 On error, "select" behaves just like select(2): it returns -1 and
6156 sets $!.
6157
6158 On some Unixes, select(2) may report a socket file descriptor as
6159 "ready for reading" even when no data is available, and thus any
6160 subsequent "read" would block. This can be avoided if you always
6161 use "O_NONBLOCK" on the socket. See select(2) and fcntl(2) for
6162 further details.
6163
6164 The standard "IO::Select" module provides a user-friendlier
6165 interface to "select", mostly because it does all the bit-mask work
6166 for you.
6167
6168 WARNING: One should not attempt to mix buffered I/O (like "read" or
6169 "readline") with "select", except as permitted by POSIX, and even
6170 then only on POSIX systems. You have to use "sysread" instead.
6171
6172 Portability issues: "select" in perlport.
6173
6174 semctl ID,SEMNUM,CMD,ARG
6175 Calls the System V IPC function semctl(2). You'll probably have to
6176 say
6177
6178 use IPC::SysV;
6179
6180 first to get the correct constant definitions. If CMD is IPC_STAT
6181 or GETALL, then ARG must be a variable that will hold the returned
6182 semid_ds structure or semaphore value array. Returns like "ioctl":
6183 the undefined value for error, ""0 but true"" for zero, or the
6184 actual return value otherwise. The ARG must consist of a vector of
6185 native short integers, which may be created with
6186 "pack("s!",(0)x$nsem)". See also "SysV IPC" in perlipc and the
6187 documentation for "IPC::SysV" and "IPC::Semaphore".
6188
6189 Portability issues: "semctl" in perlport.
6190
6191 semget KEY,NSEMS,FLAGS
6192 Calls the System V IPC function semget(2). Returns the semaphore
6193 id, or the undefined value on error. See also "SysV IPC" in
6194 perlipc and the documentation for "IPC::SysV" and "IPC::Semaphore".
6195
6196 Portability issues: "semget" in perlport.
6197
6198 semop KEY,OPSTRING
6199 Calls the System V IPC function semop(2) for semaphore operations
6200 such as signalling and waiting. OPSTRING must be a packed array of
6201 semop structures. Each semop structure can be generated with
6202 "pack("s!3", $semnum, $semop, $semflag)". The length of OPSTRING
6203 implies the number of semaphore operations. Returns true if
6204 successful, false on error. As an example, the following code
6205 waits on semaphore $semnum of semaphore id $semid:
6206
6207 my $semop = pack("s!3", $semnum, -1, 0);
6208 die "Semaphore trouble: $!\n" unless semop($semid, $semop);
6209
6210 To signal the semaphore, replace -1 with 1. See also "SysV IPC" in
6211 perlipc and the documentation for "IPC::SysV" and "IPC::Semaphore".
6212
6213 Portability issues: "semop" in perlport.
6214
6215 send SOCKET,MSG,FLAGS,TO
6216 send SOCKET,MSG,FLAGS
6217 Sends a message on a socket. Attempts to send the scalar MSG to
6218 the SOCKET filehandle. Takes the same flags as the system call of
6219 the same name. On unconnected sockets, you must specify a
6220 destination to send to, in which case it does a sendto(2) syscall.
6221 Returns the number of characters sent, or the undefined value on
6222 error. The sendmsg(2) syscall is currently unimplemented. See
6223 "UDP: Message Passing" in perlipc for examples.
6224
6225 Note that if the socket has been marked as ":utf8", "send" will
6226 throw an exception. The :encoding(...) layer implicitly introduces
6227 the ":utf8" layer. See "binmode".
6228
6229 setpgrp PID,PGRP
6230 Sets the current process group for the specified PID, 0 for the
6231 current process. Raises an exception when used on a machine that
6232 doesn't implement POSIX setpgid(2) or BSD setpgrp(2). If the
6233 arguments are omitted, it defaults to "0,0". Note that the BSD 4.2
6234 version of "setpgrp" does not accept any arguments, so only
6235 "setpgrp(0,0)" is portable. See also POSIX::setsid().
6236
6237 Portability issues: "setpgrp" in perlport.
6238
6239 setpriority WHICH,WHO,PRIORITY
6240 Sets the current priority for a process, a process group, or a
6241 user. (See setpriority(2).) Raises an exception when used on a
6242 machine that doesn't implement setpriority(2).
6243
6244 "WHICH" can be any of "PRIO_PROCESS", "PRIO_PGRP" or "PRIO_USER"
6245 imported from "RESOURCE CONSTANTS" in POSIX.
6246
6247 Portability issues: "setpriority" in perlport.
6248
6249 setsockopt SOCKET,LEVEL,OPTNAME,OPTVAL
6250 Sets the socket option requested. Returns "undef" on error. Use
6251 integer constants provided by the "Socket" module for LEVEL and
6252 OPNAME. Values for LEVEL can also be obtained from getprotobyname.
6253 OPTVAL might either be a packed string or an integer. An integer
6254 OPTVAL is shorthand for pack("i", OPTVAL).
6255
6256 An example disabling Nagle's algorithm on a socket:
6257
6258 use Socket qw(IPPROTO_TCP TCP_NODELAY);
6259 setsockopt($socket, IPPROTO_TCP, TCP_NODELAY, 1);
6260
6261 Portability issues: "setsockopt" in perlport.
6262
6263 shift ARRAY
6264 shift
6265 Removes and returns the first element of an array. This shortens
6266 the array by one and moves everything down.
6267
6268 my @arr = ('cat', 'dog');
6269 my $item = shift(@arr); # 'cat'
6270
6271 # @arr is now ('dog');
6272
6273 Returns "undef" if the array is empty.
6274
6275 Note: "shift" may also return "undef" if the first element in the
6276 array is "undef".
6277
6278 my @arr = (undef, 'two', 'three');
6279 my $item = shift(@arr); # undef
6280
6281 If ARRAY is omitted, "shift" operates on the @ARGV array in the
6282 main program, and the @_ array in subroutines. "shift" will operate
6283 on the @ARGV array in "eval STRING", "BEGIN {}", "INIT {}", "CHECK
6284 {}" blocks.
6285
6286 Starting with Perl 5.14, an experimental feature allowed "shift" to
6287 take a scalar expression. This experiment has been deemed
6288 unsuccessful, and was removed as of Perl 5.24.
6289
6290 See also "unshift", "push", and "pop". "shift" and "unshift" do
6291 the same thing to the left end of an array that "pop" and "push" do
6292 to the right end.
6293
6294 shmctl ID,CMD,ARG
6295 Calls the System V IPC function shmctl. You'll probably have to
6296 say
6297
6298 use IPC::SysV;
6299
6300 first to get the correct constant definitions. If CMD is
6301 "IPC_STAT", then ARG must be a variable that will hold the returned
6302 "shmid_ds" structure. Returns like ioctl: "undef" for error; "0
6303 but true" for zero; and the actual return value otherwise. See
6304 also "SysV IPC" in perlipc and the documentation for "IPC::SysV".
6305
6306 Portability issues: "shmctl" in perlport.
6307
6308 shmget KEY,SIZE,FLAGS
6309 Calls the System V IPC function shmget. Returns the shared memory
6310 segment id, or "undef" on error. See also "SysV IPC" in perlipc
6311 and the documentation for "IPC::SysV".
6312
6313 Portability issues: "shmget" in perlport.
6314
6315 shmread ID,VAR,POS,SIZE
6316 shmwrite ID,STRING,POS,SIZE
6317 Reads or writes the System V shared memory segment ID starting at
6318 position POS for size SIZE by attaching to it, copying in/out, and
6319 detaching from it. When reading, VAR must be a variable that will
6320 hold the data read. When writing, if STRING is too long, only SIZE
6321 bytes are used; if STRING is too short, nulls are written to fill
6322 out SIZE bytes. Return true if successful, false on error.
6323 "shmread" taints the variable. See also "SysV IPC" in perlipc and
6324 the documentation for "IPC::SysV" and the "IPC::Shareable" module
6325 from CPAN.
6326
6327 Portability issues: "shmread" in perlport and "shmwrite" in
6328 perlport.
6329
6330 shutdown SOCKET,HOW
6331 Shuts down a socket connection in the manner indicated by HOW,
6332 which has the same interpretation as in the syscall of the same
6333 name.
6334
6335 shutdown($socket, 0); # I/we have stopped reading data
6336 shutdown($socket, 1); # I/we have stopped writing data
6337 shutdown($socket, 2); # I/we have stopped using this socket
6338
6339 This is useful with sockets when you want to tell the other side
6340 you're done writing but not done reading, or vice versa. It's also
6341 a more insistent form of close because it also disables the file
6342 descriptor in any forked copies in other processes.
6343
6344 Returns 1 for success; on error, returns "undef" if the first
6345 argument is not a valid filehandle, or returns 0 and sets $! for
6346 any other failure.
6347
6348 sin EXPR
6349 sin Returns the sine of EXPR (expressed in radians). If EXPR is
6350 omitted, returns sine of $_.
6351
6352 For the inverse sine operation, you may use the "Math::Trig::asin"
6353 function, or use this relation:
6354
6355 sub asin { atan2($_[0], sqrt(1 - $_[0] * $_[0])) }
6356
6357 sleep EXPR
6358 sleep
6359 Causes the script to sleep for (integer) EXPR seconds, or forever
6360 if no argument is given. Returns the integer number of seconds
6361 actually slept.
6362
6363 EXPR should be a positive integer. If called with a negative
6364 integer, "sleep" does not sleep but instead emits a warning, sets
6365 $! ("errno"), and returns zero.
6366
6367 If called with a non-integer, the fractional part is ignored.
6368
6369 "sleep 0" is permitted, but a function call to the underlying
6370 platform implementation still occurs, with any side effects that
6371 may have. "sleep 0" is therefore not exactly identical to not
6372 sleeping at all.
6373
6374 May be interrupted if the process receives a signal such as
6375 "SIGALRM".
6376
6377 eval {
6378 local $SIG{ALRM} = sub { die "Alarm!\n" };
6379 sleep;
6380 };
6381 die $@ unless $@ eq "Alarm!\n";
6382
6383 You probably cannot mix "alarm" and "sleep" calls, because "sleep"
6384 is often implemented using "alarm".
6385
6386 On some older systems, it may sleep up to a full second less than
6387 what you requested, depending on how it counts seconds. Most
6388 modern systems always sleep the full amount. They may appear to
6389 sleep longer than that, however, because your process might not be
6390 scheduled right away in a busy multitasking system.
6391
6392 For delays of finer granularity than one second, the Time::HiRes
6393 module (from CPAN, and starting from Perl 5.8 part of the standard
6394 distribution) provides "usleep". You may also use Perl's four-
6395 argument version of "select" leaving the first three arguments
6396 undefined, or you might be able to use the "syscall" interface to
6397 access setitimer(2) if your system supports it. See perlfaq8 for
6398 details.
6399
6400 See also the POSIX module's "pause" function.
6401
6402 socket SOCKET,DOMAIN,TYPE,PROTOCOL
6403 Opens a socket of the specified kind and attaches it to filehandle
6404 SOCKET. DOMAIN, TYPE, and PROTOCOL are specified the same as for
6405 the syscall of the same name. You should "use Socket" first to get
6406 the proper definitions imported. See the examples in "Sockets:
6407 Client/Server Communication" in perlipc.
6408
6409 On systems that support a close-on-exec flag on files, the flag
6410 will be set for the newly opened file descriptor, as determined by
6411 the value of $^F. See "$^F" in perlvar.
6412
6413 socketpair SOCKET1,SOCKET2,DOMAIN,TYPE,PROTOCOL
6414 Creates an unnamed pair of sockets in the specified domain, of the
6415 specified type. DOMAIN, TYPE, and PROTOCOL are specified the same
6416 as for the syscall of the same name. If unimplemented, raises an
6417 exception. Returns true if successful.
6418
6419 On systems that support a close-on-exec flag on files, the flag
6420 will be set for the newly opened file descriptors, as determined by
6421 the value of $^F. See "$^F" in perlvar.
6422
6423 Some systems define "pipe" in terms of "socketpair", in which a
6424 call to "pipe($rdr, $wtr)" is essentially:
6425
6426 use Socket;
6427 socketpair(my $rdr, my $wtr, AF_UNIX, SOCK_STREAM, PF_UNSPEC);
6428 shutdown($rdr, 1); # no more writing for reader
6429 shutdown($wtr, 0); # no more reading for writer
6430
6431 See perlipc for an example of socketpair use. Perl 5.8 and later
6432 will emulate socketpair using IP sockets to localhost if your
6433 system implements sockets but not socketpair.
6434
6435 Portability issues: "socketpair" in perlport.
6436
6437 sort SUBNAME LIST
6438 sort BLOCK LIST
6439 sort LIST
6440 In list context, this sorts the LIST and returns the sorted list
6441 value. In scalar context, the behaviour of "sort" is undefined.
6442
6443 If SUBNAME or BLOCK is omitted, "sort"s in standard string
6444 comparison order. If SUBNAME is specified, it gives the name of a
6445 subroutine that returns a numeric value less than, equal to, or
6446 greater than 0, depending on how the elements of the list are to be
6447 ordered. (The "<=>" and "cmp" operators are extremely useful in
6448 such routines.) SUBNAME may be a scalar variable name
6449 (unsubscripted), in which case the value provides the name of (or a
6450 reference to) the actual subroutine to use. In place of a SUBNAME,
6451 you can provide a BLOCK as an anonymous, in-line sort subroutine.
6452
6453 If the subroutine's prototype is "($$)", the elements to be
6454 compared are passed by reference in @_, as for a normal subroutine.
6455 This is slower than unprototyped subroutines, where the elements to
6456 be compared are passed into the subroutine as the package global
6457 variables $a and $b (see example below).
6458
6459 If the subroutine is an XSUB, the elements to be compared are
6460 pushed on to the stack, the way arguments are usually passed to
6461 XSUBs. $a and $b are not set.
6462
6463 The values to be compared are always passed by reference and should
6464 not be modified.
6465
6466 You also cannot exit out of the sort block or subroutine using any
6467 of the loop control operators described in perlsyn or with "goto".
6468
6469 When "use locale" (but not "use locale ':not_characters'") is in
6470 effect, "sort LIST" sorts LIST according to the current collation
6471 locale. See perllocale.
6472
6473 "sort" returns aliases into the original list, much as a for loop's
6474 index variable aliases the list elements. That is, modifying an
6475 element of a list returned by "sort" (for example, in a "foreach",
6476 "map" or "grep") actually modifies the element in the original
6477 list. This is usually something to be avoided when writing clear
6478 code.
6479
6480 Historically Perl has varied in whether sorting is stable by
6481 default. If stability matters, it can be controlled explicitly by
6482 using the sort pragma.
6483
6484 Examples:
6485
6486 # sort lexically
6487 my @articles = sort @files;
6488
6489 # same thing, but with explicit sort routine
6490 my @articles = sort {$a cmp $b} @files;
6491
6492 # now case-insensitively
6493 my @articles = sort {fc($a) cmp fc($b)} @files;
6494
6495 # same thing in reversed order
6496 my @articles = sort {$b cmp $a} @files;
6497
6498 # sort numerically ascending
6499 my @articles = sort {$a <=> $b} @files;
6500
6501 # sort numerically descending
6502 my @articles = sort {$b <=> $a} @files;
6503
6504 # this sorts the %age hash by value instead of key
6505 # using an in-line function
6506 my @eldest = sort { $age{$b} <=> $age{$a} } keys %age;
6507
6508 # sort using explicit subroutine name
6509 sub byage {
6510 $age{$a} <=> $age{$b}; # presuming numeric
6511 }
6512 my @sortedclass = sort byage @class;
6513
6514 sub backwards { $b cmp $a }
6515 my @harry = qw(dog cat x Cain Abel);
6516 my @george = qw(gone chased yz Punished Axed);
6517 print sort @harry;
6518 # prints AbelCaincatdogx
6519 print sort backwards @harry;
6520 # prints xdogcatCainAbel
6521 print sort @george, 'to', @harry;
6522 # prints AbelAxedCainPunishedcatchaseddoggonetoxyz
6523
6524 # inefficiently sort by descending numeric compare using
6525 # the first integer after the first = sign, or the
6526 # whole record case-insensitively otherwise
6527
6528 my @new = sort {
6529 ($b =~ /=(\d+)/)[0] <=> ($a =~ /=(\d+)/)[0]
6530 ||
6531 fc($a) cmp fc($b)
6532 } @old;
6533
6534 # same thing, but much more efficiently;
6535 # we'll build auxiliary indices instead
6536 # for speed
6537 my (@nums, @caps);
6538 for (@old) {
6539 push @nums, ( /=(\d+)/ ? $1 : undef );
6540 push @caps, fc($_);
6541 }
6542
6543 my @new = @old[ sort {
6544 $nums[$b] <=> $nums[$a]
6545 ||
6546 $caps[$a] cmp $caps[$b]
6547 } 0..$#old
6548 ];
6549
6550 # same thing, but without any temps
6551 my @new = map { $_->[0] }
6552 sort { $b->[1] <=> $a->[1]
6553 ||
6554 $a->[2] cmp $b->[2]
6555 } map { [$_, /=(\d+)/, fc($_)] } @old;
6556
6557 # using a prototype allows you to use any comparison subroutine
6558 # as a sort subroutine (including other package's subroutines)
6559 package Other;
6560 sub backwards ($$) { $_[1] cmp $_[0]; } # $a and $b are
6561 # not set here
6562 package main;
6563 my @new = sort Other::backwards @old;
6564
6565 ## using a prototype with function signature
6566 use feature 'signatures';
6567 sub function_with_signature :prototype($$) ($one, $two) {
6568 return $one <=> $two
6569 }
6570
6571 my @new = sort function_with_signature @old;
6572
6573 # guarantee stability
6574 use sort 'stable';
6575 my @new = sort { substr($a, 3, 5) cmp substr($b, 3, 5) } @old;
6576
6577 Warning: syntactical care is required when sorting the list
6578 returned from a function. If you want to sort the list returned by
6579 the function call find_records(@key), you can use:
6580
6581 my @contact = sort { $a cmp $b } find_records @key;
6582 my @contact = sort +find_records(@key);
6583 my @contact = sort &find_records(@key);
6584 my @contact = sort(find_records(@key));
6585
6586 If instead you want to sort the array @key with the comparison
6587 routine find_records() then you can use:
6588
6589 my @contact = sort { find_records() } @key;
6590 my @contact = sort find_records(@key);
6591 my @contact = sort(find_records @key);
6592 my @contact = sort(find_records (@key));
6593
6594 $a and $b are set as package globals in the package the sort() is
6595 called from. That means $main::a and $main::b (or $::a and $::b)
6596 in the "main" package, $FooPack::a and $FooPack::b in the "FooPack"
6597 package, etc. If the sort block is in scope of a "my" or "state"
6598 declaration of $a and/or $b, you must spell out the full name of
6599 the variables in the sort block :
6600
6601 package main;
6602 my $a = "C"; # DANGER, Will Robinson, DANGER !!!
6603
6604 print sort { $a cmp $b } qw(A C E G B D F H);
6605 # WRONG
6606 sub badlexi { $a cmp $b }
6607 print sort badlexi qw(A C E G B D F H);
6608 # WRONG
6609 # the above prints BACFEDGH or some other incorrect ordering
6610
6611 print sort { $::a cmp $::b } qw(A C E G B D F H);
6612 # OK
6613 print sort { our $a cmp our $b } qw(A C E G B D F H);
6614 # also OK
6615 print sort { our ($a, $b); $a cmp $b } qw(A C E G B D F H);
6616 # also OK
6617 sub lexi { our $a cmp our $b }
6618 print sort lexi qw(A C E G B D F H);
6619 # also OK
6620 # the above print ABCDEFGH
6621
6622 With proper care you may mix package and my (or state) $a and/or
6623 $b:
6624
6625 my $a = {
6626 tiny => -2,
6627 small => -1,
6628 normal => 0,
6629 big => 1,
6630 huge => 2
6631 };
6632
6633 say sort { $a->{our $a} <=> $a->{our $b} }
6634 qw{ huge normal tiny small big};
6635
6636 # prints tinysmallnormalbighuge
6637
6638 $a and $b are implicitly local to the sort() execution and regain
6639 their former values upon completing the sort.
6640
6641 Sort subroutines written using $a and $b are bound to their calling
6642 package. It is possible, but of limited interest, to define them in
6643 a different package, since the subroutine must still refer to the
6644 calling package's $a and $b :
6645
6646 package Foo;
6647 sub lexi { $Bar::a cmp $Bar::b }
6648 package Bar;
6649 ... sort Foo::lexi ...
6650
6651 Use the prototyped versions (see above) for a more generic
6652 alternative.
6653
6654 The comparison function is required to behave. If it returns
6655 inconsistent results (sometimes saying $x[1] is less than $x[2] and
6656 sometimes saying the opposite, for example) the results are not
6657 well-defined.
6658
6659 Because "<=>" returns "undef" when either operand is "NaN" (not-a-
6660 number), be careful when sorting with a comparison function like
6661 "$a <=> $b" any lists that might contain a "NaN". The following
6662 example takes advantage that "NaN != NaN" to eliminate any "NaN"s
6663 from the input list.
6664
6665 my @result = sort { $a <=> $b } grep { $_ == $_ } @input;
6666
6667 In this version of perl, the "sort" function is implemented via the
6668 mergesort algorithm.
6669
6670 splice ARRAY,OFFSET,LENGTH,LIST
6671 splice ARRAY,OFFSET,LENGTH
6672 splice ARRAY,OFFSET
6673 splice ARRAY
6674 Removes the elements designated by OFFSET and LENGTH from an array,
6675 and replaces them with the elements of LIST, if any. In list
6676 context, returns the elements removed from the array. In scalar
6677 context, returns the last element removed, or "undef" if no
6678 elements are removed. The array grows or shrinks as necessary. If
6679 OFFSET is negative then it starts that far from the end of the
6680 array. If LENGTH is omitted, removes everything from OFFSET
6681 onward. If LENGTH is negative, removes the elements from OFFSET
6682 onward except for -LENGTH elements at the end of the array. If
6683 both OFFSET and LENGTH are omitted, removes everything. If OFFSET
6684 is past the end of the array and a LENGTH was provided, Perl issues
6685 a warning, and splices at the end of the array.
6686
6687 The following equivalences hold (assuming "$#a >= $i" )
6688
6689 push(@a,$x,$y) splice(@a,@a,0,$x,$y)
6690 pop(@a) splice(@a,-1)
6691 shift(@a) splice(@a,0,1)
6692 unshift(@a,$x,$y) splice(@a,0,0,$x,$y)
6693 $a[$i] = $y splice(@a,$i,1,$y)
6694
6695 "splice" can be used, for example, to implement n-ary queue
6696 processing:
6697
6698 sub nary_print {
6699 my $n = shift;
6700 while (my @next_n = splice @_, 0, $n) {
6701 say join q{ -- }, @next_n;
6702 }
6703 }
6704
6705 nary_print(3, qw(a b c d e f g h));
6706 # prints:
6707 # a -- b -- c
6708 # d -- e -- f
6709 # g -- h
6710
6711 Starting with Perl 5.14, an experimental feature allowed "splice"
6712 to take a scalar expression. This experiment has been deemed
6713 unsuccessful, and was removed as of Perl 5.24.
6714
6715 split /PATTERN/,EXPR,LIMIT
6716 split /PATTERN/,EXPR
6717 split /PATTERN/
6718 split
6719 Splits the string EXPR into a list of strings and returns the list
6720 in list context, or the size of the list in scalar context. (Prior
6721 to Perl 5.11, it also overwrote @_ with the list in void and scalar
6722 context. If you target old perls, beware.)
6723
6724 If only PATTERN is given, EXPR defaults to $_.
6725
6726 Anything in EXPR that matches PATTERN is taken to be a separator
6727 that separates the EXPR into substrings (called "fields") that do
6728 not include the separator. Note that a separator may be longer
6729 than one character or even have no characters at all (the empty
6730 string, which is a zero-width match).
6731
6732 The PATTERN need not be constant; an expression may be used to
6733 specify a pattern that varies at runtime.
6734
6735 If PATTERN matches the empty string, the EXPR is split at the match
6736 position (between characters). As an example, the following:
6737
6738 my @x = split(/b/, "abc"); # ("a", "c")
6739
6740 uses the "b" in 'abc' as a separator to produce the list ("a",
6741 "c"). However, this:
6742
6743 my @x = split(//, "abc"); # ("a", "b", "c")
6744
6745 uses empty string matches as separators; thus, the empty string may
6746 be used to split EXPR into a list of its component characters.
6747
6748 As a special case for "split", the empty pattern given in match
6749 operator syntax ("//") specifically matches the empty string, which
6750 is contrary to its usual interpretation as the last successful
6751 match.
6752
6753 If PATTERN is "/^/", then it is treated as if it used the multiline
6754 modifier ("/^/m"), since it isn't much use otherwise.
6755
6756 "/m" and any of the other pattern modifiers valid for "qr"
6757 (summarized in "qr/STRING/msixpodualn" in perlop) may be specified
6758 explicitly.
6759
6760 As another special case, "split" emulates the default behavior of
6761 the command line tool awk when the PATTERN is either omitted or a
6762 string composed of a single space character (such as ' ' or "\x20",
6763 but not e.g. "/ /"). In this case, any leading whitespace in EXPR
6764 is removed before splitting occurs, and the PATTERN is instead
6765 treated as if it were "/\s+/"; in particular, this means that any
6766 contiguous whitespace (not just a single space character) is used
6767 as a separator.
6768
6769 my @x = split(" ", " Quick brown fox\n");
6770 # ("Quick", "brown", "fox")
6771
6772 my @x = split(" ", "RED\tGREEN\tBLUE");
6773 # ("RED", "GREEN", "BLUE")
6774
6775 Using split in this fashion is very similar to how "qw//" works.
6776
6777 However, this special treatment can be avoided by specifying the
6778 pattern "/ /" instead of the string " ", thereby allowing only a
6779 single space character to be a separator. In earlier Perls this
6780 special case was restricted to the use of a plain " " as the
6781 pattern argument to split; in Perl 5.18.0 and later this special
6782 case is triggered by any expression which evaluates to the simple
6783 string " ".
6784
6785 As of Perl 5.28, this special-cased whitespace splitting works as
6786 expected in the scope of "use feature 'unicode_strings'". In
6787 previous versions, and outside the scope of that feature, it
6788 exhibits "The "Unicode Bug"" in perlunicode: characters that are
6789 whitespace according to Unicode rules but not according to ASCII
6790 rules can be treated as part of fields rather than as field
6791 separators, depending on the string's internal encoding.
6792
6793 If omitted, PATTERN defaults to a single space, " ", triggering the
6794 previously described awk emulation.
6795
6796 If LIMIT is specified and positive, it represents the maximum
6797 number of fields into which the EXPR may be split; in other words,
6798 LIMIT is one greater than the maximum number of times EXPR may be
6799 split. Thus, the LIMIT value 1 means that EXPR may be split a
6800 maximum of zero times, producing a maximum of one field (namely,
6801 the entire value of EXPR). For instance:
6802
6803 my @x = split(//, "abc", 1); # ("abc")
6804 my @x = split(//, "abc", 2); # ("a", "bc")
6805 my @x = split(//, "abc", 3); # ("a", "b", "c")
6806 my @x = split(//, "abc", 4); # ("a", "b", "c")
6807
6808 If LIMIT is negative, it is treated as if it were instead
6809 arbitrarily large; as many fields as possible are produced.
6810
6811 If LIMIT is omitted (or, equivalently, zero), then it is usually
6812 treated as if it were instead negative but with the exception that
6813 trailing empty fields are stripped (empty leading fields are always
6814 preserved); if all fields are empty, then all fields are considered
6815 to be trailing (and are thus stripped in this case). Thus, the
6816 following:
6817
6818 my @x = split(/,/, "a,b,c,,,"); # ("a", "b", "c")
6819
6820 produces only a three element list.
6821
6822 my @x = split(/,/, "a,b,c,,,", -1); # ("a", "b", "c", "", "", "")
6823
6824 produces a six element list.
6825
6826 In time-critical applications, it is worthwhile to avoid splitting
6827 into more fields than necessary. Thus, when assigning to a list,
6828 if LIMIT is omitted (or zero), then LIMIT is treated as though it
6829 were one larger than the number of variables in the list; for the
6830 following, LIMIT is implicitly 3:
6831
6832 my ($login, $passwd) = split(/:/);
6833
6834 Note that splitting an EXPR that evaluates to the empty string
6835 always produces zero fields, regardless of the LIMIT specified.
6836
6837 An empty leading field is produced when there is a positive-width
6838 match at the beginning of EXPR. For instance:
6839
6840 my @x = split(/ /, " abc"); # ("", "abc")
6841
6842 splits into two elements. However, a zero-width match at the
6843 beginning of EXPR never produces an empty field, so that:
6844
6845 my @x = split(//, " abc"); # (" ", "a", "b", "c")
6846
6847 splits into four elements instead of five.
6848
6849 An empty trailing field, on the other hand, is produced when there
6850 is a match at the end of EXPR, regardless of the length of the
6851 match (of course, unless a non-zero LIMIT is given explicitly, such
6852 fields are removed, as in the last example). Thus:
6853
6854 my @x = split(//, " abc", -1); # (" ", "a", "b", "c", "")
6855
6856 If the PATTERN contains capturing groups, then for each separator,
6857 an additional field is produced for each substring captured by a
6858 group (in the order in which the groups are specified, as per
6859 backreferences); if any group does not match, then it captures the
6860 "undef" value instead of a substring. Also, note that any such
6861 additional field is produced whenever there is a separator (that
6862 is, whenever a split occurs), and such an additional field does not
6863 count towards the LIMIT. Consider the following expressions
6864 evaluated in list context (each returned list is provided in the
6865 associated comment):
6866
6867 my @x = split(/-|,/ , "1-10,20", 3);
6868 # ("1", "10", "20")
6869
6870 my @x = split(/(-|,)/ , "1-10,20", 3);
6871 # ("1", "-", "10", ",", "20")
6872
6873 my @x = split(/-|(,)/ , "1-10,20", 3);
6874 # ("1", undef, "10", ",", "20")
6875
6876 my @x = split(/(-)|,/ , "1-10,20", 3);
6877 # ("1", "-", "10", undef, "20")
6878
6879 my @x = split(/(-)|(,)/, "1-10,20", 3);
6880 # ("1", "-", undef, "10", undef, ",", "20")
6881
6882 sprintf FORMAT, LIST
6883 Returns a string formatted by the usual "printf" conventions of the
6884 C library function "sprintf". See below for more details and see
6885 sprintf(3) or printf(3) on your system for an explanation of the
6886 general principles.
6887
6888 For example:
6889
6890 # Format number with up to 8 leading zeroes
6891 my $result = sprintf("%08d", $number);
6892
6893 # Round number to 3 digits after decimal point
6894 my $rounded = sprintf("%.3f", $number);
6895
6896 Perl does its own "sprintf" formatting: it emulates the C function
6897 sprintf(3), but doesn't use it except for floating-point numbers,
6898 and even then only standard modifiers are allowed. Non-standard
6899 extensions in your local sprintf(3) are therefore unavailable from
6900 Perl.
6901
6902 Unlike "printf", "sprintf" does not do what you probably mean when
6903 you pass it an array as your first argument. The array is given
6904 scalar context, and instead of using the 0th element of the array
6905 as the format, Perl will use the count of elements in the array as
6906 the format, which is almost never useful.
6907
6908 Perl's "sprintf" permits the following universally-known
6909 conversions:
6910
6911 %% a percent sign
6912 %c a character with the given number
6913 %s a string
6914 %d a signed integer, in decimal
6915 %u an unsigned integer, in decimal
6916 %o an unsigned integer, in octal
6917 %x an unsigned integer, in hexadecimal
6918 %e a floating-point number, in scientific notation
6919 %f a floating-point number, in fixed decimal notation
6920 %g a floating-point number, in %e or %f notation
6921
6922 In addition, Perl permits the following widely-supported
6923 conversions:
6924
6925 %X like %x, but using upper-case letters
6926 %E like %e, but using an upper-case "E"
6927 %G like %g, but with an upper-case "E" (if applicable)
6928 %b an unsigned integer, in binary
6929 %B like %b, but using an upper-case "B" with the # flag
6930 %p a pointer (outputs the Perl value's address in hexadecimal)
6931 %n special: *stores* the number of characters output so far
6932 into the next argument in the parameter list
6933 %a hexadecimal floating point
6934 %A like %a, but using upper-case letters
6935
6936 Finally, for backward (and we do mean "backward") compatibility,
6937 Perl permits these unnecessary but widely-supported conversions:
6938
6939 %i a synonym for %d
6940 %D a synonym for %ld
6941 %U a synonym for %lu
6942 %O a synonym for %lo
6943 %F a synonym for %f
6944
6945 Note that the number of exponent digits in the scientific notation
6946 produced by %e, %E, %g and %G for numbers with the modulus of the
6947 exponent less than 100 is system-dependent: it may be three or less
6948 (zero-padded as necessary). In other words, 1.23 times ten to the
6949 99th may be either "1.23e99" or "1.23e099". Similarly for %a and
6950 %A: the exponent or the hexadecimal digits may float: especially
6951 the "long doubles" Perl configuration option may cause surprises.
6952
6953 Between the "%" and the format letter, you may specify several
6954 additional attributes controlling the interpretation of the format.
6955 In order, these are:
6956
6957 format parameter index
6958 An explicit format parameter index, such as "2$". By default
6959 sprintf will format the next unused argument in the list, but
6960 this allows you to take the arguments out of order:
6961
6962 printf '%2$d %1$d', 12, 34; # prints "34 12"
6963 printf '%3$d %d %1$d', 1, 2, 3; # prints "3 1 1"
6964
6965 flags
6966 one or more of:
6967
6968 space prefix non-negative number with a space
6969 + prefix non-negative number with a plus sign
6970 - left-justify within the field
6971 0 use zeros, not spaces, to right-justify
6972 # ensure the leading "0" for any octal,
6973 prefix non-zero hexadecimal with "0x" or "0X",
6974 prefix non-zero binary with "0b" or "0B"
6975
6976 For example:
6977
6978 printf '<% d>', 12; # prints "< 12>"
6979 printf '<% d>', 0; # prints "< 0>"
6980 printf '<% d>', -12; # prints "<-12>"
6981 printf '<%+d>', 12; # prints "<+12>"
6982 printf '<%+d>', 0; # prints "<+0>"
6983 printf '<%+d>', -12; # prints "<-12>"
6984 printf '<%6s>', 12; # prints "< 12>"
6985 printf '<%-6s>', 12; # prints "<12 >"
6986 printf '<%06s>', 12; # prints "<000012>"
6987 printf '<%#o>', 12; # prints "<014>"
6988 printf '<%#x>', 12; # prints "<0xc>"
6989 printf '<%#X>', 12; # prints "<0XC>"
6990 printf '<%#b>', 12; # prints "<0b1100>"
6991 printf '<%#B>', 12; # prints "<0B1100>"
6992
6993 When a space and a plus sign are given as the flags at once,
6994 the space is ignored.
6995
6996 printf '<%+ d>', 12; # prints "<+12>"
6997 printf '<% +d>', 12; # prints "<+12>"
6998
6999 When the # flag and a precision are given in the %o conversion,
7000 the precision is incremented if it's necessary for the leading
7001 "0".
7002
7003 printf '<%#.5o>', 012; # prints "<00012>"
7004 printf '<%#.5o>', 012345; # prints "<012345>"
7005 printf '<%#.0o>', 0; # prints "<0>"
7006
7007 vector flag
7008 This flag tells Perl to interpret the supplied string as a
7009 vector of integers, one for each character in the string. Perl
7010 applies the format to each integer in turn, then joins the
7011 resulting strings with a separator (a dot "." by default).
7012 This can be useful for displaying ordinal values of characters
7013 in arbitrary strings:
7014
7015 printf "%vd", "AB\x{100}"; # prints "65.66.256"
7016 printf "version is v%vd\n", $^V; # Perl's version
7017
7018 Put an asterisk "*" before the "v" to override the string to
7019 use to separate the numbers:
7020
7021 printf "address is %*vX\n", ":", $addr; # IPv6 address
7022 printf "bits are %0*v8b\n", " ", $bits; # random bitstring
7023
7024 You can also explicitly specify the argument number to use for
7025 the join string using something like "*2$v"; for example:
7026
7027 printf '%*4$vX %*4$vX %*4$vX', # 3 IPv6 addresses
7028 @addr[1..3], ":";
7029
7030 (minimum) width
7031 Arguments are usually formatted to be only as wide as required
7032 to display the given value. You can override the width by
7033 putting a number here, or get the width from the next argument
7034 (with "*") or from a specified argument (e.g., with "*2$"):
7035
7036 printf "<%s>", "a"; # prints "<a>"
7037 printf "<%6s>", "a"; # prints "< a>"
7038 printf "<%*s>", 6, "a"; # prints "< a>"
7039 printf '<%*2$s>', "a", 6; # prints "< a>"
7040 printf "<%2s>", "long"; # prints "<long>" (does not truncate)
7041
7042 If a field width obtained through "*" is negative, it has the
7043 same effect as the "-" flag: left-justification.
7044
7045 precision, or maximum width
7046 You can specify a precision (for numeric conversions) or a
7047 maximum width (for string conversions) by specifying a "."
7048 followed by a number. For floating-point formats except "g"
7049 and "G", this specifies how many places right of the decimal
7050 point to show (the default being 6). For example:
7051
7052 # these examples are subject to system-specific variation
7053 printf '<%f>', 1; # prints "<1.000000>"
7054 printf '<%.1f>', 1; # prints "<1.0>"
7055 printf '<%.0f>', 1; # prints "<1>"
7056 printf '<%e>', 10; # prints "<1.000000e+01>"
7057 printf '<%.1e>', 10; # prints "<1.0e+01>"
7058
7059 For "g" and "G", this specifies the maximum number of
7060 significant digits to show; for example:
7061
7062 # These examples are subject to system-specific variation.
7063 printf '<%g>', 1; # prints "<1>"
7064 printf '<%.10g>', 1; # prints "<1>"
7065 printf '<%g>', 100; # prints "<100>"
7066 printf '<%.1g>', 100; # prints "<1e+02>"
7067 printf '<%.2g>', 100.01; # prints "<1e+02>"
7068 printf '<%.5g>', 100.01; # prints "<100.01>"
7069 printf '<%.4g>', 100.01; # prints "<100>"
7070 printf '<%.1g>', 0.0111; # prints "<0.01>"
7071 printf '<%.2g>', 0.0111; # prints "<0.011>"
7072 printf '<%.3g>', 0.0111; # prints "<0.0111>"
7073
7074 For integer conversions, specifying a precision implies that
7075 the output of the number itself should be zero-padded to this
7076 width, where the 0 flag is ignored:
7077
7078 printf '<%.6d>', 1; # prints "<000001>"
7079 printf '<%+.6d>', 1; # prints "<+000001>"
7080 printf '<%-10.6d>', 1; # prints "<000001 >"
7081 printf '<%10.6d>', 1; # prints "< 000001>"
7082 printf '<%010.6d>', 1; # prints "< 000001>"
7083 printf '<%+10.6d>', 1; # prints "< +000001>"
7084
7085 printf '<%.6x>', 1; # prints "<000001>"
7086 printf '<%#.6x>', 1; # prints "<0x000001>"
7087 printf '<%-10.6x>', 1; # prints "<000001 >"
7088 printf '<%10.6x>', 1; # prints "< 000001>"
7089 printf '<%010.6x>', 1; # prints "< 000001>"
7090 printf '<%#10.6x>', 1; # prints "< 0x000001>"
7091
7092 For string conversions, specifying a precision truncates the
7093 string to fit the specified width:
7094
7095 printf '<%.5s>', "truncated"; # prints "<trunc>"
7096 printf '<%10.5s>', "truncated"; # prints "< trunc>"
7097
7098 You can also get the precision from the next argument using
7099 ".*", or from a specified argument (e.g., with ".*2$"):
7100
7101 printf '<%.6x>', 1; # prints "<000001>"
7102 printf '<%.*x>', 6, 1; # prints "<000001>"
7103
7104 printf '<%.*2$x>', 1, 6; # prints "<000001>"
7105
7106 printf '<%6.*2$x>', 1, 4; # prints "< 0001>"
7107
7108 If a precision obtained through "*" is negative, it counts as
7109 having no precision at all.
7110
7111 printf '<%.*s>', 7, "string"; # prints "<string>"
7112 printf '<%.*s>', 3, "string"; # prints "<str>"
7113 printf '<%.*s>', 0, "string"; # prints "<>"
7114 printf '<%.*s>', -1, "string"; # prints "<string>"
7115
7116 printf '<%.*d>', 1, 0; # prints "<0>"
7117 printf '<%.*d>', 0, 0; # prints "<>"
7118 printf '<%.*d>', -1, 0; # prints "<0>"
7119
7120 size
7121 For numeric conversions, you can specify the size to interpret
7122 the number as using "l", "h", "V", "q", "L", or "ll". For
7123 integer conversions ("d u o x X b i D U O"), numbers are
7124 usually assumed to be whatever the default integer size is on
7125 your platform (usually 32 or 64 bits), but you can override
7126 this to use instead one of the standard C types, as supported
7127 by the compiler used to build Perl:
7128
7129 hh interpret integer as C type "char" or "unsigned
7130 char" on Perl 5.14 or later
7131 h interpret integer as C type "short" or
7132 "unsigned short"
7133 j interpret integer as C type "intmax_t" on Perl
7134 5.14 or later; and prior to Perl 5.30, only with
7135 a C99 compiler (unportable)
7136 l interpret integer as C type "long" or
7137 "unsigned long"
7138 q, L, or ll interpret integer as C type "long long",
7139 "unsigned long long", or "quad" (typically
7140 64-bit integers)
7141 t interpret integer as C type "ptrdiff_t" on Perl
7142 5.14 or later
7143 z interpret integer as C types "size_t" or
7144 "ssize_t" on Perl 5.14 or later
7145
7146 Note that, in general, using the "l" modifier (for example,
7147 when writing "%ld" or "%lu" instead of "%d" and "%u") is
7148 unnecessary when used from Perl code. Moreover, it may be
7149 harmful, for example on Windows 64-bit where a long is 32-bits.
7150
7151 As of 5.14, none of these raises an exception if they are not
7152 supported on your platform. However, if warnings are enabled,
7153 a warning of the "printf" warning class is issued on an
7154 unsupported conversion flag. Should you instead prefer an
7155 exception, do this:
7156
7157 use warnings FATAL => "printf";
7158
7159 If you would like to know about a version dependency before you
7160 start running the program, put something like this at its top:
7161
7162 use v5.14; # for hh/j/t/z/ printf modifiers
7163
7164 You can find out whether your Perl supports quads via Config:
7165
7166 use Config;
7167 if ($Config{use64bitint} eq "define"
7168 || $Config{longsize} >= 8) {
7169 print "Nice quads!\n";
7170 }
7171
7172 For floating-point conversions ("e f g E F G"), numbers are
7173 usually assumed to be the default floating-point size on your
7174 platform (double or long double), but you can force "long
7175 double" with "q", "L", or "ll" if your platform supports them.
7176 You can find out whether your Perl supports long doubles via
7177 Config:
7178
7179 use Config;
7180 print "long doubles\n" if $Config{d_longdbl} eq "define";
7181
7182 You can find out whether Perl considers "long double" to be the
7183 default floating-point size to use on your platform via Config:
7184
7185 use Config;
7186 if ($Config{uselongdouble} eq "define") {
7187 print "long doubles by default\n";
7188 }
7189
7190 It can also be that long doubles and doubles are the same
7191 thing:
7192
7193 use Config;
7194 ($Config{doublesize} == $Config{longdblsize}) &&
7195 print "doubles are long doubles\n";
7196
7197 The size specifier "V" has no effect for Perl code, but is
7198 supported for compatibility with XS code. It means "use the
7199 standard size for a Perl integer or floating-point number",
7200 which is the default.
7201
7202 order of arguments
7203 Normally, "sprintf" takes the next unused argument as the value
7204 to format for each format specification. If the format
7205 specification uses "*" to require additional arguments, these
7206 are consumed from the argument list in the order they appear in
7207 the format specification before the value to format. Where an
7208 argument is specified by an explicit index, this does not
7209 affect the normal order for the arguments, even when the
7210 explicitly specified index would have been the next argument.
7211
7212 So:
7213
7214 printf "<%*.*s>", $a, $b, $c;
7215
7216 uses $a for the width, $b for the precision, and $c as the
7217 value to format; while:
7218
7219 printf '<%*1$.*s>', $a, $b;
7220
7221 would use $a for the width and precision, and $b as the value
7222 to format.
7223
7224 Here are some more examples; be aware that when using an
7225 explicit index, the "$" may need escaping:
7226
7227 printf "%2\$d %d\n", 12, 34; # will print "34 12\n"
7228 printf "%2\$d %d %d\n", 12, 34; # will print "34 12 34\n"
7229 printf "%3\$d %d %d\n", 12, 34, 56; # will print "56 12 34\n"
7230 printf "%2\$*3\$d %d\n", 12, 34, 3; # will print " 34 12\n"
7231 printf "%*1\$.*f\n", 4, 5, 10; # will print "5.0000\n"
7232
7233 If "use locale" (including "use locale ':not_characters'") is in
7234 effect and "POSIX::setlocale" has been called, the character used
7235 for the decimal separator in formatted floating-point numbers is
7236 affected by the "LC_NUMERIC" locale. See perllocale and POSIX.
7237
7238 sqrt EXPR
7239 sqrt
7240 Return the positive square root of EXPR. If EXPR is omitted, uses
7241 $_. Works only for non-negative operands unless you've loaded the
7242 "Math::Complex" module.
7243
7244 use Math::Complex;
7245 print sqrt(-4); # prints 2i
7246
7247 srand EXPR
7248 srand
7249 Sets and returns the random number seed for the "rand" operator.
7250
7251 The point of the function is to "seed" the "rand" function so that
7252 "rand" can produce a different sequence each time you run your
7253 program. When called with a parameter, "srand" uses that for the
7254 seed; otherwise it (semi-)randomly chooses a seed (see below). In
7255 either case, starting with Perl 5.14, it returns the seed. To
7256 signal that your code will work only on Perls of a recent vintage:
7257
7258 use v5.14; # so srand returns the seed
7259
7260 If "srand" is not called explicitly, it is called implicitly
7261 without a parameter at the first use of the "rand" operator.
7262 However, there are a few situations where programs are likely to
7263 want to call "srand". One is for generating predictable results,
7264 generally for testing or debugging. There, you use srand($seed),
7265 with the same $seed each time. Another case is that you may want
7266 to call "srand" after a "fork" to avoid child processes sharing the
7267 same seed value as the parent (and consequently each other).
7268
7269 Do not call srand() (i.e., without an argument) more than once per
7270 process. The internal state of the random number generator should
7271 contain more entropy than can be provided by any seed, so calling
7272 "srand" again actually loses randomness.
7273
7274 Most implementations of "srand" take an integer and will silently
7275 truncate decimal numbers. This means srand(42) will usually
7276 produce the same results as srand(42.1). To be safe, always pass
7277 "srand" an integer.
7278
7279 A typical use of the returned seed is for a test program which has
7280 too many combinations to test comprehensively in the time available
7281 to it each run. It can test a random subset each time, and should
7282 there be a failure, log the seed used for that run so that it can
7283 later be used to reproduce the same results.
7284
7285 If the "PERL_RAND_SEED" environment variable is set to a non-
7286 negative integer during process startup then calls to srand() with
7287 no arguments will initialize the perl random number generator with
7288 a consistent seed each time it is called, whether called explicitly
7289 with no arguments or implicitly via use of rand(). The exact
7290 seeding that a given "PERL_RAND_SEED" will produce is deliberately
7291 unspecified, but using different values for "PERL_RAND_SEED" should
7292 produce different results. This is intended for debugging and
7293 performance analysis and is only guaranteed to produce consistent
7294 results between invocations of the same perl executable running the
7295 same code when all other factors are equal. The environment
7296 variable is read only once during process startup, and changing it
7297 during the program flow will not affect the currently running
7298 process. See perlrun for more details.
7299
7300 "rand" is not cryptographically secure. You should not rely on it
7301 in security-sensitive situations. As of this writing, a number of
7302 third-party CPAN modules offer random number generators intended by
7303 their authors to be cryptographically secure, including:
7304 Data::Entropy, Crypt::Random, Math::Random::Secure, and
7305 Math::TrulyRandom.
7306
7307 stat FILEHANDLE
7308 stat EXPR
7309 stat DIRHANDLE
7310 stat
7311 Returns a 13-element list giving the status info for a file, either
7312 the file opened via FILEHANDLE or DIRHANDLE, or named by EXPR. If
7313 EXPR is omitted, it stats $_ (not "_"!). Returns the empty list if
7314 "stat" fails. Typically used as follows:
7315
7316 my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
7317 $atime,$mtime,$ctime,$blksize,$blocks)
7318 = stat($filename);
7319
7320 Not all fields are supported on all filesystem types. Here are the
7321 meanings of the fields:
7322
7323 0 dev device number of filesystem
7324 1 ino inode number
7325 2 mode file mode (type and permissions)
7326 3 nlink number of (hard) links to the file
7327 4 uid numeric user ID of file's owner
7328 5 gid numeric group ID of file's owner
7329 6 rdev the device identifier (special files only)
7330 7 size total size of file, in bytes
7331 8 atime last access time in seconds since the epoch
7332 9 mtime last modify time in seconds since the epoch
7333 10 ctime inode change time in seconds since the epoch (*)
7334 11 blksize preferred I/O size in bytes for interacting with the
7335 file (may vary from file to file)
7336 12 blocks actual number of system-specific blocks allocated
7337 on disk (often, but not always, 512 bytes each)
7338
7339 (The epoch was at 00:00 January 1, 1970 GMT.)
7340
7341 (*) Not all fields are supported on all filesystem types. Notably,
7342 the ctime field is non-portable. In particular, you cannot expect
7343 it to be a "creation time"; see "Files and Filesystems" in perlport
7344 for details.
7345
7346 If "stat" is passed the special filehandle consisting of an
7347 underline, no stat is done, but the current contents of the stat
7348 structure from the last "stat", "lstat", or filetest are returned.
7349 Example:
7350
7351 if (-x $file && (($d) = stat(_)) && $d < 0) {
7352 print "$file is executable NFS file\n";
7353 }
7354
7355 (This works on machines only for which the device number is
7356 negative under NFS.)
7357
7358 On some platforms inode numbers are of a type larger than perl
7359 knows how to handle as integer numerical values. If necessary, an
7360 inode number will be returned as a decimal string in order to
7361 preserve the entire value. If used in a numeric context, this will
7362 be converted to a floating-point numerical value, with rounding, a
7363 fate that is best avoided. Therefore, you should prefer to compare
7364 inode numbers using "eq" rather than "==". "eq" will work fine on
7365 inode numbers that are represented numerically, as well as those
7366 represented as strings.
7367
7368 Because the mode contains both the file type and its permissions,
7369 you should mask off the file type portion and (s)printf using a
7370 "%o" if you want to see the real permissions.
7371
7372 my $mode = (stat($filename))[2];
7373 printf "Permissions are %04o\n", $mode & 07777;
7374
7375 In scalar context, "stat" returns a boolean value indicating
7376 success or failure, and, if successful, sets the information
7377 associated with the special filehandle "_".
7378
7379 The File::stat module provides a convenient, by-name access
7380 mechanism:
7381
7382 use File::stat;
7383 my $sb = stat($filename);
7384 printf "File is %s, size is %s, perm %04o, mtime %s\n",
7385 $filename, $sb->size, $sb->mode & 07777,
7386 scalar localtime $sb->mtime;
7387
7388 You can import symbolic mode constants ("S_IF*") and functions
7389 ("S_IS*") from the Fcntl module:
7390
7391 use Fcntl ':mode';
7392
7393 my $mode = (stat($filename))[2];
7394
7395 my $user_rwx = ($mode & S_IRWXU) >> 6;
7396 my $group_read = ($mode & S_IRGRP) >> 3;
7397 my $other_execute = $mode & S_IXOTH;
7398
7399 printf "Permissions are %04o\n", S_IMODE($mode), "\n";
7400
7401 my $is_setuid = $mode & S_ISUID;
7402 my $is_directory = S_ISDIR($mode);
7403
7404 You could write the last two using the "-u" and "-d" operators.
7405 Commonly available "S_IF*" constants are:
7406
7407 # Permissions: read, write, execute, for user, group, others.
7408
7409 S_IRWXU S_IRUSR S_IWUSR S_IXUSR
7410 S_IRWXG S_IRGRP S_IWGRP S_IXGRP
7411 S_IRWXO S_IROTH S_IWOTH S_IXOTH
7412
7413 # Setuid/Setgid/Stickiness/SaveText.
7414 # Note that the exact meaning of these is system-dependent.
7415
7416 S_ISUID S_ISGID S_ISVTX S_ISTXT
7417
7418 # File types. Not all are necessarily available on
7419 # your system.
7420
7421 S_IFREG S_IFDIR S_IFLNK S_IFBLK S_IFCHR
7422 S_IFIFO S_IFSOCK S_IFWHT S_ENFMT
7423
7424 # The following are compatibility aliases for S_IRUSR,
7425 # S_IWUSR, and S_IXUSR.
7426
7427 S_IREAD S_IWRITE S_IEXEC
7428
7429 and the "S_IF*" functions are
7430
7431 S_IMODE($mode) the part of $mode containing the permission
7432 bits and the setuid/setgid/sticky bits
7433
7434 S_IFMT($mode) the part of $mode containing the file type
7435 which can be bit-anded with (for example)
7436 S_IFREG or with the following functions
7437
7438 # The operators -f, -d, -l, -b, -c, -p, and -S.
7439
7440 S_ISREG($mode) S_ISDIR($mode) S_ISLNK($mode)
7441 S_ISBLK($mode) S_ISCHR($mode) S_ISFIFO($mode) S_ISSOCK($mode)
7442
7443 # No direct -X operator counterpart, but for the first one
7444 # the -g operator is often equivalent. The ENFMT stands for
7445 # record flocking enforcement, a platform-dependent feature.
7446
7447 S_ISENFMT($mode) S_ISWHT($mode)
7448
7449 See your native chmod(2) and stat(2) documentation for more details
7450 about the "S_*" constants. To get status info for a symbolic link
7451 instead of the target file behind the link, use the "lstat"
7452 function.
7453
7454 Portability issues: "stat" in perlport.
7455
7456 state VARLIST
7457 state TYPE VARLIST
7458 state VARLIST : ATTRS
7459 state TYPE VARLIST : ATTRS
7460 "state" declares a lexically scoped variable, just like "my".
7461 However, those variables will never be reinitialized, contrary to
7462 lexical variables that are reinitialized each time their enclosing
7463 block is entered. See "Persistent Private Variables" in perlsub
7464 for details.
7465
7466 If more than one variable is listed, the list must be placed in
7467 parentheses. With a parenthesised list, "undef" can be used as a
7468 dummy placeholder. However, since initialization of state
7469 variables in such lists is currently not possible this would serve
7470 no purpose.
7471
7472 Redeclaring a variable in the same scope or statement will "shadow"
7473 the previous declaration, creating a new instance and preventing
7474 access to the previous one. This is usually undesired and, if
7475 warnings are enabled, will result in a warning in the "shadow"
7476 category.
7477
7478 "state" is available only if the "state" feature is enabled or if
7479 it is prefixed with "CORE::". The "state" feature is enabled
7480 automatically with a "use v5.10" (or higher) declaration in the
7481 current scope.
7482
7483 study SCALAR
7484 study
7485 At this time, "study" does nothing. This may change in the future.
7486
7487 Prior to Perl version 5.16, it would create an inverted index of
7488 all characters that occurred in the given SCALAR (or $_ if
7489 unspecified). When matching a pattern, the rarest character from
7490 the pattern would be looked up in this index. Rarity was based on
7491 some static frequency tables constructed from some C programs and
7492 English text.
7493
7494 sub NAME BLOCK
7495 sub NAME (PROTO) BLOCK
7496 sub NAME : ATTRS BLOCK
7497 sub NAME (PROTO) : ATTRS BLOCK
7498 This is subroutine definition, not a real function per se. Without
7499 a BLOCK it's just a forward declaration. Without a NAME, it's an
7500 anonymous function declaration, so does return a value: the CODE
7501 ref of the closure just created.
7502
7503 See perlsub and perlref for details about subroutines and
7504 references; see attributes and Attribute::Handlers for more
7505 information about attributes.
7506
7507 __SUB__
7508 A special token that returns a reference to the current subroutine,
7509 or "undef" outside of a subroutine.
7510
7511 The behaviour of "__SUB__" within a regex code block (such as
7512 "/(?{...})/") is subject to change.
7513
7514 This token is only available under "use v5.16" or the "current_sub"
7515 feature. See feature.
7516
7517 substr EXPR,OFFSET,LENGTH,REPLACEMENT
7518 substr EXPR,OFFSET,LENGTH
7519 substr EXPR,OFFSET
7520 Extracts a substring out of EXPR and returns it. First character
7521 is at offset zero. If OFFSET is negative, starts that far back
7522 from the end of the string. If LENGTH is omitted, returns
7523 everything through the end of the string. If LENGTH is negative,
7524 leaves that many characters off the end of the string.
7525
7526 my $s = "The black cat climbed the green tree";
7527 my $color = substr $s, 4, 5; # black
7528 my $middle = substr $s, 4, -11; # black cat climbed the
7529 my $end = substr $s, 14; # climbed the green tree
7530 my $tail = substr $s, -4; # tree
7531 my $z = substr $s, -4, 2; # tr
7532
7533 You can use the "substr" function as an lvalue, in which case EXPR
7534 must itself be an lvalue. If you assign something shorter than
7535 LENGTH, the string will shrink, and if you assign something longer
7536 than LENGTH, the string will grow to accommodate it. To keep the
7537 string the same length, you may need to pad or chop your value
7538 using "sprintf".
7539
7540 If OFFSET and LENGTH specify a substring that is partly outside the
7541 string, only the part within the string is returned. If the
7542 substring is beyond either end of the string, "substr" returns the
7543 undefined value and produces a warning. When used as an lvalue,
7544 specifying a substring that is entirely outside the string raises
7545 an exception. Here's an example showing the behavior for boundary
7546 cases:
7547
7548 my $name = 'fred';
7549 substr($name, 4) = 'dy'; # $name is now 'freddy'
7550 my $null = substr $name, 6, 2; # returns "" (no warning)
7551 my $oops = substr $name, 7; # returns undef, with warning
7552 substr($name, 7) = 'gap'; # raises an exception
7553
7554 An alternative to using "substr" as an lvalue is to specify the
7555 REPLACEMENT string as the 4th argument. This allows you to replace
7556 parts of the EXPR and return what was there before in one
7557 operation, just as you can with "splice".
7558
7559 my $s = "The black cat climbed the green tree";
7560 my $z = substr $s, 14, 7, "jumped from"; # climbed
7561 # $s is now "The black cat jumped from the green tree"
7562
7563 Note that the lvalue returned by the three-argument version of
7564 "substr" acts as a 'magic bullet'; each time it is assigned to, it
7565 remembers which part of the original string is being modified; for
7566 example:
7567
7568 my $x = '1234';
7569 for (substr($x,1,2)) {
7570 $_ = 'a'; print $x,"\n"; # prints 1a4
7571 $_ = 'xyz'; print $x,"\n"; # prints 1xyz4
7572 $x = '56789';
7573 $_ = 'pq'; print $x,"\n"; # prints 5pq9
7574 }
7575
7576 With negative offsets, it remembers its position from the end of
7577 the string when the target string is modified:
7578
7579 my $x = '1234';
7580 for (substr($x, -3, 2)) {
7581 $_ = 'a'; print $x,"\n"; # prints 1a4, as above
7582 $x = 'abcdefg';
7583 print $_,"\n"; # prints f
7584 }
7585
7586 Prior to Perl version 5.10, the result of using an lvalue multiple
7587 times was unspecified. Prior to 5.16, the result with negative
7588 offsets was unspecified.
7589
7590 symlink OLDFILE,NEWFILE
7591 Creates a new filename symbolically linked to the old filename.
7592 Returns 1 for success, 0 otherwise. On systems that don't support
7593 symbolic links, raises an exception. To check for that, use eval:
7594
7595 my $symlink_exists = eval { symlink("",""); 1 };
7596
7597 Portability issues: "symlink" in perlport.
7598
7599 syscall NUMBER, LIST
7600 Calls the system call specified as the first element of the list,
7601 passing the remaining elements as arguments to the system call. If
7602 unimplemented, raises an exception. The arguments are interpreted
7603 as follows: if a given argument is numeric, the argument is passed
7604 as an int. If not, the pointer to the string value is passed. You
7605 are responsible to make sure a string is pre-extended long enough
7606 to receive any result that might be written into a string. You
7607 can't use a string literal (or other read-only string) as an
7608 argument to "syscall" because Perl has to assume that any string
7609 pointer might be written through. If your integer arguments are
7610 not literals and have never been interpreted in a numeric context,
7611 you may need to add 0 to them to force them to look like numbers.
7612 This emulates the "syswrite" function (or vice versa):
7613
7614 require 'syscall.ph'; # may need to run h2ph
7615 my $s = "hi there\n";
7616 syscall(SYS_write(), fileno(STDOUT), $s, length $s);
7617
7618 Note that Perl supports passing of up to only 14 arguments to your
7619 syscall, which in practice should (usually) suffice.
7620
7621 Syscall returns whatever value returned by the system call it
7622 calls. If the system call fails, "syscall" returns -1 and sets $!
7623 (errno). Note that some system calls can legitimately return -1.
7624 The proper way to handle such calls is to assign "$! = 0" before
7625 the call, then check the value of $! if "syscall" returns -1.
7626
7627 There's a problem with "syscall(SYS_pipe())": it returns the file
7628 number of the read end of the pipe it creates, but there is no way
7629 to retrieve the file number of the other end. You can avoid this
7630 problem by using "pipe" instead.
7631
7632 Portability issues: "syscall" in perlport.
7633
7634 sysopen FILEHANDLE,FILENAME,MODE
7635 sysopen FILEHANDLE,FILENAME,MODE,PERMS
7636 Opens the file whose filename is given by FILENAME, and associates
7637 it with FILEHANDLE. If FILEHANDLE is an expression, its value is
7638 used as the real filehandle wanted; an undefined scalar will be
7639 suitably autovivified. This function calls the underlying
7640 operating system's open(2) function with the parameters FILENAME,
7641 MODE, and PERMS.
7642
7643 Returns true on success and "undef" otherwise.
7644
7645 PerlIO layers will be applied to the handle the same way they would
7646 in an "open" call that does not specify layers. That is, the
7647 current value of "${^OPEN}" as set by the open pragma in a lexical
7648 scope, or the "-C" commandline option or "PERL_UNICODE" environment
7649 variable in the main program scope, falling back to the platform
7650 defaults as described in "Defaults and how to override them" in
7651 PerlIO. If you want to remove any layers that may transform the
7652 byte stream, use "binmode" after opening it.
7653
7654 The possible values and flag bits of the MODE parameter are system-
7655 dependent; they are available via the standard module "Fcntl". See
7656 the documentation of your operating system's open(2) syscall to see
7657 which values and flag bits are available. You may combine several
7658 flags using the "|"-operator.
7659
7660 Some of the most common values are "O_RDONLY" for opening the file
7661 in read-only mode, "O_WRONLY" for opening the file in write-only
7662 mode, and "O_RDWR" for opening the file in read-write mode.
7663
7664 For historical reasons, some values work on almost every system
7665 supported by Perl: 0 means read-only, 1 means write-only, and 2
7666 means read/write. We know that these values do not work under
7667 OS/390; you probably don't want to use them in new code.
7668
7669 If the file named by FILENAME does not exist and the "open" call
7670 creates it (typically because MODE includes the "O_CREAT" flag),
7671 then the value of PERMS specifies the permissions of the newly
7672 created file. If you omit the PERMS argument to "sysopen", Perl
7673 uses the octal value 0666. These permission values need to be in
7674 octal, and are modified by your process's current "umask".
7675
7676 In many systems the "O_EXCL" flag is available for opening files in
7677 exclusive mode. This is not locking: exclusiveness means here that
7678 if the file already exists, "sysopen" fails. "O_EXCL" may not work
7679 on network filesystems, and has no effect unless the "O_CREAT" flag
7680 is set as well. Setting "O_CREAT|O_EXCL" prevents the file from
7681 being opened if it is a symbolic link. It does not protect against
7682 symbolic links in the file's path.
7683
7684 Sometimes you may want to truncate an already-existing file. This
7685 can be done using the "O_TRUNC" flag. The behavior of "O_TRUNC"
7686 with "O_RDONLY" is undefined.
7687
7688 You should seldom if ever use 0644 as argument to "sysopen",
7689 because that takes away the user's option to have a more permissive
7690 umask. Better to omit it. See "umask" for more on this.
7691
7692 This function has no direct relation to the usage of "sysread",
7693 "syswrite", or "sysseek". A handle opened with this function can
7694 be used with buffered IO just as one opened with "open" can be used
7695 with unbuffered IO.
7696
7697 Note that under Perls older than 5.8.0, "sysopen" depends on the
7698 fdopen(3) C library function. On many Unix systems, fdopen(3) is
7699 known to fail when file descriptors exceed a certain value,
7700 typically 255. If you need more file descriptors than that,
7701 consider using the "POSIX::open" function. For Perls 5.8.0 and
7702 later, PerlIO is (most often) the default.
7703
7704 See perlopentut for a kinder, gentler explanation of opening files.
7705
7706 Portability issues: "sysopen" in perlport.
7707
7708 sysread FILEHANDLE,SCALAR,LENGTH,OFFSET
7709 sysread FILEHANDLE,SCALAR,LENGTH
7710 Attempts to read LENGTH bytes of data into variable SCALAR from the
7711 specified FILEHANDLE, using read(2). It bypasses any PerlIO layers
7712 including buffered IO (but is affected by the presence of the
7713 ":utf8" layer as described later), so mixing this with other kinds
7714 of reads, "print", "write", "seek", "tell", or "eof" can cause
7715 confusion because the ":perlio" or ":crlf" layers usually buffer
7716 data. Returns the number of bytes actually read, 0 at end of file,
7717 or undef if there was an error (in the latter case $! is also set).
7718 SCALAR will be grown or shrunk so that the last byte actually read
7719 is the last byte of the scalar after the read.
7720
7721 An OFFSET may be specified to place the read data at some place in
7722 the string other than the beginning. A negative OFFSET specifies
7723 placement at that many characters counting backwards from the end
7724 of the string. A positive OFFSET greater than the length of SCALAR
7725 results in the string being padded to the required size with "\0"
7726 bytes before the result of the read is appended.
7727
7728 There is no syseof() function, which is ok, since "eof" doesn't
7729 work well on device files (like ttys) anyway. Use "sysread" and
7730 check for a return value of 0 to decide whether you're done.
7731
7732 Note that if the filehandle has been marked as ":utf8", "sysread"
7733 will throw an exception. The :encoding(...) layer implicitly
7734 introduces the ":utf8" layer. See "binmode", "open", and the open
7735 pragma.
7736
7737 sysseek FILEHANDLE,POSITION,WHENCE
7738 Sets FILEHANDLE's system position in bytes using lseek(2).
7739 FILEHANDLE may be an expression whose value gives the name of the
7740 filehandle. The values for WHENCE are 0 to set the new position to
7741 POSITION; 1 to set it to the current position plus POSITION; and 2
7742 to set it to EOF plus POSITION, typically negative.
7743
7744 Note the emphasis on bytes: even if the filehandle has been set to
7745 operate on characters (for example using the :encoding(UTF-8) I/O
7746 layer), the "seek", "tell", and "sysseek" family of functions use
7747 byte offsets, not character offsets, because seeking to a character
7748 offset would be very slow in a UTF-8 file.
7749
7750 "sysseek" bypasses normal buffered IO, so mixing it with reads
7751 other than "sysread" (for example "readline" or "read"), "print",
7752 "write", "seek", "tell", or "eof" may cause confusion.
7753
7754 For WHENCE, you may also use the constants "SEEK_SET", "SEEK_CUR",
7755 and "SEEK_END" (start of the file, current position, end of the
7756 file) from the Fcntl module. Use of the constants is also more
7757 portable than relying on 0, 1, and 2. For example to define a
7758 "systell" function:
7759
7760 use Fcntl 'SEEK_CUR';
7761 sub systell { sysseek($_[0], 0, SEEK_CUR) }
7762
7763 Returns the new position, or the undefined value on failure. A
7764 position of zero is returned as the string "0 but true"; thus
7765 "sysseek" returns true on success and false on failure, yet you can
7766 still easily determine the new position.
7767
7768 system LIST
7769 system PROGRAM LIST
7770 Does exactly the same thing as "exec", except that a fork is done
7771 first and the parent process waits for the child process to exit.
7772 Note that argument processing varies depending on the number of
7773 arguments. If there is more than one argument in LIST, or if LIST
7774 is an array with more than one value, starts the program given by
7775 the first element of the list with arguments given by the rest of
7776 the list. If there is only one scalar argument, the argument is
7777 checked for shell metacharacters, and if there are any, the entire
7778 argument is passed to the system's command shell for parsing (this
7779 is "/bin/sh -c" on Unix platforms, but varies on other platforms).
7780 If there are no shell metacharacters in the argument, it is split
7781 into words and passed directly to "execvp", which is more
7782 efficient. On Windows, only the "system PROGRAM LIST" syntax will
7783 reliably avoid using the shell; "system LIST", even with more than
7784 one element, will fall back to the shell if the first spawn fails.
7785
7786 Perl will attempt to flush all files opened for output before any
7787 operation that may do a fork, but this may not be supported on some
7788 platforms (see perlport). To be safe, you may need to set $|
7789 ($AUTOFLUSH in English) or call the "autoflush" method of
7790 "IO::Handle" on any open handles.
7791
7792 The return value is the exit status of the program as returned by
7793 the "wait" call. To get the actual exit value, shift right by
7794 eight (see below). See also "exec". This is not what you want to
7795 use to capture the output from a command; for that you should use
7796 merely backticks or "qx//", as described in "`STRING`" in perlop.
7797 Return value of -1 indicates a failure to start the program or an
7798 error of the wait(2) system call (inspect $! for the reason).
7799
7800 If you'd like to make "system" (and many other bits of Perl) die on
7801 error, have a look at the autodie pragma.
7802
7803 Like "exec", "system" allows you to lie to a program about its name
7804 if you use the "system PROGRAM LIST" syntax. Again, see "exec".
7805
7806 Since "SIGINT" and "SIGQUIT" are ignored during the execution of
7807 "system", if you expect your program to terminate on receipt of
7808 these signals you will need to arrange to do so yourself based on
7809 the return value.
7810
7811 my @args = ("command", "arg1", "arg2");
7812 system(@args) == 0
7813 or die "system @args failed: $?";
7814
7815 If you'd like to manually inspect "system"'s failure, you can check
7816 all possible failure modes by inspecting $? like this:
7817
7818 if ($? == -1) {
7819 print "failed to execute: $!\n";
7820 }
7821 elsif ($? & 127) {
7822 printf "child died with signal %d, %s coredump\n",
7823 ($? & 127), ($? & 128) ? 'with' : 'without';
7824 }
7825 else {
7826 printf "child exited with value %d\n", $? >> 8;
7827 }
7828
7829 Alternatively, you may inspect the value of
7830 "${^CHILD_ERROR_NATIVE}" with the "W*()" calls from the POSIX
7831 module.
7832
7833 When "system"'s arguments are executed indirectly by the shell,
7834 results and return codes are subject to its quirks. See "`STRING`"
7835 in perlop and "exec" for details.
7836
7837 Since "system" does a "fork" and "wait" it may affect a "SIGCHLD"
7838 handler. See perlipc for details.
7839
7840 Portability issues: "system" in perlport.
7841
7842 syswrite FILEHANDLE,SCALAR,LENGTH,OFFSET
7843 syswrite FILEHANDLE,SCALAR,LENGTH
7844 syswrite FILEHANDLE,SCALAR
7845 Attempts to write LENGTH bytes of data from variable SCALAR to the
7846 specified FILEHANDLE, using write(2). If LENGTH is not specified,
7847 writes whole SCALAR. It bypasses any PerlIO layers including
7848 buffered IO (but is affected by the presence of the ":utf8" layer
7849 as described later), so mixing this with reads (other than
7850 "sysread)"), "print", "write", "seek", "tell", or "eof" may cause
7851 confusion because the ":perlio" and ":crlf" layers usually buffer
7852 data. Returns the number of bytes actually written, or "undef" if
7853 there was an error (in this case the errno variable $! is also
7854 set). If the LENGTH is greater than the data available in the
7855 SCALAR after the OFFSET, only as much data as is available will be
7856 written.
7857
7858 An OFFSET may be specified to write the data from some part of the
7859 string other than the beginning. A negative OFFSET specifies
7860 writing that many characters counting backwards from the end of the
7861 string. If SCALAR is of length zero, you can only use an OFFSET of
7862 0.
7863
7864 WARNING: If the filehandle is marked ":utf8", "syswrite" will raise
7865 an exception. The :encoding(...) layer implicitly introduces the
7866 ":utf8" layer. Alternately, if the handle is not marked with an
7867 encoding but you attempt to write characters with code points over
7868 255, raises an exception. See "binmode", "open", and the open
7869 pragma.
7870
7871 tell FILEHANDLE
7872 tell
7873 Returns the current position in bytes for FILEHANDLE, or -1 on
7874 error. FILEHANDLE may be an expression whose value gives the name
7875 of the actual filehandle. If FILEHANDLE is omitted, assumes the
7876 file last read.
7877
7878 Note the emphasis on bytes: even if the filehandle has been set to
7879 operate on characters (for example using the :encoding(UTF-8) I/O
7880 layer), the "seek", "tell", and "sysseek" family of functions use
7881 byte offsets, not character offsets, because seeking to a character
7882 offset would be very slow in a UTF-8 file.
7883
7884 The return value of "tell" for the standard streams like the STDIN
7885 depends on the operating system: it may return -1 or something
7886 else. "tell" on pipes, fifos, and sockets usually returns -1.
7887
7888 There is no "systell" function. Use "sysseek($fh, 0, 1)" for that.
7889
7890 Do not use "tell" (or other buffered I/O operations) on a
7891 filehandle that has been manipulated by "sysread", "syswrite", or
7892 "sysseek". Those functions ignore the buffering, while "tell" does
7893 not.
7894
7895 telldir DIRHANDLE
7896 Returns the current position of the "readdir" routines on
7897 DIRHANDLE. Value may be given to "seekdir" to access a particular
7898 location in a directory. "telldir" has the same caveats about
7899 possible directory compaction as the corresponding system library
7900 routine.
7901
7902 tie VARIABLE,CLASSNAME,LIST
7903 This function binds a variable to a package class that will provide
7904 the implementation for the variable. VARIABLE is the name of the
7905 variable to be enchanted. CLASSNAME is the name of a class
7906 implementing objects of correct type. Any additional arguments are
7907 passed to the appropriate constructor method of the class (meaning
7908 "TIESCALAR", "TIEHANDLE", "TIEARRAY", or "TIEHASH"). Typically
7909 these are arguments such as might be passed to the dbm_open(3)
7910 function of C. The object returned by the constructor is also
7911 returned by the "tie" function, which would be useful if you want
7912 to access other methods in CLASSNAME.
7913
7914 Note that functions such as "keys" and "values" may return huge
7915 lists when used on large objects, like DBM files. You may prefer
7916 to use the "each" function to iterate over such. Example:
7917
7918 # print out history file offsets
7919 use NDBM_File;
7920 tie(my %HIST, 'NDBM_File', '/usr/lib/news/history', 1, 0);
7921 while (my ($key,$val) = each %HIST) {
7922 print $key, ' = ', unpack('L', $val), "\n";
7923 }
7924
7925 A class implementing a hash should have the following methods:
7926
7927 TIEHASH classname, LIST
7928 FETCH this, key
7929 STORE this, key, value
7930 DELETE this, key
7931 CLEAR this
7932 EXISTS this, key
7933 FIRSTKEY this
7934 NEXTKEY this, lastkey
7935 SCALAR this
7936 DESTROY this
7937 UNTIE this
7938
7939 A class implementing an ordinary array should have the following
7940 methods:
7941
7942 TIEARRAY classname, LIST
7943 FETCH this, key
7944 STORE this, key, value
7945 FETCHSIZE this
7946 STORESIZE this, count
7947 CLEAR this
7948 PUSH this, LIST
7949 POP this
7950 SHIFT this
7951 UNSHIFT this, LIST
7952 SPLICE this, offset, length, LIST
7953 EXTEND this, count
7954 DELETE this, key
7955 EXISTS this, key
7956 DESTROY this
7957 UNTIE this
7958
7959 A class implementing a filehandle should have the following
7960 methods:
7961
7962 TIEHANDLE classname, LIST
7963 READ this, scalar, length, offset
7964 READLINE this
7965 GETC this
7966 WRITE this, scalar, length, offset
7967 PRINT this, LIST
7968 PRINTF this, format, LIST
7969 BINMODE this
7970 EOF this
7971 FILENO this
7972 SEEK this, position, whence
7973 TELL this
7974 OPEN this, mode, LIST
7975 CLOSE this
7976 DESTROY this
7977 UNTIE this
7978
7979 A class implementing a scalar should have the following methods:
7980
7981 TIESCALAR classname, LIST
7982 FETCH this,
7983 STORE this, value
7984 DESTROY this
7985 UNTIE this
7986
7987 Not all methods indicated above need be implemented. See perltie,
7988 Tie::Hash, Tie::Array, Tie::Scalar, and Tie::Handle.
7989
7990 Unlike "dbmopen", the "tie" function will not "use" or "require" a
7991 module for you; you need to do that explicitly yourself. See
7992 DB_File or the Config module for interesting "tie" implementations.
7993
7994 For further details see perltie, "tied".
7995
7996 tied VARIABLE
7997 Returns a reference to the object underlying VARIABLE (the same
7998 value that was originally returned by the "tie" call that bound the
7999 variable to a package.) Returns the undefined value if VARIABLE
8000 isn't tied to a package.
8001
8002 time
8003 Returns the number of non-leap seconds since whatever time the
8004 system considers to be the epoch, suitable for feeding to "gmtime"
8005 and "localtime". On most systems the epoch is 00:00:00 UTC,
8006 January 1, 1970; a prominent exception being Mac OS Classic which
8007 uses 00:00:00, January 1, 1904 in the current local time zone for
8008 its epoch.
8009
8010 For measuring time in better granularity than one second, use the
8011 Time::HiRes module from Perl 5.8 onwards (or from CPAN before
8012 then), or, if you have gettimeofday(2), you may be able to use the
8013 "syscall" interface of Perl. See perlfaq8 for details.
8014
8015 For date and time processing look at the many related modules on
8016 CPAN. For a comprehensive date and time representation look at the
8017 DateTime module.
8018
8019 times
8020 Returns a four-element list giving the user and system times in
8021 seconds for this process and any exited children of this process.
8022
8023 my ($user,$system,$cuser,$csystem) = times;
8024
8025 In scalar context, "times" returns $user.
8026
8027 Children's times are only included for terminated children.
8028
8029 Portability issues: "times" in perlport.
8030
8031 tr///
8032 The transliteration operator. Same as "y///". See "Quote-Like
8033 Operators" in perlop.
8034
8035 truncate FILEHANDLE,LENGTH
8036 truncate EXPR,LENGTH
8037 Truncates the file opened on FILEHANDLE, or named by EXPR, to the
8038 specified length. Raises an exception if truncate isn't
8039 implemented on your system. Returns true if successful, "undef" on
8040 error.
8041
8042 The behavior is undefined if LENGTH is greater than the length of
8043 the file.
8044
8045 The position in the file of FILEHANDLE is left unchanged. You may
8046 want to call seek before writing to the file.
8047
8048 Portability issues: "truncate" in perlport.
8049
8050 uc EXPR
8051 uc Returns an uppercased version of EXPR. If EXPR is omitted, uses
8052 $_.
8053
8054 my $str = uc("Perl is GREAT"); # "PERL IS GREAT"
8055
8056 This function behaves the same way under various pragmas, such as
8057 in a locale, as "lc" does.
8058
8059 If you want titlecase mapping on initial letters see "ucfirst"
8060 instead.
8061
8062 Note: This is the internal function implementing the "\U" escape in
8063 double-quoted strings.
8064
8065 my $str = "Perl is \Ugreat\E"; # "Perl is GREAT"
8066
8067 ucfirst EXPR
8068 ucfirst
8069 Returns the value of EXPR with the first character in uppercase
8070 (Unicode calls this titlecase). If EXPR is omitted, "ucfirst" uses
8071 $_.
8072
8073 my $str = ucfirst("hello world!"); # "Hello world!"
8074
8075 This function behaves the same way under various pragmas, such as
8076 in a locale, as "lc" does.
8077
8078 Note: This is the internal function implementing the "\u" escape in
8079 double-quoted strings.
8080
8081 my $str = "\uperl\E is great"; # "Perl is great"
8082
8083 umask EXPR
8084 umask
8085 Sets the umask for the process to EXPR and returns the previous
8086 value. If EXPR is omitted, merely returns the current umask.
8087
8088 The Unix permission "rwxr-x---" is represented as three sets of
8089 three bits, or three octal digits: 0750 (the leading 0 indicates
8090 octal and isn't one of the digits). The "umask" value is such a
8091 number representing disabled permissions bits. The permission (or
8092 "mode") values you pass "mkdir" or "sysopen" are modified by your
8093 umask, so even if you tell "sysopen" to create a file with
8094 permissions 0777, if your umask is 0022, then the file will
8095 actually be created with permissions 0755. If your "umask" were
8096 0027 (group can't write; others can't read, write, or execute),
8097 then passing "sysopen" 0666 would create a file with mode 0640
8098 (because "0666 &~ 027" is 0640).
8099
8100 Here's some advice: supply a creation mode of 0666 for regular
8101 files (in "sysopen") and one of 0777 for directories (in "mkdir")
8102 and executable files. This gives users the freedom of choice: if
8103 they want protected files, they might choose process umasks of 022,
8104 027, or even the particularly antisocial mask of 077. Programs
8105 should rarely if ever make policy decisions better left to the
8106 user. The exception to this is when writing files that should be
8107 kept private: mail files, web browser cookies, .rhosts files, and
8108 so on.
8109
8110 If umask(2) is not implemented on your system and you are trying to
8111 restrict access for yourself (i.e., "(EXPR & 0700) > 0"), raises an
8112 exception. If umask(2) is not implemented and you are not trying
8113 to restrict access for yourself, returns "undef".
8114
8115 Remember that a umask is a number, usually given in octal; it is
8116 not a string of octal digits. See also "oct", if all you have is a
8117 string.
8118
8119 Portability issues: "umask" in perlport.
8120
8121 undef EXPR
8122 undef
8123 Undefines the value of EXPR, which must be an lvalue. Use only on
8124 a scalar value, an array (using "@"), a hash (using "%"), a
8125 subroutine (using "&"), or a typeglob (using "*"). Saying "undef
8126 $hash{$key}" will probably not do what you expect on most
8127 predefined variables or DBM list values, so don't do that; see
8128 "delete". Always returns the undefined value. You can omit the
8129 EXPR, in which case nothing is undefined, but you still get an
8130 undefined value that you could, for instance, return from a
8131 subroutine, assign to a variable, or pass as a parameter.
8132 Examples:
8133
8134 undef $foo;
8135 undef $bar{'blurfl'}; # Compare to: delete $bar{'blurfl'};
8136 undef @ary;
8137 undef %hash;
8138 undef &mysub;
8139 undef *xyz; # destroys $xyz, @xyz, %xyz, &xyz, etc.
8140 return (wantarray ? (undef, $errmsg) : undef) if $they_blew_it;
8141 select undef, undef, undef, 0.25;
8142 my ($x, $y, undef, $z) = foo(); # Ignore third value returned
8143
8144 Note that this is a unary operator, not a list operator.
8145
8146 unlink LIST
8147 unlink
8148 Deletes a list of files. On success, it returns the number of
8149 files it successfully deleted. On failure, it returns false and
8150 sets $! (errno):
8151
8152 my $unlinked = unlink 'a', 'b', 'c';
8153 unlink @goners;
8154 unlink glob "*.bak";
8155
8156 On error, "unlink" will not tell you which files it could not
8157 remove. If you want to know which files you could not remove, try
8158 them one at a time:
8159
8160 foreach my $file ( @goners ) {
8161 unlink $file or warn "Could not unlink $file: $!";
8162 }
8163
8164 Note: "unlink" will not attempt to delete directories unless you
8165 are superuser and the -U flag is supplied to Perl. Even if these
8166 conditions are met, be warned that unlinking a directory can
8167 inflict damage on your filesystem. Finally, using "unlink" on
8168 directories is not supported on many operating systems. Use
8169 "rmdir" instead.
8170
8171 If LIST is omitted, "unlink" uses $_.
8172
8173 unpack TEMPLATE,EXPR
8174 unpack TEMPLATE
8175 "unpack" does the reverse of "pack": it takes a string and expands
8176 it out into a list of values. (In scalar context, it returns
8177 merely the first value produced.)
8178
8179 If EXPR is omitted, unpacks the $_ string. See perlpacktut for an
8180 introduction to this function.
8181
8182 The string is broken into chunks described by the TEMPLATE. Each
8183 chunk is converted separately to a value. Typically, either the
8184 string is a result of "pack", or the characters of the string
8185 represent a C structure of some kind.
8186
8187 The TEMPLATE has the same format as in the "pack" function. Here's
8188 a subroutine that does substring:
8189
8190 sub substr {
8191 my ($what, $where, $howmuch) = @_;
8192 unpack("x$where a$howmuch", $what);
8193 }
8194
8195 and then there's
8196
8197 sub ordinal { unpack("W",$_[0]); } # same as ord()
8198
8199 In addition to fields allowed in "pack", you may prefix a field
8200 with a %<number> to indicate that you want a <number>-bit checksum
8201 of the items instead of the items themselves. Default is a 16-bit
8202 checksum. The checksum is calculated by summing numeric values of
8203 expanded values (for string fields the sum of ord($char) is taken;
8204 for bit fields the sum of zeroes and ones).
8205
8206 For example, the following computes the same number as the System V
8207 sum program:
8208
8209 my $checksum = do {
8210 local $/; # slurp!
8211 unpack("%32W*", readline) % 65535;
8212 };
8213
8214 The following efficiently counts the number of set bits in a bit
8215 vector:
8216
8217 my $setbits = unpack("%32b*", $selectmask);
8218
8219 The "p" and "P" formats should be used with care. Since Perl has
8220 no way of checking whether the value passed to "unpack" corresponds
8221 to a valid memory location, passing a pointer value that's not
8222 known to be valid is likely to have disastrous consequences.
8223
8224 If there are more pack codes or if the repeat count of a field or a
8225 group is larger than what the remainder of the input string allows,
8226 the result is not well defined: the repeat count may be decreased,
8227 or "unpack" may produce empty strings or zeros, or it may raise an
8228 exception. If the input string is longer than one described by the
8229 TEMPLATE, the remainder of that input string is ignored.
8230
8231 See "pack" for more examples and notes.
8232
8233 unshift ARRAY,LIST
8234 Add one or more elements to the beginning of an array. This is the
8235 opposite of a "shift".
8236
8237 my @animals = ("cat");
8238 unshift(@animals, "mouse"); # ("mouse", "cat")
8239
8240 my @colors = ("red");
8241 unshift(@colors, ("blue", "green")); # ("blue", "green", "red")
8242
8243 Returns the new number of elements in the updated array.
8244
8245 # Return value is the number of items in the updated array
8246 my $color_count = unshift(@colors, ("yellow", "purple"));
8247
8248 say "There are $color_count colors in the updated array";
8249
8250 Note the LIST is prepended whole, not one element at a time, so the
8251 prepended elements stay in the same order. Use "reverse" to do the
8252 reverse.
8253
8254 Starting with Perl 5.14, an experimental feature allowed "unshift"
8255 to take a scalar expression. This experiment has been deemed
8256 unsuccessful, and was removed as of Perl 5.24.
8257
8258 untie VARIABLE
8259 Breaks the binding between a variable and a package. (See tie.)
8260 Has no effect if the variable is not tied.
8261
8262 use Module VERSION LIST
8263 use Module VERSION
8264 use Module LIST
8265 use Module
8266 Imports some semantics into the current package from the named
8267 module, generally by aliasing certain subroutine or variable names
8268 into your package. It is exactly equivalent to
8269
8270 BEGIN { require Module; Module->import( LIST ); }
8271
8272 except that Module must be a bareword. The importation can be made
8273 conditional by using the if module.
8274
8275 The "BEGIN" forces the "require" and "import" to happen at compile
8276 time. The "require" makes sure the module is loaded into memory if
8277 it hasn't been yet. The "import" is not a builtin; it's just an
8278 ordinary static method call into the "Module" package to tell the
8279 module to import the list of features back into the current
8280 package. The module can implement its "import" method any way it
8281 likes, though most modules just choose to derive their "import"
8282 method via inheritance from the "Exporter" class that is defined in
8283 the "Exporter" module. See Exporter. If no "import" method can be
8284 found, then the call is skipped, even if there is an AUTOLOAD
8285 method.
8286
8287 If you do not want to call the package's "import" method (for
8288 instance, to stop your namespace from being altered), explicitly
8289 supply the empty list:
8290
8291 use Module ();
8292
8293 That is exactly equivalent to
8294
8295 BEGIN { require Module }
8296
8297 If the VERSION argument is present between Module and LIST, then
8298 the "use" will call the "VERSION" method in class Module with the
8299 given version as an argument:
8300
8301 use Module 12.34;
8302
8303 is equivalent to:
8304
8305 BEGIN { require Module; Module->VERSION(12.34) }
8306
8307 The default "VERSION" method, inherited from the "UNIVERSAL" class,
8308 croaks if the given version is larger than the value of the
8309 variable $Module::VERSION.
8310
8311 The VERSION argument cannot be an arbitrary expression. It only
8312 counts as a VERSION argument if it is a version number literal,
8313 starting with either a digit or "v" followed by a digit. Anything
8314 that doesn't look like a version literal will be parsed as the
8315 start of the LIST. Nevertheless, many attempts to use an arbitrary
8316 expression as a VERSION argument will appear to work, because
8317 Exporter's "import" method handles numeric arguments specially,
8318 performing version checks rather than treating them as things to
8319 export.
8320
8321 Again, there is a distinction between omitting LIST ("import"
8322 called with no arguments) and an explicit empty LIST "()" ("import"
8323 not called). Note that there is no comma after VERSION!
8324
8325 Because this is a wide-open interface, pragmas (compiler
8326 directives) are also implemented this way. Some of the currently
8327 implemented pragmas are:
8328
8329 use constant;
8330 use diagnostics;
8331 use integer;
8332 use sigtrap qw(SEGV BUS);
8333 use strict qw(subs vars refs);
8334 use subs qw(afunc blurfl);
8335 use warnings qw(all);
8336 use sort qw(stable);
8337
8338 Some of these pseudo-modules import semantics into the current
8339 block scope (like "strict" or "integer", unlike ordinary modules,
8340 which import symbols into the current package (which are effective
8341 through the end of the file).
8342
8343 Because "use" takes effect at compile time, it doesn't respect the
8344 ordinary flow control of the code being compiled. In particular,
8345 putting a "use" inside the false branch of a conditional doesn't
8346 prevent it from being processed. If a module or pragma only needs
8347 to be loaded conditionally, this can be done using the if pragma:
8348
8349 use if $] < 5.008, "utf8";
8350 use if WANT_WARNINGS, warnings => qw(all);
8351
8352 There's a corresponding "no" declaration that unimports meanings
8353 imported by "use", i.e., it calls "Module->unimport(LIST)" instead
8354 of "import". It behaves just as "import" does with VERSION, an
8355 omitted or empty LIST, or no unimport method being found.
8356
8357 no integer;
8358 no strict 'refs';
8359 no warnings;
8360
8361 See perlmodlib for a list of standard modules and pragmas. See
8362 perlrun for the "-M" and "-m" command-line options to Perl that
8363 give "use" functionality from the command-line.
8364
8365 use VERSION
8366 Lexically enables all features available in the requested version
8367 as defined by the feature pragma, disabling any features not in the
8368 requested version's feature bundle. See feature.
8369
8370 VERSION may be either a v-string such as v5.24.1, which will be
8371 compared to $^V (aka $PERL_VERSION), or a numeric argument of the
8372 form 5.024001, which will be compared to $]. An exception is
8373 raised if VERSION is greater than the version of the current Perl
8374 interpreter; Perl will not attempt to parse the rest of the file.
8375 Compare with "require", which can do a similar check at run time.
8376
8377 If the specified Perl version is 5.12 or higher, strictures are
8378 enabled lexically as with "use strict". Similarly, if the
8379 specified Perl version is 5.35.0 or higher, warnings are enabled.
8380 Later use of "use VERSION" will override all behavior of a previous
8381 "use VERSION", possibly removing the "strict", "warnings", and
8382 "feature" added by it. "use VERSION" does not load the feature.pm,
8383 strict.pm, or warnings.pm files.
8384
8385 In the current implementation, any explicit use of "use strict" or
8386 "no strict" overrides "use VERSION", even if it comes before it.
8387 However, this may be subject to change in a future release of Perl,
8388 so new code should not rely on this fact. It is recommended that a
8389 "use VERSION" declaration be the first significant statement within
8390 a file (possibly after a "package" statement or any amount of
8391 whitespace or comment), so that its effects happen first, and other
8392 pragmata are applied after it.
8393
8394 Specifying VERSION as a numeric argument of the form 5.024001
8395 should generally be avoided as older less readable syntax compared
8396 to v5.24.1. Before perl 5.8.0 released in 2002 the more verbose
8397 numeric form was the only supported syntax, which is why you might
8398 see it in older code.
8399
8400 use v5.24.1; # compile time version check
8401 use 5.24.1; # ditto
8402 use 5.024_001; # ditto; older syntax compatible with perl 5.6
8403
8404 This is often useful if you need to check the current Perl version
8405 before "use"ing library modules that won't work with older versions
8406 of Perl. (We try not to do this more than we have to.)
8407
8408 Symmetrically, "no VERSION" allows you to specify that you want a
8409 version of Perl older than the specified one. Historically this
8410 was added during early designs of the Raku language (formerly "Perl
8411 6"), so that a Perl 5 program could begin
8412
8413 no 6;
8414
8415 to declare that it is not a Perl 6 program. As the two languages
8416 have different implementations, file naming conventions, and other
8417 infrastructure, this feature is now little used in practice and
8418 should be avoided in newly-written code.
8419
8420 Care should be taken when using the "no VERSION" form, as it is
8421 only meant to be used to assert that the running Perl is of a
8422 earlier version than its argument and not to undo the feature-
8423 enabling side effects of "use VERSION".
8424
8425 utime LIST
8426 Changes the access and modification times on each file of a list of
8427 files. The first two elements of the list must be the NUMERIC
8428 access and modification times, in that order. Returns the number
8429 of files successfully changed. The inode change time of each file
8430 is set to the current time. For example, this code has the same
8431 effect as the Unix touch(1) command when the files already exist
8432 and belong to the user running the program:
8433
8434 #!/usr/bin/perl
8435 my $atime = my $mtime = time;
8436 utime $atime, $mtime, @ARGV;
8437
8438 Since Perl 5.8.0, if the first two elements of the list are
8439 "undef", the utime(2) syscall from your C library is called with a
8440 null second argument. On most systems, this will set the file's
8441 access and modification times to the current time (i.e., equivalent
8442 to the example above) and will work even on files you don't own
8443 provided you have write permission:
8444
8445 for my $file (@ARGV) {
8446 utime(undef, undef, $file)
8447 || warn "Couldn't touch $file: $!";
8448 }
8449
8450 Under NFS this will use the time of the NFS server, not the time of
8451 the local machine. If there is a time synchronization problem, the
8452 NFS server and local machine will have different times. The Unix
8453 touch(1) command will in fact normally use this form instead of the
8454 one shown in the first example.
8455
8456 Passing only one of the first two elements as "undef" is equivalent
8457 to passing a 0 and will not have the effect described when both are
8458 "undef". This also triggers an uninitialized warning.
8459
8460 On systems that support futimes(2), you may pass filehandles among
8461 the files. On systems that don't support futimes(2), passing
8462 filehandles raises an exception. Filehandles must be passed as
8463 globs or glob references to be recognized; barewords are considered
8464 filenames.
8465
8466 Portability issues: "utime" in perlport.
8467
8468 values HASH
8469 values ARRAY
8470 In list context, returns a list consisting of all the values of the
8471 named hash. In Perl 5.12 or later only, will also return a list of
8472 the values of an array; prior to that release, attempting to use an
8473 array argument will produce a syntax error. In scalar context,
8474 returns the number of values.
8475
8476 Hash entries are returned in an apparently random order. The
8477 actual random order is specific to a given hash; the exact same
8478 series of operations on two hashes may result in a different order
8479 for each hash. Any insertion into the hash may change the order,
8480 as will any deletion, with the exception that the most recent key
8481 returned by "each" or "keys" may be deleted without changing the
8482 order. So long as a given hash is unmodified you may rely on
8483 "keys", "values" and "each" to repeatedly return the same order as
8484 each other. See "Algorithmic Complexity Attacks" in perlsec for
8485 details on why hash order is randomized. Aside from the guarantees
8486 provided here the exact details of Perl's hash algorithm and the
8487 hash traversal order are subject to change in any release of Perl.
8488 Tied hashes may behave differently to Perl's hashes with respect to
8489 changes in order on insertion and deletion of items.
8490
8491 As a side effect, calling "values" resets the HASH or ARRAY's
8492 internal iterator (see "each") before yielding the values. In
8493 particular, calling "values" in void context resets the iterator
8494 with no other overhead.
8495
8496 Apart from resetting the iterator, "values @array" in list context
8497 is the same as plain @array. (We recommend that you use void
8498 context "keys @array" for this, but reasoned that taking "values
8499 @array" out would require more documentation than leaving it in.)
8500
8501 Note that the values are not copied, which means modifying them
8502 will modify the contents of the hash:
8503
8504 for (values %hash) { s/foo/bar/g } # modifies %hash values
8505 for (@hash{keys %hash}) { s/foo/bar/g } # same
8506
8507 Starting with Perl 5.14, an experimental feature allowed "values"
8508 to take a scalar expression. This experiment has been deemed
8509 unsuccessful, and was removed as of Perl 5.24.
8510
8511 To avoid confusing would-be users of your code who are running
8512 earlier versions of Perl with mysterious syntax errors, put this
8513 sort of thing at the top of your file to signal that your code will
8514 work only on Perls of a recent vintage:
8515
8516 use v5.12; # so keys/values/each work on arrays
8517
8518 See also "keys", "each", and "sort".
8519
8520 vec EXPR,OFFSET,BITS
8521 Treats the string in EXPR as a bit vector made up of elements of
8522 width BITS and returns the value of the element specified by OFFSET
8523 as an unsigned integer. BITS therefore specifies the number of
8524 bits that are reserved for each element in the bit vector. This
8525 must be a power of two from 1 to 32 (or 64, if your platform
8526 supports that).
8527
8528 If BITS is 8, "elements" coincide with bytes of the input string.
8529
8530 If BITS is 16 or more, bytes of the input string are grouped into
8531 chunks of size BITS/8, and each group is converted to a number as
8532 with "pack"/"unpack" with big-endian formats "n"/"N" (and
8533 analogously for BITS==64). See "pack" for details.
8534
8535 If bits is 4 or less, the string is broken into bytes, then the
8536 bits of each byte are broken into 8/BITS groups. Bits of a byte
8537 are numbered in a little-endian-ish way, as in 0x01, 0x02, 0x04,
8538 0x08, 0x10, 0x20, 0x40, 0x80. For example, breaking the single
8539 input byte chr(0x36) into two groups gives a list "(0x6, 0x3)";
8540 breaking it into 4 groups gives "(0x2, 0x1, 0x3, 0x0)".
8541
8542 "vec" may also be assigned to, in which case parentheses are needed
8543 to give the expression the correct precedence as in
8544
8545 vec($image, $max_x * $x + $y, 8) = 3;
8546
8547 If the selected element is outside the string, the value 0 is
8548 returned. If an element off the end of the string is written to,
8549 Perl will first extend the string with sufficiently many zero
8550 bytes. It is an error to try to write off the beginning of the
8551 string (i.e., negative OFFSET).
8552
8553 If the string happens to be encoded as UTF-8 internally (and thus
8554 has the UTF8 flag set), "vec" tries to convert it to use a one-
8555 byte-per-character internal representation. However, if the string
8556 contains characters with values of 256 or higher, a fatal error
8557 will occur.
8558
8559 Strings created with "vec" can also be manipulated with the logical
8560 operators "|", "&", "^", and "~". These operators will assume a
8561 bit vector operation is desired when both operands are strings.
8562 See "Bitwise String Operators" in perlop.
8563
8564 The following code will build up an ASCII string saying
8565 'PerlPerlPerl'. The comments show the string after each step.
8566 Note that this code works in the same way on big-endian or little-
8567 endian machines.
8568
8569 my $foo = '';
8570 vec($foo, 0, 32) = 0x5065726C; # 'Perl'
8571
8572 # $foo eq "Perl" eq "\x50\x65\x72\x6C", 32 bits
8573 print vec($foo, 0, 8); # prints 80 == 0x50 == ord('P')
8574
8575 vec($foo, 2, 16) = 0x5065; # 'PerlPe'
8576 vec($foo, 3, 16) = 0x726C; # 'PerlPerl'
8577 vec($foo, 8, 8) = 0x50; # 'PerlPerlP'
8578 vec($foo, 9, 8) = 0x65; # 'PerlPerlPe'
8579 vec($foo, 20, 4) = 2; # 'PerlPerlPe' . "\x02"
8580 vec($foo, 21, 4) = 7; # 'PerlPerlPer'
8581 # 'r' is "\x72"
8582 vec($foo, 45, 2) = 3; # 'PerlPerlPer' . "\x0c"
8583 vec($foo, 93, 1) = 1; # 'PerlPerlPer' . "\x2c"
8584 vec($foo, 94, 1) = 1; # 'PerlPerlPerl'
8585 # 'l' is "\x6c"
8586
8587 To transform a bit vector into a string or list of 0's and 1's, use
8588 these:
8589
8590 my $bits = unpack("b*", $vector);
8591 my @bits = split(//, unpack("b*", $vector));
8592
8593 If you know the exact length in bits, it can be used in place of
8594 the "*".
8595
8596 Here is an example to illustrate how the bits actually fall in
8597 place:
8598
8599 #!/usr/bin/perl -wl
8600
8601 print <<'EOT';
8602 0 1 2 3
8603 unpack("V",$_) 01234567890123456789012345678901
8604 ------------------------------------------------------------------
8605 EOT
8606
8607 for $w (0..3) {
8608 $width = 2**$w;
8609 for ($shift=0; $shift < $width; ++$shift) {
8610 for ($off=0; $off < 32/$width; ++$off) {
8611 $str = pack("B*", "0"x32);
8612 $bits = (1<<$shift);
8613 vec($str, $off, $width) = $bits;
8614 $res = unpack("b*",$str);
8615 $val = unpack("V", $str);
8616 write;
8617 }
8618 }
8619 }
8620
8621 format STDOUT =
8622 vec($_,@#,@#) = @<< == @######### @>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8623 $off, $width, $bits, $val, $res
8624 .
8625 __END__
8626
8627 Regardless of the machine architecture on which it runs, the
8628 example above should print the following table:
8629
8630 0 1 2 3
8631 unpack("V",$_) 01234567890123456789012345678901
8632 ------------------------------------------------------------------
8633 vec($_, 0, 1) = 1 == 1 10000000000000000000000000000000
8634 vec($_, 1, 1) = 1 == 2 01000000000000000000000000000000
8635 vec($_, 2, 1) = 1 == 4 00100000000000000000000000000000
8636 vec($_, 3, 1) = 1 == 8 00010000000000000000000000000000
8637 vec($_, 4, 1) = 1 == 16 00001000000000000000000000000000
8638 vec($_, 5, 1) = 1 == 32 00000100000000000000000000000000
8639 vec($_, 6, 1) = 1 == 64 00000010000000000000000000000000
8640 vec($_, 7, 1) = 1 == 128 00000001000000000000000000000000
8641 vec($_, 8, 1) = 1 == 256 00000000100000000000000000000000
8642 vec($_, 9, 1) = 1 == 512 00000000010000000000000000000000
8643 vec($_,10, 1) = 1 == 1024 00000000001000000000000000000000
8644 vec($_,11, 1) = 1 == 2048 00000000000100000000000000000000
8645 vec($_,12, 1) = 1 == 4096 00000000000010000000000000000000
8646 vec($_,13, 1) = 1 == 8192 00000000000001000000000000000000
8647 vec($_,14, 1) = 1 == 16384 00000000000000100000000000000000
8648 vec($_,15, 1) = 1 == 32768 00000000000000010000000000000000
8649 vec($_,16, 1) = 1 == 65536 00000000000000001000000000000000
8650 vec($_,17, 1) = 1 == 131072 00000000000000000100000000000000
8651 vec($_,18, 1) = 1 == 262144 00000000000000000010000000000000
8652 vec($_,19, 1) = 1 == 524288 00000000000000000001000000000000
8653 vec($_,20, 1) = 1 == 1048576 00000000000000000000100000000000
8654 vec($_,21, 1) = 1 == 2097152 00000000000000000000010000000000
8655 vec($_,22, 1) = 1 == 4194304 00000000000000000000001000000000
8656 vec($_,23, 1) = 1 == 8388608 00000000000000000000000100000000
8657 vec($_,24, 1) = 1 == 16777216 00000000000000000000000010000000
8658 vec($_,25, 1) = 1 == 33554432 00000000000000000000000001000000
8659 vec($_,26, 1) = 1 == 67108864 00000000000000000000000000100000
8660 vec($_,27, 1) = 1 == 134217728 00000000000000000000000000010000
8661 vec($_,28, 1) = 1 == 268435456 00000000000000000000000000001000
8662 vec($_,29, 1) = 1 == 536870912 00000000000000000000000000000100
8663 vec($_,30, 1) = 1 == 1073741824 00000000000000000000000000000010
8664 vec($_,31, 1) = 1 == 2147483648 00000000000000000000000000000001
8665 vec($_, 0, 2) = 1 == 1 10000000000000000000000000000000
8666 vec($_, 1, 2) = 1 == 4 00100000000000000000000000000000
8667 vec($_, 2, 2) = 1 == 16 00001000000000000000000000000000
8668 vec($_, 3, 2) = 1 == 64 00000010000000000000000000000000
8669 vec($_, 4, 2) = 1 == 256 00000000100000000000000000000000
8670 vec($_, 5, 2) = 1 == 1024 00000000001000000000000000000000
8671 vec($_, 6, 2) = 1 == 4096 00000000000010000000000000000000
8672 vec($_, 7, 2) = 1 == 16384 00000000000000100000000000000000
8673 vec($_, 8, 2) = 1 == 65536 00000000000000001000000000000000
8674 vec($_, 9, 2) = 1 == 262144 00000000000000000010000000000000
8675 vec($_,10, 2) = 1 == 1048576 00000000000000000000100000000000
8676 vec($_,11, 2) = 1 == 4194304 00000000000000000000001000000000
8677 vec($_,12, 2) = 1 == 16777216 00000000000000000000000010000000
8678 vec($_,13, 2) = 1 == 67108864 00000000000000000000000000100000
8679 vec($_,14, 2) = 1 == 268435456 00000000000000000000000000001000
8680 vec($_,15, 2) = 1 == 1073741824 00000000000000000000000000000010
8681 vec($_, 0, 2) = 2 == 2 01000000000000000000000000000000
8682 vec($_, 1, 2) = 2 == 8 00010000000000000000000000000000
8683 vec($_, 2, 2) = 2 == 32 00000100000000000000000000000000
8684 vec($_, 3, 2) = 2 == 128 00000001000000000000000000000000
8685 vec($_, 4, 2) = 2 == 512 00000000010000000000000000000000
8686 vec($_, 5, 2) = 2 == 2048 00000000000100000000000000000000
8687 vec($_, 6, 2) = 2 == 8192 00000000000001000000000000000000
8688 vec($_, 7, 2) = 2 == 32768 00000000000000010000000000000000
8689 vec($_, 8, 2) = 2 == 131072 00000000000000000100000000000000
8690 vec($_, 9, 2) = 2 == 524288 00000000000000000001000000000000
8691 vec($_,10, 2) = 2 == 2097152 00000000000000000000010000000000
8692 vec($_,11, 2) = 2 == 8388608 00000000000000000000000100000000
8693 vec($_,12, 2) = 2 == 33554432 00000000000000000000000001000000
8694 vec($_,13, 2) = 2 == 134217728 00000000000000000000000000010000
8695 vec($_,14, 2) = 2 == 536870912 00000000000000000000000000000100
8696 vec($_,15, 2) = 2 == 2147483648 00000000000000000000000000000001
8697 vec($_, 0, 4) = 1 == 1 10000000000000000000000000000000
8698 vec($_, 1, 4) = 1 == 16 00001000000000000000000000000000
8699 vec($_, 2, 4) = 1 == 256 00000000100000000000000000000000
8700 vec($_, 3, 4) = 1 == 4096 00000000000010000000000000000000
8701 vec($_, 4, 4) = 1 == 65536 00000000000000001000000000000000
8702 vec($_, 5, 4) = 1 == 1048576 00000000000000000000100000000000
8703 vec($_, 6, 4) = 1 == 16777216 00000000000000000000000010000000
8704 vec($_, 7, 4) = 1 == 268435456 00000000000000000000000000001000
8705 vec($_, 0, 4) = 2 == 2 01000000000000000000000000000000
8706 vec($_, 1, 4) = 2 == 32 00000100000000000000000000000000
8707 vec($_, 2, 4) = 2 == 512 00000000010000000000000000000000
8708 vec($_, 3, 4) = 2 == 8192 00000000000001000000000000000000
8709 vec($_, 4, 4) = 2 == 131072 00000000000000000100000000000000
8710 vec($_, 5, 4) = 2 == 2097152 00000000000000000000010000000000
8711 vec($_, 6, 4) = 2 == 33554432 00000000000000000000000001000000
8712 vec($_, 7, 4) = 2 == 536870912 00000000000000000000000000000100
8713 vec($_, 0, 4) = 4 == 4 00100000000000000000000000000000
8714 vec($_, 1, 4) = 4 == 64 00000010000000000000000000000000
8715 vec($_, 2, 4) = 4 == 1024 00000000001000000000000000000000
8716 vec($_, 3, 4) = 4 == 16384 00000000000000100000000000000000
8717 vec($_, 4, 4) = 4 == 262144 00000000000000000010000000000000
8718 vec($_, 5, 4) = 4 == 4194304 00000000000000000000001000000000
8719 vec($_, 6, 4) = 4 == 67108864 00000000000000000000000000100000
8720 vec($_, 7, 4) = 4 == 1073741824 00000000000000000000000000000010
8721 vec($_, 0, 4) = 8 == 8 00010000000000000000000000000000
8722 vec($_, 1, 4) = 8 == 128 00000001000000000000000000000000
8723 vec($_, 2, 4) = 8 == 2048 00000000000100000000000000000000
8724 vec($_, 3, 4) = 8 == 32768 00000000000000010000000000000000
8725 vec($_, 4, 4) = 8 == 524288 00000000000000000001000000000000
8726 vec($_, 5, 4) = 8 == 8388608 00000000000000000000000100000000
8727 vec($_, 6, 4) = 8 == 134217728 00000000000000000000000000010000
8728 vec($_, 7, 4) = 8 == 2147483648 00000000000000000000000000000001
8729 vec($_, 0, 8) = 1 == 1 10000000000000000000000000000000
8730 vec($_, 1, 8) = 1 == 256 00000000100000000000000000000000
8731 vec($_, 2, 8) = 1 == 65536 00000000000000001000000000000000
8732 vec($_, 3, 8) = 1 == 16777216 00000000000000000000000010000000
8733 vec($_, 0, 8) = 2 == 2 01000000000000000000000000000000
8734 vec($_, 1, 8) = 2 == 512 00000000010000000000000000000000
8735 vec($_, 2, 8) = 2 == 131072 00000000000000000100000000000000
8736 vec($_, 3, 8) = 2 == 33554432 00000000000000000000000001000000
8737 vec($_, 0, 8) = 4 == 4 00100000000000000000000000000000
8738 vec($_, 1, 8) = 4 == 1024 00000000001000000000000000000000
8739 vec($_, 2, 8) = 4 == 262144 00000000000000000010000000000000
8740 vec($_, 3, 8) = 4 == 67108864 00000000000000000000000000100000
8741 vec($_, 0, 8) = 8 == 8 00010000000000000000000000000000
8742 vec($_, 1, 8) = 8 == 2048 00000000000100000000000000000000
8743 vec($_, 2, 8) = 8 == 524288 00000000000000000001000000000000
8744 vec($_, 3, 8) = 8 == 134217728 00000000000000000000000000010000
8745 vec($_, 0, 8) = 16 == 16 00001000000000000000000000000000
8746 vec($_, 1, 8) = 16 == 4096 00000000000010000000000000000000
8747 vec($_, 2, 8) = 16 == 1048576 00000000000000000000100000000000
8748 vec($_, 3, 8) = 16 == 268435456 00000000000000000000000000001000
8749 vec($_, 0, 8) = 32 == 32 00000100000000000000000000000000
8750 vec($_, 1, 8) = 32 == 8192 00000000000001000000000000000000
8751 vec($_, 2, 8) = 32 == 2097152 00000000000000000000010000000000
8752 vec($_, 3, 8) = 32 == 536870912 00000000000000000000000000000100
8753 vec($_, 0, 8) = 64 == 64 00000010000000000000000000000000
8754 vec($_, 1, 8) = 64 == 16384 00000000000000100000000000000000
8755 vec($_, 2, 8) = 64 == 4194304 00000000000000000000001000000000
8756 vec($_, 3, 8) = 64 == 1073741824 00000000000000000000000000000010
8757 vec($_, 0, 8) = 128 == 128 00000001000000000000000000000000
8758 vec($_, 1, 8) = 128 == 32768 00000000000000010000000000000000
8759 vec($_, 2, 8) = 128 == 8388608 00000000000000000000000100000000
8760 vec($_, 3, 8) = 128 == 2147483648 00000000000000000000000000000001
8761
8762 wait
8763 Behaves like wait(2) on your system: it waits for a child process
8764 to terminate and returns the pid of the deceased process, or -1 if
8765 there are no child processes. The status is returned in $? and
8766 "${^CHILD_ERROR_NATIVE}". Note that a return value of -1 could
8767 mean that child processes are being automatically reaped, as
8768 described in perlipc.
8769
8770 If you use "wait" in your handler for $SIG{CHLD}, it may
8771 accidentally wait for the child created by "qx" or "system". See
8772 perlipc for details.
8773
8774 Portability issues: "wait" in perlport.
8775
8776 waitpid PID,FLAGS
8777 Waits for a particular child process to terminate and returns the
8778 pid of the deceased process, or -1 if there is no such child
8779 process. A non-blocking wait (with WNOHANG in FLAGS) can return 0
8780 if there are child processes matching PID but none have terminated
8781 yet. The status is returned in $? and "${^CHILD_ERROR_NATIVE}".
8782
8783 A PID of 0 indicates to wait for any child process whose process
8784 group ID is equal to that of the current process. A PID of less
8785 than -1 indicates to wait for any child process whose process group
8786 ID is equal to -PID. A PID of -1 indicates to wait for any child
8787 process.
8788
8789 If you say
8790
8791 use POSIX ":sys_wait_h";
8792
8793 my $kid;
8794 do {
8795 $kid = waitpid(-1, WNOHANG);
8796 } while $kid > 0;
8797
8798 or
8799
8800 1 while waitpid(-1, WNOHANG) > 0;
8801
8802 then you can do a non-blocking wait for all pending zombie
8803 processes (see "WAIT" in POSIX). Non-blocking wait is available on
8804 machines supporting either the waitpid(2) or wait4(2) syscalls.
8805 However, waiting for a particular pid with FLAGS of 0 is
8806 implemented everywhere. (Perl emulates the system call by
8807 remembering the status values of processes that have exited but
8808 have not been harvested by the Perl script yet.)
8809
8810 Note that on some systems, a return value of -1 could mean that
8811 child processes are being automatically reaped. See perlipc for
8812 details, and for other examples.
8813
8814 Portability issues: "waitpid" in perlport.
8815
8816 wantarray
8817 Returns true if the context of the currently executing subroutine
8818 or "eval" is looking for a list value. Returns false if the
8819 context is looking for a scalar. Returns the undefined value if
8820 the context is looking for no value (void context).
8821
8822 return unless defined wantarray; # don't bother doing more
8823 my @a = complex_calculation();
8824 return wantarray ? @a : "@a";
8825
8826 "wantarray"'s result is unspecified in the top level of a file, in
8827 a "BEGIN", "UNITCHECK", "CHECK", "INIT" or "END" block, or in a
8828 "DESTROY" method.
8829
8830 This function should have been named wantlist() instead.
8831
8832 warn LIST
8833 Emits a warning, usually by printing it to "STDERR". "warn"
8834 interprets its operand LIST in the same way as "die", but is
8835 slightly different in what it defaults to when LIST is empty or
8836 makes an empty string. If it is empty and $@ already contains an
8837 exception value then that value is used after appending
8838 "\t...caught". If it is empty and $@ is also empty then the string
8839 "Warning: Something's wrong" is used.
8840
8841 By default, the exception derived from the operand LIST is
8842 stringified and printed to "STDERR". This behaviour can be altered
8843 by installing a $SIG{__WARN__} handler. If there is such a handler
8844 then no message is automatically printed; it is the handler's
8845 responsibility to deal with the exception as it sees fit (like, for
8846 instance, converting it into a "die"). Most handlers must
8847 therefore arrange to actually display the warnings that they are
8848 not prepared to deal with, by calling "warn" again in the handler.
8849 Note that this is quite safe and will not produce an endless loop,
8850 since "__WARN__" hooks are not called from inside one.
8851
8852 You will find this behavior is slightly different from that of
8853 $SIG{__DIE__} handlers (which don't suppress the error text, but
8854 can instead call "die" again to change it).
8855
8856 Using a "__WARN__" handler provides a powerful way to silence all
8857 warnings (even the so-called mandatory ones). An example:
8858
8859 # wipe out *all* compile-time warnings
8860 BEGIN { $SIG{'__WARN__'} = sub { warn $_[0] if $DOWARN } }
8861 my $foo = 10;
8862 my $foo = 20; # no warning about duplicate my $foo,
8863 # but hey, you asked for it!
8864 # no compile-time or run-time warnings before here
8865 $DOWARN = 1;
8866
8867 # run-time warnings enabled after here
8868 warn "\$foo is alive and $foo!"; # does show up
8869
8870 See perlvar for details on setting %SIG entries and for more
8871 examples. See the Carp module for other kinds of warnings using
8872 its "carp" and "cluck" functions.
8873
8874 write FILEHANDLE
8875 write EXPR
8876 write
8877 Writes a formatted record (possibly multi-line) to the specified
8878 FILEHANDLE, using the format associated with that file. By default
8879 the format for a file is the one having the same name as the
8880 filehandle, but the format for the current output channel (see the
8881 "select" function) may be set explicitly by assigning the name of
8882 the format to the $~ variable.
8883
8884 Top of form processing is handled automatically: if there is
8885 insufficient room on the current page for the formatted record, the
8886 page is advanced by writing a form feed and a special top-of-page
8887 format is used to format the new page header before the record is
8888 written. By default, the top-of-page format is the name of the
8889 filehandle with "_TOP" appended, or "top" in the current package if
8890 the former does not exist. This would be a problem with
8891 autovivified filehandles, but it may be dynamically set to the
8892 format of your choice by assigning the name to the $^ variable
8893 while that filehandle is selected. The number of lines remaining
8894 on the current page is in variable "$-", which can be set to 0 to
8895 force a new page.
8896
8897 If FILEHANDLE is unspecified, output goes to the current default
8898 output channel, which starts out as STDOUT but may be changed by
8899 the "select" operator. If the FILEHANDLE is an EXPR, then the
8900 expression is evaluated and the resulting string is used to look up
8901 the name of the FILEHANDLE at run time. For more on formats, see
8902 perlform.
8903
8904 Note that write is not the opposite of "read". Unfortunately.
8905
8906 y///
8907 The transliteration operator. Same as "tr///". See "Quote-Like
8908 Operators" in perlop.
8909
8910 Non-function Keywords by Cross-reference
8911 perldata
8912
8913 __DATA__
8914 __END__
8915 These keywords are documented in "Special Literals" in perldata.
8916
8917 perlmod
8918
8919 BEGIN
8920 CHECK
8921 END
8922 INIT
8923 UNITCHECK
8924 These compile phase keywords are documented in "BEGIN, UNITCHECK,
8925 CHECK, INIT and END" in perlmod.
8926
8927 perlobj
8928
8929 DESTROY
8930 This method keyword is documented in "Destructors" in perlobj.
8931
8932 perlop
8933
8934 and
8935 cmp
8936 eq
8937 ge
8938 gt
8939 isa
8940 le
8941 lt
8942 ne
8943 not
8944 or
8945 x
8946 xor These operators are documented in perlop.
8947
8948 perlsub
8949
8950 AUTOLOAD
8951 This keyword is documented in "Autoloading" in perlsub.
8952
8953 perlsyn
8954
8955 else
8956 elsif
8957 for
8958 foreach
8959 if
8960 unless
8961 until
8962 while
8963 These flow-control keywords are documented in "Compound Statements"
8964 in perlsyn.
8965
8966 elseif
8967 The "else if" keyword is spelled "elsif" in Perl. There's no
8968 "elif" or "else if" either. It does parse "elseif", but only to
8969 warn you about not using it.
8970
8971 See the documentation for flow-control keywords in "Compound
8972 Statements" in perlsyn.
8973
8974 default
8975 given
8976 when
8977 These flow-control keywords related to the experimental switch
8978 feature are documented in "Switch Statements" in perlsyn.
8979
8980 try
8981 catch
8982 finally
8983 These flow-control keywords related to the experimental "try"
8984 feature are documented in "Try Catch Exception Handling" in
8985 perlsyn.
8986
8987 defer
8988 This flow-control keyword related to the experimental "defer"
8989 feature is documented in "defer blocks" in perlsyn.
8990
8991 ADJUST
8992 This class-related phaser block is documented in perlclass.
8993
8994
8995
8996perl v5.38.2 2023-11-30 PERLFUNC(1)