Commit | Line | Data |
---|---|---|
a0d0e21e | 1 | =head1 NAME |
d74e8afc | 2 | X<function> |
a0d0e21e LW |
3 | |
4 | perlfunc - Perl builtin functions | |
5 | ||
6 | =head1 DESCRIPTION | |
7 | ||
8 | The functions in this section can serve as terms in an expression. | |
9 | They fall into two major categories: list operators and named unary | |
10 | operators. These differ in their precedence relationship with a | |
11 | following comma. (See the precedence table in L<perlop>.) List | |
12 | operators take more than one argument, while unary operators can never | |
13 | take more than one argument. Thus, a comma terminates the argument of | |
14 | a unary operator, but merely separates the arguments of a list | |
8f1da26d | 15 | operator. A unary operator generally provides scalar context to its |
2b5ab1e7 | 16 | argument, while a list operator may provide either scalar or list |
2263ed23 | 17 | contexts for its arguments. If it does both, scalar arguments |
3b10bc60 | 18 | come first and list argument follow, and there can only ever |
2263ed23 LM |
19 | be one such list argument. For instance, |
20 | L<C<splice>|/splice ARRAY,OFFSET,LENGTH,LIST> has three scalar arguments | |
21 | followed by a list, whereas L<C<gethostbyname>|/gethostbyname NAME> has | |
22 | four scalar arguments. | |
a0d0e21e LW |
23 | |
24 | In the syntax descriptions that follow, list operators that expect a | |
3b10bc60 | 25 | list (and provide list context for elements of the list) are shown |
a0d0e21e LW |
26 | with LIST as an argument. Such a list may consist of any combination |
27 | of scalar arguments or list values; the list values will be included | |
28 | in the list as if each individual element were interpolated at that | |
29 | point in the list, forming a longer single-dimensional list value. | |
8bdbc703 | 30 | Commas should separate literal elements of the LIST. |
a0d0e21e LW |
31 | |
32 | Any function in the list below may be used either with or without | |
33 | parentheses around its arguments. (The syntax descriptions omit the | |
2263ed23 | 34 | parentheses.) If you use parentheses, the simple but occasionally |
3b10bc60 | 35 | surprising rule is this: It I<looks> like a function, therefore it I<is> a |
a0d0e21e | 36 | function, and precedence doesn't matter. Otherwise it's a list |
3b10bc60 | 37 | operator or unary operator, and precedence does matter. Whitespace |
38 | between the function and left parenthesis doesn't count, so sometimes | |
39 | you need to be careful: | |
a0d0e21e | 40 | |
5ed4f2ec | 41 | print 1+2+4; # Prints 7. |
42 | print(1+2) + 4; # Prints 3. | |
43 | print (1+2)+4; # Also prints 3! | |
44 | print +(1+2)+4; # Prints 7. | |
45 | print ((1+2)+4); # Prints 7. | |
a0d0e21e | 46 | |
2263ed23 LM |
47 | If you run Perl with the L<C<use warnings>|warnings> pragma, it can warn |
48 | you about this. For example, the third line above produces: | |
a0d0e21e LW |
49 | |
50 | print (...) interpreted as function at - line 1. | |
51 | Useless use of integer addition in void context at - line 1. | |
52 | ||
2b5ab1e7 | 53 | A few functions take no arguments at all, and therefore work as neither |
2263ed23 LM |
54 | unary nor list operators. These include such functions as |
55 | L<C<time>|/time> and L<C<endpwent>|/endpwent>. For example, | |
56 | C<time+86_400> always means C<time() + 86_400>. | |
2b5ab1e7 | 57 | |
a0d0e21e | 58 | For functions that can be used in either a scalar or list context, |
8f1da26d TC |
59 | nonabortive failure is generally indicated in scalar context by |
60 | returning the undefined value, and in list context by returning the | |
3b10bc60 | 61 | empty list. |
a0d0e21e | 62 | |
5a964f20 TC |
63 | Remember the following important rule: There is B<no rule> that relates |
64 | the behavior of an expression in list context to its behavior in scalar | |
65 | context, or vice versa. It might do two totally different things. | |
80d38338 | 66 | Each operator and function decides which sort of value would be most |
2b5ab1e7 | 67 | appropriate to return in scalar context. Some operators return the |
5a964f20 | 68 | length of the list that would have been returned in list context. Some |
a0d0e21e LW |
69 | operators return the first value in the list. Some operators return the |
70 | last value in the list. Some operators return a count of successful | |
71 | operations. In general, they do what you want, unless you want | |
72 | consistency. | |
d74e8afc | 73 | X<context> |
a0d0e21e | 74 | |
d1be9408 | 75 | A named array in scalar context is quite different from what would at |
5a964f20 TC |
76 | first glance appear to be a list in scalar context. You can't get a list |
77 | like C<(1,2,3)> into being in scalar context, because the compiler knows | |
78 | the context at compile time. It would generate the scalar comma operator | |
2263ed23 | 79 | there, not the list concatenation version of the comma. That means it |
5a964f20 TC |
80 | was never a list to start with. |
81 | ||
2263ed23 LM |
82 | In general, functions in Perl that serve as wrappers for system calls |
83 | ("syscalls") of the same name (like L<chown(2)>, L<fork(2)>, | |
84 | L<closedir(2)>, etc.) return true when they succeed and | |
85 | L<C<undef>|/undef EXPR> otherwise, as is usually mentioned in the | |
86 | descriptions below. This is different from the C interfaces, which | |
87 | return C<-1> on failure. Exceptions to this rule include | |
88 | L<C<wait>|/wait>, L<C<waitpid>|/waitpid PID,FLAGS>, and | |
89 | L<C<syscall>|/syscall NUMBER, LIST>. System calls also set the special | |
90 | L<C<$!>|perlvar/$!> variable on failure. Other functions do not, except | |
91 | accidentally. | |
5a964f20 | 92 | |
88e1f1a2 JV |
93 | Extension modules can also hook into the Perl parser to define new |
94 | kinds of keyword-headed expression. These may look like functions, but | |
95 | may also look completely different. The syntax following the keyword | |
96 | is defined entirely by the extension. If you are an implementor, see | |
97 | L<perlapi/PL_keyword_plugin> for the mechanism. If you are using such | |
98 | a module, see the module's documentation for details of the syntax that | |
99 | it defines. | |
100 | ||
cb1a09d0 | 101 | =head2 Perl Functions by Category |
d74e8afc | 102 | X<function> |
cb1a09d0 AD |
103 | |
104 | Here are Perl's functions (including things that look like | |
5a964f20 | 105 | functions, like some keywords and named operators) |
cb1a09d0 AD |
106 | arranged by category. Some functions appear in more |
107 | than one place. | |
108 | ||
13a2d996 | 109 | =over 4 |
cb1a09d0 AD |
110 | |
111 | =item Functions for SCALARs or strings | |
d74e8afc | 112 | X<scalar> X<string> X<character> |
cb1a09d0 | 113 | |
c17cdb72 NC |
114 | =for Pod::Functions =String |
115 | ||
2263ed23 LM |
116 | L<C<chomp>|/chomp VARIABLE>, L<C<chop>|/chop VARIABLE>, |
117 | L<C<chr>|/chr NUMBER>, L<C<crypt>|/crypt PLAINTEXT,SALT>, | |
118 | L<C<fc>|/fc EXPR>, L<C<hex>|/hex EXPR>, | |
119 | L<C<index>|/index STR,SUBSTR,POSITION>, L<C<lc>|/lc EXPR>, | |
120 | L<C<lcfirst>|/lcfirst EXPR>, L<C<length>|/length EXPR>, | |
121 | L<C<oct>|/oct EXPR>, L<C<ord>|/ord EXPR>, | |
122 | L<C<pack>|/pack TEMPLATE,LIST>, | |
123 | L<C<qE<sol>E<sol>>|/qE<sol>STRINGE<sol>>, | |
124 | L<C<qqE<sol>E<sol>>|/qqE<sol>STRINGE<sol>>, L<C<reverse>|/reverse LIST>, | |
125 | L<C<rindex>|/rindex STR,SUBSTR,POSITION>, | |
126 | L<C<sprintf>|/sprintf FORMAT, LIST>, | |
127 | L<C<substr>|/substr EXPR,OFFSET,LENGTH,REPLACEMENT>, | |
128 | L<C<trE<sol>E<sol>E<sol>>|/trE<sol>E<sol>E<sol>>, L<C<uc>|/uc EXPR>, | |
129 | L<C<ucfirst>|/ucfirst EXPR>, | |
130 | L<C<yE<sol>E<sol>E<sol>>|/yE<sol>E<sol>E<sol>> | |
131 | ||
132 | L<C<fc>|/fc EXPR> is available only if the | |
133 | L<C<"fc"> feature|feature/The 'fc' feature> is enabled or if it is | |
134 | prefixed with C<CORE::>. The | |
135 | L<C<"fc"> feature|feature/The 'fc' feature> is enabled automatically | |
3dd9a840 | 136 | with a C<use v5.16> (or higher) declaration in the current scope. |
4fe70ef9 | 137 | |
cb1a09d0 | 138 | =item Regular expressions and pattern matching |
d74e8afc | 139 | X<regular expression> X<regex> X<regexp> |
cb1a09d0 | 140 | |
c17cdb72 NC |
141 | =for Pod::Functions =Regexp |
142 | ||
2263ed23 LM |
143 | L<C<mE<sol>E<sol>>|/mE<sol>E<sol>>, L<C<pos>|/pos SCALAR>, |
144 | L<C<qrE<sol>E<sol>>|/qrE<sol>STRINGE<sol>>, | |
145 | L<C<quotemeta>|/quotemeta EXPR>, | |
146 | L<C<sE<sol>E<sol>E<sol>>|/sE<sol>E<sol>E<sol>>, | |
147 | L<C<split>|/split E<sol>PATTERNE<sol>,EXPR,LIMIT>, | |
148 | L<C<study>|/study SCALAR> | |
cb1a09d0 AD |
149 | |
150 | =item Numeric functions | |
d74e8afc | 151 | X<numeric> X<number> X<trigonometric> X<trigonometry> |
cb1a09d0 | 152 | |
c17cdb72 NC |
153 | =for Pod::Functions =Math |
154 | ||
2263ed23 LM |
155 | L<C<abs>|/abs VALUE>, L<C<atan2>|/atan2 Y,X>, L<C<cos>|/cos EXPR>, |
156 | L<C<exp>|/exp EXPR>, L<C<hex>|/hex EXPR>, L<C<int>|/int EXPR>, | |
157 | L<C<log>|/log EXPR>, L<C<oct>|/oct EXPR>, L<C<rand>|/rand EXPR>, | |
158 | L<C<sin>|/sin EXPR>, L<C<sqrt>|/sqrt EXPR>, L<C<srand>|/srand EXPR> | |
cb1a09d0 AD |
159 | |
160 | =item Functions for real @ARRAYs | |
d74e8afc | 161 | X<array> |
cb1a09d0 | 162 | |
c17cdb72 NC |
163 | =for Pod::Functions =ARRAY |
164 | ||
2263ed23 LM |
165 | L<C<each>|/each HASH>, L<C<keys>|/keys HASH>, L<C<pop>|/pop ARRAY>, |
166 | L<C<push>|/push ARRAY,LIST>, L<C<shift>|/shift ARRAY>, | |
167 | L<C<splice>|/splice ARRAY,OFFSET,LENGTH,LIST>, | |
168 | L<C<unshift>|/unshift ARRAY,LIST>, L<C<values>|/values HASH> | |
cb1a09d0 AD |
169 | |
170 | =item Functions for list data | |
d74e8afc | 171 | X<list> |
cb1a09d0 | 172 | |
c17cdb72 NC |
173 | =for Pod::Functions =LIST |
174 | ||
2263ed23 LM |
175 | L<C<grep>|/grep BLOCK LIST>, L<C<join>|/join EXPR,LIST>, |
176 | L<C<map>|/map BLOCK LIST>, L<C<qwE<sol>E<sol>>|/qwE<sol>STRINGE<sol>>, | |
177 | L<C<reverse>|/reverse LIST>, L<C<sort>|/sort SUBNAME LIST>, | |
178 | L<C<unpack>|/unpack TEMPLATE,EXPR> | |
cb1a09d0 AD |
179 | |
180 | =item Functions for real %HASHes | |
d74e8afc | 181 | X<hash> |
cb1a09d0 | 182 | |
c17cdb72 NC |
183 | =for Pod::Functions =HASH |
184 | ||
2263ed23 LM |
185 | L<C<delete>|/delete EXPR>, L<C<each>|/each HASH>, |
186 | L<C<exists>|/exists EXPR>, L<C<keys>|/keys HASH>, | |
187 | L<C<values>|/values HASH> | |
cb1a09d0 AD |
188 | |
189 | =item Input and output functions | |
d74e8afc | 190 | X<I/O> X<input> X<output> X<dbm> |
cb1a09d0 | 191 | |
c17cdb72 NC |
192 | =for Pod::Functions =I/O |
193 | ||
2263ed23 LM |
194 | L<C<binmode>|/binmode FILEHANDLE, LAYER>, L<C<close>|/close FILEHANDLE>, |
195 | L<C<closedir>|/closedir DIRHANDLE>, L<C<dbmclose>|/dbmclose HASH>, | |
196 | L<C<dbmopen>|/dbmopen HASH,DBNAME,MASK>, L<C<die>|/die LIST>, | |
197 | L<C<eof>|/eof FILEHANDLE>, L<C<fileno>|/fileno FILEHANDLE>, | |
198 | L<C<flock>|/flock FILEHANDLE,OPERATION>, L<C<format>|/format>, | |
199 | L<C<getc>|/getc FILEHANDLE>, L<C<print>|/print FILEHANDLE LIST>, | |
200 | L<C<printf>|/printf FILEHANDLE FORMAT, LIST>, | |
201 | L<C<read>|/read FILEHANDLE,SCALAR,LENGTH,OFFSET>, | |
202 | L<C<readdir>|/readdir DIRHANDLE>, L<C<readline>|/readline EXPR> | |
203 | L<C<rewinddir>|/rewinddir DIRHANDLE>, L<C<say>|/say FILEHANDLE LIST>, | |
204 | L<C<seek>|/seek FILEHANDLE,POSITION,WHENCE>, | |
205 | L<C<seekdir>|/seekdir DIRHANDLE,POS>, | |
206 | L<C<select>|/select RBITS,WBITS,EBITS,TIMEOUT>, | |
207 | L<C<syscall>|/syscall NUMBER, LIST>, | |
208 | L<C<sysread>|/sysread FILEHANDLE,SCALAR,LENGTH,OFFSET>, | |
209 | L<C<sysseek>|/sysseek FILEHANDLE,POSITION,WHENCE>, | |
210 | L<C<syswrite>|/syswrite FILEHANDLE,SCALAR,LENGTH,OFFSET>, | |
211 | L<C<tell>|/tell FILEHANDLE>, L<C<telldir>|/telldir DIRHANDLE>, | |
212 | L<C<truncate>|/truncate FILEHANDLE,LENGTH>, L<C<warn>|/warn LIST>, | |
213 | L<C<write>|/write FILEHANDLE> | |
214 | ||
215 | L<C<say>|/say FILEHANDLE LIST> is available only if the | |
216 | L<C<"say"> feature|feature/The 'say' feature> is enabled or if it is | |
217 | prefixed with C<CORE::>. The | |
218 | L<C<"say"> feature|feature/The 'say' feature> is enabled automatically | |
4fe70ef9 NC |
219 | with a C<use v5.10> (or higher) declaration in the current scope. |
220 | ||
5dac7880 | 221 | =item Functions for fixed-length data or records |
cb1a09d0 | 222 | |
c17cdb72 NC |
223 | =for Pod::Functions =Binary |
224 | ||
2263ed23 LM |
225 | L<C<pack>|/pack TEMPLATE,LIST>, |
226 | L<C<read>|/read FILEHANDLE,SCALAR,LENGTH,OFFSET>, | |
227 | L<C<syscall>|/syscall NUMBER, LIST>, | |
228 | L<C<sysread>|/sysread FILEHANDLE,SCALAR,LENGTH,OFFSET>, | |
229 | L<C<sysseek>|/sysseek FILEHANDLE,POSITION,WHENCE>, | |
230 | L<C<syswrite>|/syswrite FILEHANDLE,SCALAR,LENGTH,OFFSET>, | |
231 | L<C<unpack>|/unpack TEMPLATE,EXPR>, L<C<vec>|/vec EXPR,OFFSET,BITS> | |
cb1a09d0 AD |
232 | |
233 | =item Functions for filehandles, files, or directories | |
d74e8afc | 234 | X<file> X<filehandle> X<directory> X<pipe> X<link> X<symlink> |
cb1a09d0 | 235 | |
c17cdb72 NC |
236 | =for Pod::Functions =File |
237 | ||
2263ed23 LM |
238 | L<C<-I<X>>|/-X FILEHANDLE>, L<C<chdir>|/chdir EXPR>, |
239 | L<C<chmod>|/chmod LIST>, L<C<chown>|/chown LIST>, | |
240 | L<C<chroot>|/chroot FILENAME>, | |
241 | L<C<fcntl>|/fcntl FILEHANDLE,FUNCTION,SCALAR>, L<C<glob>|/glob EXPR>, | |
242 | L<C<ioctl>|/ioctl FILEHANDLE,FUNCTION,SCALAR>, | |
243 | L<C<link>|/link OLDFILE,NEWFILE>, L<C<lstat>|/lstat FILEHANDLE>, | |
244 | L<C<mkdir>|/mkdir FILENAME,MASK>, L<C<open>|/open FILEHANDLE,EXPR>, | |
245 | L<C<opendir>|/opendir DIRHANDLE,EXPR>, L<C<readlink>|/readlink EXPR>, | |
246 | L<C<rename>|/rename OLDNAME,NEWNAME>, L<C<rmdir>|/rmdir FILENAME>, | |
247 | L<C<select>|/select FILEHANDLE>, L<C<stat>|/stat FILEHANDLE>, | |
248 | L<C<symlink>|/symlink OLDFILE,NEWFILE>, | |
249 | L<C<sysopen>|/sysopen FILEHANDLE,FILENAME,MODE>, | |
250 | L<C<umask>|/umask EXPR>, L<C<unlink>|/unlink LIST>, | |
251 | L<C<utime>|/utime LIST> | |
cb1a09d0 | 252 | |
cf264981 | 253 | =item Keywords related to the control flow of your Perl program |
d74e8afc | 254 | X<control flow> |
cb1a09d0 | 255 | |
c17cdb72 NC |
256 | =for Pod::Functions =Flow |
257 | ||
2263ed23 LM |
258 | L<C<break>|/break>, L<C<caller>|/caller EXPR>, |
259 | L<C<continue>|/continue BLOCK>, L<C<die>|/die LIST>, L<C<do>|/do BLOCK>, | |
260 | L<C<dump>|/dump LABEL>, L<C<eval>|/eval EXPR>, | |
261 | L<C<evalbytes>|/evalbytes EXPR> L<C<exit>|/exit EXPR>, | |
262 | L<C<__FILE__>|/__FILE__>, L<C<goto>|/goto LABEL>, | |
263 | L<C<last>|/last LABEL>, L<C<__LINE__>|/__LINE__>, | |
264 | L<C<next>|/next LABEL>, L<C<__PACKAGE__>|/__PACKAGE__>, | |
265 | L<C<redo>|/redo LABEL>, L<C<return>|/return EXPR>, | |
266 | L<C<sub>|/sub NAME BLOCK>, L<C<__SUB__>|/__SUB__>, | |
267 | L<C<wantarray>|/wantarray> | |
268 | ||
269 | L<C<break>|/break> is available only if you enable the experimental | |
270 | L<C<"switch"> feature|feature/The 'switch' feature> or use the C<CORE::> | |
271 | prefix. The L<C<"switch"> feature|feature/The 'switch' feature> also | |
272 | enables the C<default>, C<given> and C<when> statements, which are | |
273 | documented in L<perlsyn/"Switch Statements">. | |
274 | The L<C<"switch"> feature|feature/The 'switch' feature> is enabled | |
dba7b065 | 275 | automatically with a C<use v5.10> (or higher) declaration in the current |
2263ed23 LM |
276 | scope. In Perl v5.14 and earlier, L<C<continue>|/continue BLOCK> |
277 | required the L<C<"switch"> feature|feature/The 'switch' feature>, like | |
278 | the other keywords. | |
279 | ||
280 | L<C<evalbytes>|/evalbytes EXPR> is only available with the | |
281 | L<C<"evalbytes"> feature|feature/The 'unicode_eval' and 'evalbytes' features> | |
282 | (see L<feature>) or if prefixed with C<CORE::>. L<C<__SUB__>|/__SUB__> | |
283 | is only available with the | |
284 | L<C<"current_sub"> feature|feature/The 'current_sub' feature> or if | |
285 | prefixed with C<CORE::>. Both the | |
286 | L<C<"evalbytes">|feature/The 'unicode_eval' and 'evalbytes' features> | |
287 | and L<C<"current_sub">|feature/The 'current_sub' feature> features are | |
288 | enabled automatically with a C<use v5.16> (or higher) declaration in the | |
289 | current scope. | |
cb1a09d0 | 290 | |
54310121 | 291 | =item Keywords related to scoping |
cb1a09d0 | 292 | |
c17cdb72 NC |
293 | =for Pod::Functions =Namespace |
294 | ||
2263ed23 LM |
295 | L<C<caller>|/caller EXPR>, L<C<import>|/import LIST>, |
296 | L<C<local>|/local EXPR>, L<C<my>|/my VARLIST>, L<C<our>|/our VARLIST>, | |
297 | L<C<package>|/package NAMESPACE>, L<C<state>|/state VARLIST>, | |
298 | L<C<use>|/use Module VERSION LIST> | |
36fb85f3 | 299 | |
2263ed23 LM |
300 | L<C<state>|/state VARLIST> is available only if the |
301 | L<C<"state"> feature|feature/The 'state' feature> is enabled or if it is | |
302 | prefixed with C<CORE::>. The | |
303 | L<C<"state"> feature|feature/The 'state' feature> is enabled | |
304 | automatically with a C<use v5.10> (or higher) declaration in the current | |
305 | scope. | |
cb1a09d0 AD |
306 | |
307 | =item Miscellaneous functions | |
308 | ||
c17cdb72 NC |
309 | =for Pod::Functions =Misc |
310 | ||
2263ed23 LM |
311 | L<C<defined>|/defined EXPR>, L<C<formline>|/formline PICTURE,LIST>, |
312 | L<C<lock>|/lock THING>, L<C<prototype>|/prototype FUNCTION>, | |
313 | L<C<reset>|/reset EXPR>, L<C<scalar>|/scalar EXPR>, | |
314 | L<C<undef>|/undef EXPR> | |
cb1a09d0 AD |
315 | |
316 | =item Functions for processes and process groups | |
d74e8afc | 317 | X<process> X<pid> X<process id> |
cb1a09d0 | 318 | |
c17cdb72 NC |
319 | =for Pod::Functions =Process |
320 | ||
2263ed23 LM |
321 | L<C<alarm>|/alarm SECONDS>, L<C<exec>|/exec LIST>, L<C<fork>|/fork>, |
322 | L<C<getpgrp>|/getpgrp PID>, L<C<getppid>|/getppid>, | |
323 | L<C<getpriority>|/getpriority WHICH,WHO>, L<C<kill>|/kill SIGNAL, LIST>, | |
324 | L<C<pipe>|/pipe READHANDLE,WRITEHANDLE>, | |
325 | L<C<qxE<sol>E<sol>>|/qxE<sol>STRINGE<sol>>, | |
326 | L<C<readpipe>|/readpipe EXPR>, L<C<setpgrp>|/setpgrp PID,PGRP>, | |
327 | L<C<setpriority>|/setpriority WHICH,WHO,PRIORITY>, | |
328 | L<C<sleep>|/sleep EXPR>, L<C<system>|/system LIST>, L<C<times>|/times>, | |
329 | L<C<wait>|/wait>, L<C<waitpid>|/waitpid PID,FLAGS> | |
cb1a09d0 | 330 | |
3b10bc60 | 331 | =item Keywords related to Perl modules |
d74e8afc | 332 | X<module> |
cb1a09d0 | 333 | |
c17cdb72 NC |
334 | =for Pod::Functions =Modules |
335 | ||
2263ed23 LM |
336 | L<C<do>|/do EXPR>, L<C<import>|/import LIST>, |
337 | L<C<no>|/no MODULE VERSION LIST>, L<C<package>|/package NAMESPACE>, | |
338 | L<C<require>|/require VERSION>, L<C<use>|/use Module VERSION LIST> | |
cb1a09d0 | 339 | |
353c6505 | 340 | =item Keywords related to classes and object-orientation |
d74e8afc | 341 | X<object> X<class> X<package> |
cb1a09d0 | 342 | |
c17cdb72 NC |
343 | =for Pod::Functions =Objects |
344 | ||
2263ed23 LM |
345 | L<C<bless>|/bless REF,CLASSNAME>, L<C<dbmclose>|/dbmclose HASH>, |
346 | L<C<dbmopen>|/dbmopen HASH,DBNAME,MASK>, | |
347 | L<C<package>|/package NAMESPACE>, L<C<ref>|/ref EXPR>, | |
348 | L<C<tie>|/tie VARIABLE,CLASSNAME,LIST>, L<C<tied>|/tied VARIABLE>, | |
349 | L<C<untie>|/untie VARIABLE>, L<C<use>|/use Module VERSION LIST> | |
cb1a09d0 AD |
350 | |
351 | =item Low-level socket functions | |
d74e8afc | 352 | X<socket> X<sock> |
cb1a09d0 | 353 | |
c17cdb72 NC |
354 | =for Pod::Functions =Socket |
355 | ||
2263ed23 LM |
356 | L<C<accept>|/accept NEWSOCKET,GENERICSOCKET>, |
357 | L<C<bind>|/bind SOCKET,NAME>, L<C<connect>|/connect SOCKET,NAME>, | |
358 | L<C<getpeername>|/getpeername SOCKET>, | |
359 | L<C<getsockname>|/getsockname SOCKET>, | |
360 | L<C<getsockopt>|/getsockopt SOCKET,LEVEL,OPTNAME>, | |
361 | L<C<listen>|/listen SOCKET,QUEUESIZE>, | |
362 | L<C<recv>|/recv SOCKET,SCALAR,LENGTH,FLAGS>, | |
363 | L<C<send>|/send SOCKET,MSG,FLAGS,TO>, | |
364 | L<C<setsockopt>|/setsockopt SOCKET,LEVEL,OPTNAME,OPTVAL>, | |
365 | L<C<shutdown>|/shutdown SOCKET,HOW>, | |
366 | L<C<socket>|/socket SOCKET,DOMAIN,TYPE,PROTOCOL>, | |
367 | L<C<socketpair>|/socketpair SOCKET1,SOCKET2,DOMAIN,TYPE,PROTOCOL> | |
cb1a09d0 AD |
368 | |
369 | =item System V interprocess communication functions | |
d74e8afc | 370 | X<IPC> X<System V> X<semaphore> X<shared memory> X<memory> X<message> |
cb1a09d0 | 371 | |
c17cdb72 NC |
372 | =for Pod::Functions =SysV |
373 | ||
2263ed23 LM |
374 | L<C<msgctl>|/msgctl ID,CMD,ARG>, L<C<msgget>|/msgget KEY,FLAGS>, |
375 | L<C<msgrcv>|/msgrcv ID,VAR,SIZE,TYPE,FLAGS>, | |
376 | L<C<msgsnd>|/msgsnd ID,MSG,FLAGS>, | |
377 | L<C<semctl>|/semctl ID,SEMNUM,CMD,ARG>, | |
378 | L<C<semget>|/semget KEY,NSEMS,FLAGS>, L<C<semop>|/semop KEY,OPSTRING>, | |
379 | L<C<shmctl>|/shmctl ID,CMD,ARG>, L<C<shmget>|/shmget KEY,SIZE,FLAGS>, | |
380 | L<C<shmread>|/shmread ID,VAR,POS,SIZE>, | |
381 | L<C<shmwrite>|/shmwrite ID,STRING,POS,SIZE> | |
cb1a09d0 AD |
382 | |
383 | =item Fetching user and group info | |
d74e8afc | 384 | X<user> X<group> X<password> X<uid> X<gid> X<passwd> X</etc/passwd> |
cb1a09d0 | 385 | |
c17cdb72 NC |
386 | =for Pod::Functions =User |
387 | ||
2263ed23 LM |
388 | L<C<endgrent>|/endgrent>, L<C<endhostent>|/endhostent>, |
389 | L<C<endnetent>|/endnetent>, L<C<endpwent>|/endpwent>, | |
390 | L<C<getgrent>|/getgrent>, L<C<getgrgid>|/getgrgid GID>, | |
391 | L<C<getgrnam>|/getgrnam NAME>, L<C<getlogin>|/getlogin>, | |
392 | L<C<getpwent>|/getpwent>, L<C<getpwnam>|/getpwnam NAME>, | |
393 | L<C<getpwuid>|/getpwuid UID>, L<C<setgrent>|/setgrent>, | |
394 | L<C<setpwent>|/setpwent> | |
cb1a09d0 AD |
395 | |
396 | =item Fetching network info | |
d74e8afc | 397 | X<network> X<protocol> X<host> X<hostname> X<IP> X<address> X<service> |
cb1a09d0 | 398 | |
c17cdb72 NC |
399 | =for Pod::Functions =Network |
400 | ||
2263ed23 LM |
401 | L<C<endprotoent>|/endprotoent>, L<C<endservent>|/endservent>, |
402 | L<C<gethostbyaddr>|/gethostbyaddr ADDR,ADDRTYPE>, | |
403 | L<C<gethostbyname>|/gethostbyname NAME>, L<C<gethostent>|/gethostent>, | |
404 | L<C<getnetbyaddr>|/getnetbyaddr ADDR,ADDRTYPE>, | |
405 | L<C<getnetbyname>|/getnetbyname NAME>, L<C<getnetent>|/getnetent>, | |
406 | L<C<getprotobyname>|/getprotobyname NAME>, | |
407 | L<C<getprotobynumber>|/getprotobynumber NUMBER>, | |
408 | L<C<getprotoent>|/getprotoent>, | |
409 | L<C<getservbyname>|/getservbyname NAME,PROTO>, | |
410 | L<C<getservbyport>|/getservbyport PORT,PROTO>, | |
411 | L<C<getservent>|/getservent>, L<C<sethostent>|/sethostent STAYOPEN>, | |
412 | L<C<setnetent>|/setnetent STAYOPEN>, | |
413 | L<C<setprotoent>|/setprotoent STAYOPEN>, | |
414 | L<C<setservent>|/setservent STAYOPEN> | |
cb1a09d0 AD |
415 | |
416 | =item Time-related functions | |
d74e8afc | 417 | X<time> X<date> |
cb1a09d0 | 418 | |
c17cdb72 NC |
419 | =for Pod::Functions =Time |
420 | ||
2263ed23 LM |
421 | L<C<gmtime>|/gmtime EXPR>, L<C<localtime>|/localtime EXPR>, |
422 | L<C<time>|/time>, L<C<times>|/times> | |
cb1a09d0 | 423 | |
8f0d6a61 RS |
424 | =item Non-function keywords |
425 | ||
c17cdb72 NC |
426 | =for Pod::Functions =!Non-functions |
427 | ||
f5fa2679 | 428 | C<and>, C<AUTOLOAD>, C<BEGIN>, C<CHECK>, C<cmp>, C<CORE>, C<__DATA__>, |
dba7b065 NC |
429 | C<default>, C<DESTROY>, C<else>, C<elseif>, C<elsif>, C<END>, C<__END__>, |
430 | C<eq>, C<for>, C<foreach>, C<ge>, C<given>, C<gt>, C<if>, C<INIT>, C<le>, | |
431 | C<lt>, C<ne>, C<not>, C<or>, C<UNITCHECK>, C<unless>, C<until>, C<when>, | |
432 | C<while>, C<x>, C<xor> | |
8f0d6a61 | 433 | |
cb1a09d0 AD |
434 | =back |
435 | ||
60f9f73c | 436 | =head2 Portability |
d74e8afc | 437 | X<portability> X<Unix> X<portable> |
60f9f73c | 438 | |
2b5ab1e7 TC |
439 | Perl was born in Unix and can therefore access all common Unix |
440 | system calls. In non-Unix environments, the functionality of some | |
8f1da26d | 441 | Unix system calls may not be available or details of the available |
2b5ab1e7 | 442 | functionality may differ slightly. The Perl functions affected |
60f9f73c JH |
443 | by this are: |
444 | ||
2263ed23 LM |
445 | L<C<-I<X>>|/-X FILEHANDLE>, L<C<binmode>|/binmode FILEHANDLE, LAYER>, |
446 | L<C<chmod>|/chmod LIST>, L<C<chown>|/chown LIST>, | |
447 | L<C<chroot>|/chroot FILENAME>, L<C<crypt>|/crypt PLAINTEXT,SALT>, | |
448 | L<C<dbmclose>|/dbmclose HASH>, L<C<dbmopen>|/dbmopen HASH,DBNAME,MASK>, | |
449 | L<C<dump>|/dump LABEL>, L<C<endgrent>|/endgrent>, | |
450 | L<C<endhostent>|/endhostent>, L<C<endnetent>|/endnetent>, | |
451 | L<C<endprotoent>|/endprotoent>, L<C<endpwent>|/endpwent>, | |
452 | L<C<endservent>|/endservent>, L<C<exec>|/exec LIST>, | |
453 | L<C<fcntl>|/fcntl FILEHANDLE,FUNCTION,SCALAR>, | |
454 | L<C<flock>|/flock FILEHANDLE,OPERATION>, L<C<fork>|/fork>, | |
455 | L<C<getgrent>|/getgrent>, L<C<getgrgid>|/getgrgid GID>, | |
456 | L<C<gethostbyname>|/gethostbyname NAME>, L<C<gethostent>|/gethostent>, | |
457 | L<C<getlogin>|/getlogin>, | |
458 | L<C<getnetbyaddr>|/getnetbyaddr ADDR,ADDRTYPE>, | |
459 | L<C<getnetbyname>|/getnetbyname NAME>, L<C<getnetent>|/getnetent>, | |
460 | L<C<getppid>|/getppid>, L<C<getpgrp>|/getpgrp PID>, | |
461 | L<C<getpriority>|/getpriority WHICH,WHO>, | |
462 | L<C<getprotobynumber>|/getprotobynumber NUMBER>, | |
463 | L<C<getprotoent>|/getprotoent>, L<C<getpwent>|/getpwent>, | |
464 | L<C<getpwnam>|/getpwnam NAME>, L<C<getpwuid>|/getpwuid UID>, | |
465 | L<C<getservbyport>|/getservbyport PORT,PROTO>, | |
466 | L<C<getservent>|/getservent>, | |
467 | L<C<getsockopt>|/getsockopt SOCKET,LEVEL,OPTNAME>, | |
468 | L<C<glob>|/glob EXPR>, L<C<ioctl>|/ioctl FILEHANDLE,FUNCTION,SCALAR>, | |
469 | L<C<kill>|/kill SIGNAL, LIST>, L<C<link>|/link OLDFILE,NEWFILE>, | |
470 | L<C<lstat>|/lstat FILEHANDLE>, L<C<msgctl>|/msgctl ID,CMD,ARG>, | |
471 | L<C<msgget>|/msgget KEY,FLAGS>, | |
472 | L<C<msgrcv>|/msgrcv ID,VAR,SIZE,TYPE,FLAGS>, | |
473 | L<C<msgsnd>|/msgsnd ID,MSG,FLAGS>, L<C<open>|/open FILEHANDLE,EXPR>, | |
474 | L<C<pipe>|/pipe READHANDLE,WRITEHANDLE>, L<C<readlink>|/readlink EXPR>, | |
475 | L<C<rename>|/rename OLDNAME,NEWNAME>, | |
476 | L<C<select>|/select RBITS,WBITS,EBITS,TIMEOUT>, | |
477 | L<C<semctl>|/semctl ID,SEMNUM,CMD,ARG>, | |
478 | L<C<semget>|/semget KEY,NSEMS,FLAGS>, L<C<semop>|/semop KEY,OPSTRING>, | |
479 | L<C<setgrent>|/setgrent>, L<C<sethostent>|/sethostent STAYOPEN>, | |
480 | L<C<setnetent>|/setnetent STAYOPEN>, L<C<setpgrp>|/setpgrp PID,PGRP>, | |
481 | L<C<setpriority>|/setpriority WHICH,WHO,PRIORITY>, | |
482 | L<C<setprotoent>|/setprotoent STAYOPEN>, L<C<setpwent>|/setpwent>, | |
483 | L<C<setservent>|/setservent STAYOPEN>, | |
484 | L<C<setsockopt>|/setsockopt SOCKET,LEVEL,OPTNAME,OPTVAL>, | |
485 | L<C<shmctl>|/shmctl ID,CMD,ARG>, L<C<shmget>|/shmget KEY,SIZE,FLAGS>, | |
486 | L<C<shmread>|/shmread ID,VAR,POS,SIZE>, | |
487 | L<C<shmwrite>|/shmwrite ID,STRING,POS,SIZE>, | |
488 | L<C<socket>|/socket SOCKET,DOMAIN,TYPE,PROTOCOL>, | |
489 | L<C<socketpair>|/socketpair SOCKET1,SOCKET2,DOMAIN,TYPE,PROTOCOL>, | |
490 | L<C<stat>|/stat FILEHANDLE>, L<C<symlink>|/symlink OLDFILE,NEWFILE>, | |
491 | L<C<syscall>|/syscall NUMBER, LIST>, | |
492 | L<C<sysopen>|/sysopen FILEHANDLE,FILENAME,MODE>, | |
493 | L<C<system>|/system LIST>, L<C<times>|/times>, | |
494 | L<C<truncate>|/truncate FILEHANDLE,LENGTH>, L<C<umask>|/umask EXPR>, | |
495 | L<C<unlink>|/unlink LIST>, L<C<utime>|/utime LIST>, L<C<wait>|/wait>, | |
496 | L<C<waitpid>|/waitpid PID,FLAGS> | |
60f9f73c JH |
497 | |
498 | For more information about the portability of these functions, see | |
499 | L<perlport> and other available platform-specific documentation. | |
500 | ||
cb1a09d0 AD |
501 | =head2 Alphabetical Listing of Perl Functions |
502 | ||
2263ed23 | 503 | =over |
a0d0e21e | 504 | |
5b3c99c0 | 505 | =item -X FILEHANDLE |
d74e8afc ITB |
506 | X<-r>X<-w>X<-x>X<-o>X<-R>X<-W>X<-X>X<-O>X<-e>X<-z>X<-s>X<-f>X<-d>X<-l>X<-p> |
507 | X<-S>X<-b>X<-c>X<-t>X<-u>X<-g>X<-k>X<-T>X<-B>X<-M>X<-A>X<-C> | |
a0d0e21e | 508 | |
5b3c99c0 | 509 | =item -X EXPR |
a0d0e21e | 510 | |
5228a96c SP |
511 | =item -X DIRHANDLE |
512 | ||
5b3c99c0 | 513 | =item -X |
a0d0e21e | 514 | |
c17cdb72 NC |
515 | =for Pod::Functions a file test (-r, -x, etc) |
516 | ||
a0d0e21e | 517 | A file test, where X is one of the letters listed below. This unary |
2263ed23 | 518 | operator takes one argument, either a filename, a filehandle, or a dirhandle, |
5228a96c | 519 | and tests the associated file to see if something is true about it. If the |
2263ed23 LM |
520 | argument is omitted, tests L<C<$_>|perlvar/$_>, except for C<-t>, which |
521 | tests STDIN. Unless otherwise documented, it returns C<1> for true and | |
522 | C<''> for false. If the file doesn't exist or can't be examined, it | |
523 | returns L<C<undef>|/undef EXPR> and sets L<C<$!>|perlvar/$!> (errno). | |
524 | Despite the funny names, precedence is the same as any other named unary | |
525 | operator. The operator may be any of: | |
a0d0e21e | 526 | |
5ed4f2ec | 527 | -r File is readable by effective uid/gid. |
528 | -w File is writable by effective uid/gid. | |
529 | -x File is executable by effective uid/gid. | |
530 | -o File is owned by effective uid. | |
a0d0e21e | 531 | |
5ed4f2ec | 532 | -R File is readable by real uid/gid. |
533 | -W File is writable by real uid/gid. | |
534 | -X File is executable by real uid/gid. | |
535 | -O File is owned by real uid. | |
a0d0e21e | 536 | |
5ed4f2ec | 537 | -e File exists. |
538 | -z File has zero size (is empty). | |
539 | -s File has nonzero size (returns size in bytes). | |
a0d0e21e | 540 | |
5ed4f2ec | 541 | -f File is a plain file. |
542 | -d File is a directory. | |
ae07d0f9 S |
543 | -l File is a symbolic link (false if symlinks aren't |
544 | supported by the file system). | |
5ed4f2ec | 545 | -p File is a named pipe (FIFO), or Filehandle is a pipe. |
546 | -S File is a socket. | |
547 | -b File is a block special file. | |
548 | -c File is a character special file. | |
549 | -t Filehandle is opened to a tty. | |
a0d0e21e | 550 | |
5ed4f2ec | 551 | -u File has setuid bit set. |
552 | -g File has setgid bit set. | |
553 | -k File has sticky bit set. | |
a0d0e21e | 554 | |
65cc07c9 | 555 | -T File is an ASCII or UTF-8 text file (heuristic guess). |
5ed4f2ec | 556 | -B File is a "binary" file (opposite of -T). |
a0d0e21e | 557 | |
5ed4f2ec | 558 | -M Script start time minus file modification time, in days. |
559 | -A Same for access time. | |
f7051f2c FC |
560 | -C Same for inode change time (Unix, may differ for other |
561 | platforms) | |
a0d0e21e | 562 | |
a0d0e21e LW |
563 | Example: |
564 | ||
565 | while (<>) { | |
a9a5a0dc VP |
566 | chomp; |
567 | next unless -f $_; # ignore specials | |
568 | #... | |
a0d0e21e LW |
569 | } |
570 | ||
4fb67938 FC |
571 | Note that C<-s/a/b/> does not do a negated substitution. Saying |
572 | C<-exp($foo)> still works as expected, however: only single letters | |
573 | following a minus are interpreted as file tests. | |
574 | ||
575 | These operators are exempt from the "looks like a function rule" described | |
4d0444a3 FC |
576 | above. That is, an opening parenthesis after the operator does not affect |
577 | how much of the following code constitutes the argument. Put the opening | |
4fb67938 FC |
578 | parentheses before the operator to separate it from code that follows (this |
579 | applies only to operators with higher precedence than unary operators, of | |
580 | course): | |
581 | ||
582 | -s($file) + 1024 # probably wrong; same as -s($file + 1024) | |
583 | (-s $file) + 1024 # correct | |
584 | ||
5ff3f7a4 GS |
585 | The interpretation of the file permission operators C<-r>, C<-R>, |
586 | C<-w>, C<-W>, C<-x>, and C<-X> is by default based solely on the mode | |
587 | of the file and the uids and gids of the user. There may be other | |
ecae030f MO |
588 | reasons you can't actually read, write, or execute the file: for |
589 | example network filesystem access controls, ACLs (access control lists), | |
590 | read-only filesystems, and unrecognized executable formats. Note | |
591 | that the use of these six specific operators to verify if some operation | |
592 | is possible is usually a mistake, because it may be open to race | |
593 | conditions. | |
5ff3f7a4 | 594 | |
2b5ab1e7 TC |
595 | Also note that, for the superuser on the local filesystems, the C<-r>, |
596 | C<-R>, C<-w>, and C<-W> tests always return 1, and C<-x> and C<-X> return 1 | |
5ff3f7a4 | 597 | if any execute bit is set in the mode. Scripts run by the superuser |
2263ed23 LM |
598 | may thus need to do a L<C<stat>|/stat FILEHANDLE> to determine the |
599 | actual mode of the file, or temporarily set their effective uid to | |
600 | something else. | |
601 | ||
602 | If you are using ACLs, there is a pragma called L<C<filetest>|filetest> | |
603 | that may produce more accurate results than the bare | |
604 | L<C<stat>|/stat FILEHANDLE> mode bits. | |
605 | When under C<use filetest 'access'>, the above-mentioned filetests | |
606 | test whether the permission can(not) be granted using the L<access(2)> | |
607 | family of system calls. Also note that the C<-x> and C<-X> tests may | |
5ff3f7a4 GS |
608 | under this pragma return true even if there are no execute permission |
609 | bits set (nor any extra execute permission ACLs). This strangeness is | |
391b733c | 610 | due to the underlying system calls' definitions. Note also that, due to |
ecae030f MO |
611 | the implementation of C<use filetest 'access'>, the C<_> special |
612 | filehandle won't cache the results of the file tests when this pragma is | |
2263ed23 LM |
613 | in effect. Read the documentation for the L<C<filetest>|filetest> |
614 | pragma for more information. | |
5ff3f7a4 | 615 | |
2263ed23 | 616 | The C<-T> and C<-B> tests work as follows. The first block or so of |
65cc07c9 | 617 | the file is examined to see if it is valid UTF-8 that includes non-ASCII |
2263ed23 | 618 | characters. If so, it's a C<-T> file. Otherwise, that same portion of |
65cc07c9 KW |
619 | the file is examined for odd characters such as strange control codes or |
620 | characters with the high bit set. If more than a third of the | |
621 | characters are strange, it's a C<-B> file; otherwise it's a C<-T> file. | |
622 | Also, any file containing a zero byte in the examined portion is | |
623 | considered a binary file. (If executed within the scope of a L<S<use | |
624 | locale>|perllocale> which includes C<LC_CTYPE>, odd characters are | |
444d4f5c | 625 | anything that isn't a printable nor space in the current locale.) If |
65cc07c9 KW |
626 | C<-T> or C<-B> is used on a filehandle, the current IO buffer is |
627 | examined | |
3b10bc60 | 628 | rather than the first block. Both C<-T> and C<-B> return true on an empty |
54310121 | 629 | file, or a file at EOF when testing a filehandle. Because you have to |
4633a7c4 LW |
630 | read a file to do the C<-T> test, on most occasions you want to use a C<-f> |
631 | against the file first, as in C<next unless -f $file && -T $file>. | |
a0d0e21e | 632 | |
2263ed23 LM |
633 | If any of the file tests (or either the L<C<stat>|/stat FILEHANDLE> or |
634 | L<C<lstat>|/lstat FILEHANDLE> operator) is given the special filehandle | |
635 | consisting of a solitary underline, then the stat structure of the | |
636 | previous file test (or L<C<stat>|/stat FILEHANDLE> operator) is used, | |
637 | saving a system call. (This doesn't work with C<-t>, and you need to | |
638 | remember that L<C<lstat>|/lstat FILEHANDLE> and C<-l> leave values in | |
639 | the stat structure for the symbolic link, not the real file.) (Also, if | |
640 | the stat buffer was filled by an L<C<lstat>|/lstat FILEHANDLE> call, | |
641 | C<-T> and C<-B> will reset it with the results of C<stat _>). | |
5c9aa243 | 642 | Example: |
a0d0e21e LW |
643 | |
644 | print "Can do.\n" if -r $a || -w _ || -x _; | |
645 | ||
646 | stat($filename); | |
647 | print "Readable\n" if -r _; | |
648 | print "Writable\n" if -w _; | |
649 | print "Executable\n" if -x _; | |
650 | print "Setuid\n" if -u _; | |
651 | print "Setgid\n" if -g _; | |
652 | print "Sticky\n" if -k _; | |
653 | print "Text\n" if -T _; | |
654 | print "Binary\n" if -B _; | |
655 | ||
e9fa405d | 656 | As of Perl 5.10.0, as a form of purely syntactic sugar, you can stack file |
fbb0b3b3 | 657 | test operators, in a way that C<-f -w -x $file> is equivalent to |
a5840dee | 658 | C<-x $file && -w _ && -f _>. (This is only fancy syntax: if you use |
fbb0b3b3 RGS |
659 | the return value of C<-f $file> as an argument to another filetest |
660 | operator, no special magic will happen.) | |
661 | ||
bee96257 | 662 | Portability issues: L<perlport/-X>. |
ea9eb35a | 663 | |
bade7fbc TC |
664 | To avoid confusing would-be users of your code with mysterious |
665 | syntax errors, put something like this at the top of your script: | |
666 | ||
667 | use 5.010; # so filetest ops can stack | |
668 | ||
a0d0e21e | 669 | =item abs VALUE |
d74e8afc | 670 | X<abs> X<absolute> |
a0d0e21e | 671 | |
54310121 | 672 | =item abs |
bbce6d69 | 673 | |
c17cdb72 NC |
674 | =for Pod::Functions absolute value function |
675 | ||
a0d0e21e | 676 | Returns the absolute value of its argument. |
2263ed23 | 677 | If VALUE is omitted, uses L<C<$_>|perlvar/$_>. |
a0d0e21e LW |
678 | |
679 | =item accept NEWSOCKET,GENERICSOCKET | |
d74e8afc | 680 | X<accept> |
a0d0e21e | 681 | |
c17cdb72 NC |
682 | =for Pod::Functions accept an incoming socket connect |
683 | ||
2263ed23 | 684 | Accepts an incoming socket connect, just as L<accept(2)> |
19799a22 | 685 | does. Returns the packed address if it succeeded, false otherwise. |
2b5ab1e7 | 686 | See the example in L<perlipc/"Sockets: Client/Server Communication">. |
a0d0e21e | 687 | |
8d2a6795 GS |
688 | On systems that support a close-on-exec flag on files, the flag will |
689 | be set for the newly opened file descriptor, as determined by the | |
2263ed23 | 690 | value of L<C<$^F>|perlvar/$^F>. See L<perlvar/$^F>. |
8d2a6795 | 691 | |
a0d0e21e | 692 | =item alarm SECONDS |
d74e8afc ITB |
693 | X<alarm> |
694 | X<SIGALRM> | |
695 | X<timer> | |
a0d0e21e | 696 | |
54310121 | 697 | =item alarm |
bbce6d69 | 698 | |
c17cdb72 NC |
699 | =for Pod::Functions schedule a SIGALRM |
700 | ||
a0d0e21e | 701 | Arranges to have a SIGALRM delivered to this process after the |
cf264981 | 702 | specified number of wallclock seconds has elapsed. If SECONDS is not |
2263ed23 LM |
703 | specified, the value stored in L<C<$_>|perlvar/$_> is used. (On some |
704 | machines, unfortunately, the elapsed time may be up to one second less | |
705 | or more than you specified because of how seconds are counted, and | |
706 | process scheduling may delay the delivery of the signal even further.) | |
d400eac8 JH |
707 | |
708 | Only one timer may be counting at once. Each call disables the | |
709 | previous timer, and an argument of C<0> may be supplied to cancel the | |
710 | previous timer without starting a new one. The returned value is the | |
711 | amount of time remaining on the previous timer. | |
a0d0e21e | 712 | |
2263ed23 | 713 | For delays of finer granularity than one second, the L<Time::HiRes> module |
2bc69794 | 714 | (from CPAN, and starting from Perl 5.8 part of the standard |
2263ed23 LM |
715 | distribution) provides |
716 | L<C<ualarm>|Time::HiRes/ualarm ( $useconds [, $interval_useconds ] )>. | |
717 | You may also use Perl's four-argument version of | |
718 | L<C<select>|/select RBITS,WBITS,EBITS,TIMEOUT> leaving the first three | |
719 | arguments undefined, or you might be able to use the | |
720 | L<C<syscall>|/syscall NUMBER, LIST> interface to access L<setitimer(2)> | |
721 | if your system supports it. See L<perlfaq8> for details. | |
722 | ||
723 | It is usually a mistake to intermix L<C<alarm>|/alarm SECONDS> and | |
724 | L<C<sleep>|/sleep EXPR> calls, because L<C<sleep>|/sleep EXPR> may be | |
725 | internally implemented on your system with L<C<alarm>|/alarm SECONDS>. | |
726 | ||
727 | If you want to use L<C<alarm>|/alarm SECONDS> to time out a system call | |
728 | you need to use an L<C<eval>|/eval EXPR>/L<C<die>|/die LIST> pair. You | |
729 | can't rely on the alarm causing the system call to fail with | |
730 | L<C<$!>|perlvar/$!> set to C<EINTR> because Perl sets up signal handlers | |
731 | to restart system calls on some systems. Using | |
732 | L<C<eval>|/eval EXPR>/L<C<die>|/die LIST> always works, modulo the | |
733 | caveats given in L<perlipc/"Signals">. | |
ff68c719 | 734 | |
735 | eval { | |
a9a5a0dc VP |
736 | local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required |
737 | alarm $timeout; | |
2263ed23 | 738 | my $nread = sysread $socket, $buffer, $size; |
a9a5a0dc | 739 | alarm 0; |
ff68c719 | 740 | }; |
ff68c719 | 741 | if ($@) { |
a9a5a0dc | 742 | die unless $@ eq "alarm\n"; # propagate unexpected errors |
5ed4f2ec | 743 | # timed out |
ff68c719 | 744 | } |
745 | else { | |
5ed4f2ec | 746 | # didn't |
ff68c719 | 747 | } |
748 | ||
91d81acc JH |
749 | For more information see L<perlipc>. |
750 | ||
ea9eb35a BJ |
751 | Portability issues: L<perlport/alarm>. |
752 | ||
a0d0e21e | 753 | =item atan2 Y,X |
d74e8afc | 754 | X<atan2> X<arctangent> X<tan> X<tangent> |
a0d0e21e | 755 | |
c17cdb72 NC |
756 | =for Pod::Functions arctangent of Y/X in the range -PI to PI |
757 | ||
a0d0e21e LW |
758 | Returns the arctangent of Y/X in the range -PI to PI. |
759 | ||
2263ed23 LM |
760 | For the tangent operation, you may use the |
761 | L<C<Math::Trig::tan>|Math::Trig/B<tan>> function, or use the familiar | |
762 | relation: | |
28757baa | 763 | |
764 | sub tan { sin($_[0]) / cos($_[0]) } | |
765 | ||
a1021d57 | 766 | The return value for C<atan2(0,0)> is implementation-defined; consult |
2263ed23 | 767 | your L<atan2(3)> manpage for more information. |
bf5f1b4c | 768 | |
ea9eb35a BJ |
769 | Portability issues: L<perlport/atan2>. |
770 | ||
a0d0e21e | 771 | =item bind SOCKET,NAME |
d74e8afc | 772 | X<bind> |
a0d0e21e | 773 | |
c17cdb72 NC |
774 | =for Pod::Functions binds an address to a socket |
775 | ||
2263ed23 | 776 | Binds a network address to a socket, just as L<bind(2)> |
19799a22 | 777 | does. Returns true if it succeeded, false otherwise. NAME should be a |
4633a7c4 LW |
778 | packed address of the appropriate type for the socket. See the examples in |
779 | L<perlipc/"Sockets: Client/Server Communication">. | |
a0d0e21e | 780 | |
fae2c0fb | 781 | =item binmode FILEHANDLE, LAYER |
d74e8afc | 782 | X<binmode> X<binary> X<text> X<DOS> X<Windows> |
1c1fc3ea | 783 | |
a0d0e21e LW |
784 | =item binmode FILEHANDLE |
785 | ||
c17cdb72 NC |
786 | =for Pod::Functions prepare binary files for I/O |
787 | ||
1cbfc93d NIS |
788 | Arranges for FILEHANDLE to be read or written in "binary" or "text" |
789 | mode on systems where the run-time libraries distinguish between | |
790 | binary and text files. If FILEHANDLE is an expression, the value is | |
791 | taken as the name of the filehandle. Returns true on success, | |
2263ed23 LM |
792 | otherwise it returns L<C<undef>|/undef EXPR> and sets |
793 | L<C<$!>|perlvar/$!> (errno). | |
1cbfc93d | 794 | |
2263ed23 LM |
795 | On some systems (in general, DOS- and Windows-based systems) |
796 | L<C<binmode>|/binmode FILEHANDLE, LAYER> is necessary when you're not | |
797 | working with a text file. For the sake of portability it is a good idea | |
798 | always to use it when appropriate, and never to use it when it isn't | |
799 | appropriate. Also, people can set their I/O to be by default | |
800 | UTF8-encoded Unicode, not bytes. | |
d807c6f4 | 801 | |
2263ed23 LM |
802 | In other words: regardless of platform, use |
803 | L<C<binmode>|/binmode FILEHANDLE, LAYER> on binary data, like images, | |
804 | for example. | |
d807c6f4 JH |
805 | |
806 | If LAYER is present it is a single string, but may contain multiple | |
391b733c | 807 | directives. The directives alter the behaviour of the filehandle. |
d7a0d798 | 808 | When LAYER is present, using binmode on a text file makes sense. |
d807c6f4 | 809 | |
fae2c0fb | 810 | If LAYER is omitted or specified as C<:raw> the filehandle is made |
391b733c | 811 | suitable for passing binary data. This includes turning off possible CRLF |
0226bbdb | 812 | translation and marking it as bytes (as opposed to Unicode characters). |
749683d2 | 813 | Note that, despite what may be implied in I<"Programming Perl"> (the |
3b10bc60 | 814 | Camel, 3rd edition) or elsewhere, C<:raw> is I<not> simply the inverse of C<:crlf>. |
815 | Other layers that would affect the binary nature of the stream are | |
391b733c | 816 | I<also> disabled. See L<PerlIO>, L<perlrun>, and the discussion about the |
0226bbdb | 817 | PERLIO environment variable. |
01e6739c | 818 | |
3b10bc60 | 819 | The C<:bytes>, C<:crlf>, C<:utf8>, and any other directives of the |
2263ed23 LM |
820 | form C<:...>, are called I/O I<layers>. The L<open> pragma can be used to |
821 | establish default I/O layers. | |
d807c6f4 | 822 | |
2263ed23 LM |
823 | I<The LAYER parameter of the L<C<binmode>|/binmode FILEHANDLE, LAYER> |
824 | function is described as "DISCIPLINE" in "Programming Perl, 3rd | |
825 | Edition". However, since the publishing of this book, by many known as | |
826 | "Camel III", the consensus of the naming of this functionality has moved | |
827 | from "discipline" to "layer". All documentation of this version of Perl | |
828 | therefore refers to "layers" rather than to "disciplines". Now back to | |
829 | the regularly scheduled documentation...> | |
fae2c0fb | 830 | |
8f1da26d | 831 | To mark FILEHANDLE as UTF-8, use C<:utf8> or C<:encoding(UTF-8)>. |
6902c96a | 832 | C<:utf8> just marks the data as UTF-8 without further checking, |
8f1da26d | 833 | while C<:encoding(UTF-8)> checks the data for actually being valid |
391b733c | 834 | UTF-8. More details can be found in L<PerlIO::encoding>. |
1cbfc93d | 835 | |
2263ed23 LM |
836 | In general, L<C<binmode>|/binmode FILEHANDLE, LAYER> should be called |
837 | after L<C<open>|/open FILEHANDLE,EXPR> but before any I/O is done on the | |
838 | filehandle. Calling L<C<binmode>|/binmode FILEHANDLE, LAYER> normally | |
839 | flushes any pending buffered output data (and perhaps pending input | |
840 | data) on the handle. An exception to this is the C<:encoding> layer | |
841 | that changes the default character encoding of the handle. | |
fae2c0fb | 842 | The C<:encoding> layer sometimes needs to be called in |
2263ed23 | 843 | mid-stream, and it doesn't flush the stream. C<:encoding> |
3874323d | 844 | also implicitly pushes on top of itself the C<:utf8> layer because |
3b10bc60 | 845 | internally Perl operates on UTF8-encoded Unicode characters. |
16fe6d59 | 846 | |
19799a22 | 847 | The operating system, device drivers, C libraries, and Perl run-time |
8f1da26d TC |
848 | system all conspire to let the programmer treat a single |
849 | character (C<\n>) as the line terminator, irrespective of external | |
30168b04 GS |
850 | representation. On many operating systems, the native text file |
851 | representation matches the internal representation, but on some | |
852 | platforms the external representation of C<\n> is made up of more than | |
853 | one character. | |
854 | ||
8f1da26d TC |
855 | All variants of Unix, Mac OS (old and new), and Stream_LF files on VMS use |
856 | a single character to end each line in the external representation of text | |
857 | (even though that single character is CARRIAGE RETURN on old, pre-Darwin | |
391b733c | 858 | flavors of Mac OS, and is LINE FEED on Unix and most VMS files). In other |
8f1da26d TC |
859 | systems like OS/2, DOS, and the various flavors of MS-Windows, your program |
860 | sees a C<\n> as a simple C<\cJ>, but what's stored in text files are the | |
2263ed23 LM |
861 | two characters C<\cM\cJ>. That means that if you don't use |
862 | L<C<binmode>|/binmode FILEHANDLE, LAYER> on these systems, C<\cM\cJ> | |
863 | sequences on disk will be converted to C<\n> on input, and any C<\n> in | |
864 | your program will be converted back to C<\cM\cJ> on output. This is | |
865 | what you want for text files, but it can be disastrous for binary files. | |
866 | ||
867 | Another consequence of using L<C<binmode>|/binmode FILEHANDLE, LAYER> | |
868 | (on some systems) is that special end-of-file markers will be seen as | |
869 | part of the data stream. For systems from the Microsoft family this | |
870 | means that, if your binary data contain C<\cZ>, the I/O subsystem will | |
871 | regard it as the end of the file, unless you use | |
872 | L<C<binmode>|/binmode FILEHANDLE, LAYER>. | |
873 | ||
874 | L<C<binmode>|/binmode FILEHANDLE, LAYER> is important not only for | |
875 | L<C<readline>|/readline EXPR> and L<C<print>|/print FILEHANDLE LIST> | |
876 | operations, but also when using | |
877 | L<C<read>|/read FILEHANDLE,SCALAR,LENGTH,OFFSET>, | |
878 | L<C<seek>|/seek FILEHANDLE,POSITION,WHENCE>, | |
879 | L<C<sysread>|/sysread FILEHANDLE,SCALAR,LENGTH,OFFSET>, | |
880 | L<C<syswrite>|/syswrite FILEHANDLE,SCALAR,LENGTH,OFFSET> and | |
881 | L<C<tell>|/tell FILEHANDLE> (see L<perlport> for more details). See the | |
882 | L<C<$E<sol>>|perlvar/$E<sol>> and L<C<$\>|perlvar/$\> variables in | |
883 | L<perlvar> for how to manually set your input and output | |
30168b04 | 884 | line-termination sequences. |
a0d0e21e | 885 | |
ea9eb35a BJ |
886 | Portability issues: L<perlport/binmode>. |
887 | ||
4633a7c4 | 888 | =item bless REF,CLASSNAME |
d74e8afc | 889 | X<bless> |
a0d0e21e LW |
890 | |
891 | =item bless REF | |
892 | ||
c17cdb72 NC |
893 | =for Pod::Functions create an object |
894 | ||
2b5ab1e7 TC |
895 | This function tells the thingy referenced by REF that it is now an object |
896 | in the CLASSNAME package. If CLASSNAME is omitted, the current package | |
2263ed23 LM |
897 | is used. Because a L<C<bless>|/bless REF,CLASSNAME> is often the last |
898 | thing in a constructor, it returns the reference for convenience. | |
899 | Always use the two-argument version if a derived class might inherit the | |
900 | method doing the blessing. See L<perlobj> for more about the blessing | |
901 | (and blessings) of objects. | |
a0d0e21e | 902 | |
57668c4d | 903 | Consider always blessing objects in CLASSNAMEs that are mixed case. |
2b5ab1e7 | 904 | Namespaces with all lowercase names are considered reserved for |
2263ed23 | 905 | Perl pragmas. Builtin types have all uppercase names. To prevent |
2b5ab1e7 TC |
906 | confusion, you may wish to avoid such package names as well. Make sure |
907 | that CLASSNAME is a true value. | |
60ad88b8 GS |
908 | |
909 | See L<perlmod/"Perl Modules">. | |
910 | ||
0d863452 RH |
911 | =item break |
912 | ||
d9b04284 | 913 | =for Pod::Functions +switch break out of a C<given> block |
c17cdb72 | 914 | |
2263ed23 | 915 | Break out of a C<given> block. |
0d863452 | 916 | |
2263ed23 LM |
917 | L<C<break>|/break> is available only if the |
918 | L<C<"switch"> feature|feature/The 'switch' feature> is enabled or if it | |
919 | is prefixed with C<CORE::>. The | |
920 | L<C<"switch"> feature|feature/The 'switch' feature> is enabled | |
921 | automatically with a C<use v5.10> (or higher) declaration in the current | |
922 | scope. | |
0d863452 | 923 | |
a0d0e21e | 924 | =item caller EXPR |
d74e8afc | 925 | X<caller> X<call stack> X<stack> X<stack trace> |
a0d0e21e LW |
926 | |
927 | =item caller | |
928 | ||
c17cdb72 NC |
929 | =for Pod::Functions get context of the current subroutine call |
930 | ||
1d56df50 DD |
931 | Returns the context of the current pure perl subroutine call. In scalar |
932 | context, returns the caller's package name if there I<is> a caller (that is, if | |
2263ed23 LM |
933 | we're in a subroutine or L<C<eval>|/eval EXPR> or |
934 | L<C<require>|/require VERSION>) and the undefined value otherwise. | |
935 | caller never returns XS subs and they are skipped. The next pure perl | |
936 | sub will appear instead of the XS sub in caller's return values. In | |
937 | list context, caller returns | |
a0d0e21e | 938 | |
2263ed23 LM |
939 | # 0 1 2 |
940 | my ($package, $filename, $line) = caller; | |
a0d0e21e LW |
941 | |
942 | With EXPR, it returns some extra information that the debugger uses to | |
943 | print a stack trace. The value of EXPR indicates how many call frames | |
944 | to go back before the current one. | |
945 | ||
e46aa1dd KW |
946 | # 0 1 2 3 4 |
947 | my ($package, $filename, $line, $subroutine, $hasargs, | |
ee6b43cc | 948 | |
e46aa1dd KW |
949 | # 5 6 7 8 9 10 |
950 | $wantarray, $evaltext, $is_require, $hints, $bitmask, $hinthash) | |
951 | = caller($i); | |
e7ea3e70 | 952 | |
02729fef | 953 | Here, $subroutine is the function that the caller called (rather than the |
444d4f5c | 954 | function containing the caller). Note that $subroutine may be C<(eval)> if |
2263ed23 LM |
955 | the frame is not a subroutine call, but an L<C<eval>|/eval EXPR>. In |
956 | such a case additional elements $evaltext and C<$is_require> are set: | |
957 | C<$is_require> is true if the frame is created by a | |
958 | L<C<require>|/require VERSION> or L<C<use>|/use Module VERSION LIST> | |
959 | statement, $evaltext contains the text of the C<eval EXPR> statement. | |
960 | In particular, for an C<eval BLOCK> statement, $subroutine is C<(eval)>, | |
961 | but $evaltext is undefined. (Note also that each | |
962 | L<C<use>|/use Module VERSION LIST> statement creates a | |
963 | L<C<require>|/require VERSION> frame inside an C<eval EXPR> frame.) | |
964 | $subroutine may also be C<(unknown)> if this particular subroutine | |
965 | happens to have been deleted from the symbol table. C<$hasargs> is true | |
966 | if a new instance of L<C<@_>|perlvar/@_> was set up for the frame. | |
0fc9dec4 | 967 | C<$hints> and C<$bitmask> contain pragmatic hints that the caller was |
2263ed23 LM |
968 | compiled with. C<$hints> corresponds to L<C<$^H>|perlvar/$^H>, and |
969 | C<$bitmask> corresponds to | |
970 | L<C<${^WARNING_BITS}>|perlvar/${^WARNING_BITS}>. The C<$hints> and | |
971 | C<$bitmask> values are subject to change between versions of Perl, and | |
972 | are not meant for external use. | |
973 | ||
974 | C<$hinthash> is a reference to a hash containing the value of | |
975 | L<C<%^H>|perlvar/%^H> when the caller was compiled, or | |
976 | L<C<undef>|/undef EXPR> if L<C<%^H>|perlvar/%^H> was empty. Do not | |
977 | modify the values of this hash, as they are the actual values stored in | |
978 | the optree. | |
b3ca2e83 | 979 | |
ffe0c19d FC |
980 | Furthermore, when called from within the DB package in |
981 | list context, and with an argument, caller returns more | |
7660c0ab | 982 | detailed information: it sets the list variable C<@DB::args> to be the |
54310121 | 983 | arguments with which the subroutine was invoked. |
748a9306 | 984 | |
7660c0ab | 985 | Be aware that the optimizer might have optimized call frames away before |
2263ed23 LM |
986 | L<C<caller>|/caller EXPR> had a chance to get the information. That |
987 | means that C<caller(N)> might not return information about the call | |
988 | frame you expect it to, for C<< N > 1 >>. In particular, C<@DB::args> | |
989 | might have information from the previous time L<C<caller>|/caller EXPR> | |
990 | was called. | |
7660c0ab | 991 | |
8f1da26d | 992 | Be aware that setting C<@DB::args> is I<best effort>, intended for |
391b733c | 993 | debugging or generating backtraces, and should not be relied upon. In |
2263ed23 LM |
994 | particular, as L<C<@_>|perlvar/@_> contains aliases to the caller's |
995 | arguments, Perl does not take a copy of L<C<@_>|perlvar/@_>, so | |
996 | C<@DB::args> will contain modifications the subroutine makes to | |
997 | L<C<@_>|perlvar/@_> or its contents, not the original values at call | |
998 | time. C<@DB::args>, like L<C<@_>|perlvar/@_>, does not hold explicit | |
999 | references to its elements, so under certain cases its elements may have | |
1000 | become freed and reallocated for other variables or temporary values. | |
1001 | Finally, a side effect of the current implementation is that the effects | |
1002 | of C<shift @_> can I<normally> be undone (but not C<pop @_> or other | |
1003 | splicing, I<and> not if a reference to L<C<@_>|perlvar/@_> has been | |
1004 | taken, I<and> subject to the caveat about reallocated elements), so | |
1005 | C<@DB::args> is actually a hybrid of the current state and initial state | |
1006 | of L<C<@_>|perlvar/@_>. Buyer beware. | |
ca9f0cb5 | 1007 | |
a0d0e21e | 1008 | =item chdir EXPR |
d74e8afc ITB |
1009 | X<chdir> |
1010 | X<cd> | |
f723aae1 | 1011 | X<directory, change> |
a0d0e21e | 1012 | |
c4aca7d0 GA |
1013 | =item chdir FILEHANDLE |
1014 | ||
1015 | =item chdir DIRHANDLE | |
1016 | ||
ce2984c3 PF |
1017 | =item chdir |
1018 | ||
c17cdb72 NC |
1019 | =for Pod::Functions change your current working directory |
1020 | ||
391b733c | 1021 | Changes the working directory to EXPR, if possible. If EXPR is omitted, |
0bfc1ec4 | 1022 | changes to the directory specified by C<$ENV{HOME}>, if set; if not, |
391b733c | 1023 | changes to the directory specified by C<$ENV{LOGDIR}>. (Under VMS, the |
201e9e2a | 1024 | variable C<$ENV{'SYS$LOGIN'}> is also checked, and used if it is set.) If |
2263ed23 LM |
1025 | neither is set, L<C<chdir>|/chdir EXPR> does nothing and fails. It |
1026 | returns true on success, false otherwise. See the example under | |
1027 | L<C<die>|/die LIST>. | |
a0d0e21e | 1028 | |
2263ed23 LM |
1029 | On systems that support L<fchdir(2)>, you may pass a filehandle or |
1030 | directory handle as the argument. On systems that don't support L<fchdir(2)>, | |
3b10bc60 | 1031 | passing handles raises an exception. |
c4aca7d0 | 1032 | |
a0d0e21e | 1033 | =item chmod LIST |
d74e8afc | 1034 | X<chmod> X<permission> X<mode> |
a0d0e21e | 1035 | |
c17cdb72 NC |
1036 | =for Pod::Functions changes the permissions on a list of files |
1037 | ||
a0d0e21e | 1038 | Changes the permissions of a list of files. The first element of the |
8f1da26d | 1039 | list must be the numeric mode, which should probably be an octal |
4ad40acf | 1040 | number, and which definitely should I<not> be a string of octal digits: |
3b10bc60 | 1041 | C<0644> is okay, but C<"0644"> is not. Returns the number of files |
2263ed23 LM |
1042 | successfully changed. See also L<C<oct>|/oct EXPR> if all you have is a |
1043 | string. | |
a0d0e21e | 1044 | |
2263ed23 | 1045 | my $cnt = chmod 0755, "foo", "bar"; |
a0d0e21e | 1046 | chmod 0755, @executables; |
2263ed23 LM |
1047 | my $mode = "0644"; chmod $mode, "foo"; # !!! sets mode to |
1048 | # --w----r-T | |
1049 | my $mode = "0644"; chmod oct($mode), "foo"; # this is better | |
1050 | my $mode = 0644; chmod $mode, "foo"; # this is best | |
a0d0e21e | 1051 | |
2263ed23 LM |
1052 | On systems that support L<fchmod(2)>, you may pass filehandles among the |
1053 | files. On systems that don't support L<fchmod(2)>, passing filehandles raises | |
3b10bc60 | 1054 | an exception. Filehandles must be passed as globs or glob references to be |
1055 | recognized; barewords are considered filenames. | |
c4aca7d0 GA |
1056 | |
1057 | open(my $fh, "<", "foo"); | |
1058 | my $perm = (stat $fh)[2] & 07777; | |
1059 | chmod($perm | 0600, $fh); | |
1060 | ||
2263ed23 LM |
1061 | You can also import the symbolic C<S_I*> constants from the |
1062 | L<C<Fcntl>|Fcntl> module: | |
ca6e1c26 | 1063 | |
3b10bc60 | 1064 | use Fcntl qw( :mode ); |
ca6e1c26 | 1065 | chmod S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH, @executables; |
3b10bc60 | 1066 | # Identical to the chmod 0755 of the example above. |
ca6e1c26 | 1067 | |
ea9eb35a BJ |
1068 | Portability issues: L<perlport/chmod>. |
1069 | ||
a0d0e21e | 1070 | =item chomp VARIABLE |
d74e8afc | 1071 | X<chomp> X<INPUT_RECORD_SEPARATOR> X<$/> X<newline> X<eol> |
a0d0e21e | 1072 | |
313c9f5c | 1073 | =item chomp( LIST ) |
a0d0e21e LW |
1074 | |
1075 | =item chomp | |
1076 | ||
c17cdb72 NC |
1077 | =for Pod::Functions remove a trailing record separator from a string |
1078 | ||
2263ed23 LM |
1079 | This safer version of L<C<chop>|/chop VARIABLE> removes any trailing |
1080 | string that corresponds to the current value of | |
1081 | L<C<$E<sol>>|perlvar/$E<sol>> (also known as C<$INPUT_RECORD_SEPARATOR> | |
1082 | in the L<C<English>|English> module). It returns the total | |
28757baa | 1083 | number of characters removed from all its arguments. It's often used to |
1084 | remove the newline from the end of an input record when you're worried | |
2b5ab1e7 | 1085 | that the final record may be missing its newline. When in paragraph |
cd3ae2ed | 1086 | mode (C<$/ = ''>), it removes all trailing newlines from the string. |
2263ed23 LM |
1087 | When in slurp mode (C<$/ = undef>) or fixed-length record mode |
1088 | (L<C<$E<sol>>|perlvar/$E<sol>> is a reference to an integer or the like; | |
1089 | see L<perlvar>), L<C<chomp>|/chomp VARIABLE> won't remove anything. | |
1090 | If VARIABLE is omitted, it chomps L<C<$_>|perlvar/$_>. Example: | |
a0d0e21e LW |
1091 | |
1092 | while (<>) { | |
a9a5a0dc | 1093 | chomp; # avoid \n on last field |
2263ed23 | 1094 | my @array = split(/:/); |
a9a5a0dc | 1095 | # ... |
a0d0e21e LW |
1096 | } |
1097 | ||
feef49c9 | 1098 | If VARIABLE is a hash, it chomps the hash's values, but not its keys, |
2263ed23 | 1099 | resetting the L<C<each>|/each HASH> iterator in the process. |
4bf21a6d | 1100 | |
a0d0e21e LW |
1101 | You can actually chomp anything that's an lvalue, including an assignment: |
1102 | ||
2263ed23 LM |
1103 | chomp(my $cwd = `pwd`); |
1104 | chomp(my $answer = <STDIN>); | |
a0d0e21e LW |
1105 | |
1106 | If you chomp a list, each element is chomped, and the total number of | |
1107 | characters removed is returned. | |
1108 | ||
15e44fd8 RGS |
1109 | Note that parentheses are necessary when you're chomping anything |
1110 | that is not a simple variable. This is because C<chomp $cwd = `pwd`;> | |
1111 | is interpreted as C<(chomp $cwd) = `pwd`;>, rather than as | |
1112 | C<chomp( $cwd = `pwd` )> which you might expect. Similarly, | |
1113 | C<chomp $a, $b> is interpreted as C<chomp($a), $b> rather than | |
1114 | as C<chomp($a, $b)>. | |
1115 | ||
a0d0e21e | 1116 | =item chop VARIABLE |
d74e8afc | 1117 | X<chop> |
a0d0e21e | 1118 | |
313c9f5c | 1119 | =item chop( LIST ) |
a0d0e21e LW |
1120 | |
1121 | =item chop | |
1122 | ||
c17cdb72 NC |
1123 | =for Pod::Functions remove the last character from a string |
1124 | ||
a0d0e21e | 1125 | Chops off the last character of a string and returns the character |
5b3eff12 | 1126 | chopped. It is much more efficient than C<s/.$//s> because it neither |
2263ed23 LM |
1127 | scans nor copies the string. If VARIABLE is omitted, chops |
1128 | L<C<$_>|perlvar/$_>. | |
feef49c9 | 1129 | If VARIABLE is a hash, it chops the hash's values, but not its keys, |
2263ed23 | 1130 | resetting the L<C<each>|/each HASH> iterator in the process. |
4bf21a6d | 1131 | |
5b3eff12 | 1132 | You can actually chop anything that's an lvalue, including an assignment. |
a0d0e21e LW |
1133 | |
1134 | If you chop a list, each element is chopped. Only the value of the | |
2263ed23 | 1135 | last L<C<chop>|/chop VARIABLE> is returned. |
a0d0e21e | 1136 | |
2263ed23 LM |
1137 | Note that L<C<chop>|/chop VARIABLE> returns the last character. To |
1138 | return all but the last character, use C<substr($string, 0, -1)>. | |
748a9306 | 1139 | |
2263ed23 | 1140 | See also L<C<chomp>|/chomp VARIABLE>. |
15e44fd8 | 1141 | |
a0d0e21e | 1142 | =item chown LIST |
d74e8afc | 1143 | X<chown> X<owner> X<user> X<group> |
a0d0e21e | 1144 | |
c17cdb72 NC |
1145 | =for Pod::Functions change the ownership on a list of files |
1146 | ||
a0d0e21e | 1147 | Changes the owner (and group) of a list of files. The first two |
19799a22 GS |
1148 | elements of the list must be the I<numeric> uid and gid, in that |
1149 | order. A value of -1 in either position is interpreted by most | |
1150 | systems to leave that value unchanged. Returns the number of files | |
1151 | successfully changed. | |
a0d0e21e | 1152 | |
2263ed23 | 1153 | my $cnt = chown $uid, $gid, 'foo', 'bar'; |
a0d0e21e LW |
1154 | chown $uid, $gid, @filenames; |
1155 | ||
2263ed23 LM |
1156 | On systems that support L<fchown(2)>, you may pass filehandles among the |
1157 | files. On systems that don't support L<fchown(2)>, passing filehandles raises | |
3b10bc60 | 1158 | an exception. Filehandles must be passed as globs or glob references to be |
1159 | recognized; barewords are considered filenames. | |
c4aca7d0 | 1160 | |
54310121 | 1161 | Here's an example that looks up nonnumeric uids in the passwd file: |
a0d0e21e LW |
1162 | |
1163 | print "User: "; | |
2263ed23 | 1164 | chomp(my $user = <STDIN>); |
5a964f20 | 1165 | print "Files: "; |
2263ed23 | 1166 | chomp(my $pattern = <STDIN>); |
a0d0e21e | 1167 | |
2263ed23 | 1168 | my ($login,$pass,$uid,$gid) = getpwnam($user) |
a9a5a0dc | 1169 | or die "$user not in passwd file"; |
a0d0e21e | 1170 | |
2263ed23 | 1171 | my @ary = glob($pattern); # expand filenames |
a0d0e21e LW |
1172 | chown $uid, $gid, @ary; |
1173 | ||
54310121 | 1174 | On most systems, you are not allowed to change the ownership of the |
4633a7c4 LW |
1175 | file unless you're the superuser, although you should be able to change |
1176 | the group to any of your secondary groups. On insecure systems, these | |
1177 | restrictions may be relaxed, but this is not a portable assumption. | |
19799a22 GS |
1178 | On POSIX systems, you can detect this condition this way: |
1179 | ||
1180 | use POSIX qw(sysconf _PC_CHOWN_RESTRICTED); | |
2263ed23 | 1181 | my $can_chown_giveaway = ! sysconf(_PC_CHOWN_RESTRICTED); |
4633a7c4 | 1182 | |
f48496b1 | 1183 | Portability issues: L<perlport/chown>. |
ea9eb35a | 1184 | |
a0d0e21e | 1185 | =item chr NUMBER |
d74e8afc | 1186 | X<chr> X<character> X<ASCII> X<Unicode> |
a0d0e21e | 1187 | |
54310121 | 1188 | =item chr |
bbce6d69 | 1189 | |
c17cdb72 NC |
1190 | =for Pod::Functions get character this number represents |
1191 | ||
a0d0e21e | 1192 | Returns the character represented by that NUMBER in the character set. |
a0ed51b3 | 1193 | For example, C<chr(65)> is C<"A"> in either ASCII or Unicode, and |
2263ed23 | 1194 | chr(0x263a) is a Unicode smiley face. |
aaa68c4a | 1195 | |
8a064bd6 | 1196 | Negative values give the Unicode replacement character (chr(0xfffd)), |
80d38338 | 1197 | except under the L<bytes> pragma, where the low eight bits of the value |
8a064bd6 JH |
1198 | (truncated to an integer) are used. |
1199 | ||
2263ed23 | 1200 | If NUMBER is omitted, uses L<C<$_>|perlvar/$_>. |
974da8e5 | 1201 | |
2263ed23 | 1202 | For the reverse, use L<C<ord>|/ord EXPR>. |
a0d0e21e | 1203 | |
2575c402 JW |
1204 | Note that characters from 128 to 255 (inclusive) are by default |
1205 | internally not encoded as UTF-8 for backward compatibility reasons. | |
974da8e5 | 1206 | |
2575c402 | 1207 | See L<perlunicode> for more about Unicode. |
bbce6d69 | 1208 | |
a0d0e21e | 1209 | =item chroot FILENAME |
d74e8afc | 1210 | X<chroot> X<root> |
a0d0e21e | 1211 | |
54310121 | 1212 | =item chroot |
bbce6d69 | 1213 | |
c17cdb72 NC |
1214 | =for Pod::Functions make directory new root for path lookups |
1215 | ||
5a964f20 | 1216 | This function works like the system call by the same name: it makes the |
4633a7c4 | 1217 | named directory the new root directory for all further pathnames that |
951ba7fe | 1218 | begin with a C</> by your process and all its children. (It doesn't |
28757baa | 1219 | change your current working directory, which is unaffected.) For security |
4633a7c4 | 1220 | reasons, this call is restricted to the superuser. If FILENAME is |
2263ed23 | 1221 | omitted, does a L<C<chroot>|/chroot FILENAME> to L<C<$_>|perlvar/$_>. |
a0d0e21e | 1222 | |
2263ed23 LM |
1223 | B<NOTE:> It is good security practice to do C<chdir("/")> |
1224 | (L<C<chdir>|/chdir EXPR> to the root directory) immediately after a | |
1225 | L<C<chroot>|/chroot FILENAME>. | |
b00d10dc | 1226 | |
ea9eb35a BJ |
1227 | Portability issues: L<perlport/chroot>. |
1228 | ||
a0d0e21e | 1229 | =item close FILEHANDLE |
d74e8afc | 1230 | X<close> |
a0d0e21e | 1231 | |
6a518fbc TP |
1232 | =item close |
1233 | ||
c17cdb72 NC |
1234 | =for Pod::Functions close file (or pipe or socket) handle |
1235 | ||
3b10bc60 | 1236 | Closes the file or pipe associated with the filehandle, flushes the IO |
e0f13c26 | 1237 | buffers, and closes the system file descriptor. Returns true if those |
8f1da26d | 1238 | operations succeed and if no error was reported by any PerlIO |
e0f13c26 RGS |
1239 | layer. Closes the currently selected filehandle if the argument is |
1240 | omitted. | |
fb73857a | 1241 | |
1242 | You don't have to close FILEHANDLE if you are immediately going to do | |
2263ed23 LM |
1243 | another L<C<open>|/open FILEHANDLE,EXPR> on it, because |
1244 | L<C<open>|/open FILEHANDLE,EXPR> closes it for you. (See | |
1245 | L<C<open>|/open FILEHANDLE,EXPR>.) However, an explicit | |
1246 | L<C<close>|/close FILEHANDLE> on an input file resets the line counter | |
1247 | (L<C<$.>|perlvar/$.>), while the implicit close done by | |
1248 | L<C<open>|/open FILEHANDLE,EXPR> does not. | |
1249 | ||
1250 | If the filehandle came from a piped open, L<C<close>|/close FILEHANDLE> | |
1251 | returns false if one of the other syscalls involved fails or if its | |
1252 | program exits with non-zero status. If the only problem was that the | |
1253 | program exited non-zero, L<C<$!>|perlvar/$!> will be set to C<0>. | |
1254 | Closing a pipe also waits for the process executing on the pipe to | |
1255 | exit--in case you wish to look at the output of the pipe afterwards--and | |
1256 | implicitly puts the exit status value of that command into | |
1257 | L<C<$?>|perlvar/$?> and | |
1258 | L<C<${^CHILD_ERROR_NATIVE}>|perlvar/${^CHILD_ERROR_NATIVE}>. | |
1259 | ||
1260 | If there are multiple threads running, L<C<close>|/close FILEHANDLE> on | |
1261 | a filehandle from a piped open returns true without waiting for the | |
1262 | child process to terminate, if the filehandle is still open in another | |
1263 | thread. | |
2e0cfa16 | 1264 | |
80d38338 TC |
1265 | Closing the read end of a pipe before the process writing to it at the |
1266 | other end is done writing results in the writer receiving a SIGPIPE. If | |
1267 | the other end can't handle that, be sure to read all the data before | |
1268 | closing the pipe. | |
73689b13 | 1269 | |
fb73857a | 1270 | Example: |
a0d0e21e | 1271 | |
fb73857a | 1272 | open(OUTPUT, '|sort >foo') # pipe to sort |
1273 | or die "Can't start sort: $!"; | |
5ed4f2ec | 1274 | #... # print stuff to output |
1275 | close OUTPUT # wait for sort to finish | |
fb73857a | 1276 | or warn $! ? "Error closing sort pipe: $!" |
1277 | : "Exit status $? from sort"; | |
5ed4f2ec | 1278 | open(INPUT, 'foo') # get sort's results |
fb73857a | 1279 | or die "Can't open 'foo' for input: $!"; |
a0d0e21e | 1280 | |
5a964f20 | 1281 | FILEHANDLE may be an expression whose value can be used as an indirect |
8f1da26d | 1282 | filehandle, usually the real filehandle name or an autovivified handle. |
a0d0e21e LW |
1283 | |
1284 | =item closedir DIRHANDLE | |
d74e8afc | 1285 | X<closedir> |
a0d0e21e | 1286 | |
c17cdb72 NC |
1287 | =for Pod::Functions close directory handle |
1288 | ||
2263ed23 LM |
1289 | Closes a directory opened by L<C<opendir>|/opendir DIRHANDLE,EXPR> and |
1290 | returns the success of that system call. | |
5a964f20 | 1291 | |
a0d0e21e | 1292 | =item connect SOCKET,NAME |
d74e8afc | 1293 | X<connect> |
a0d0e21e | 1294 | |
c17cdb72 NC |
1295 | =for Pod::Functions connect to a remote socket |
1296 | ||
2263ed23 | 1297 | Attempts to connect to a remote socket, just like L<connect(2)>. |
80d38338 | 1298 | Returns true if it succeeded, false otherwise. NAME should be a |
4633a7c4 LW |
1299 | packed address of the appropriate type for the socket. See the examples in |
1300 | L<perlipc/"Sockets: Client/Server Communication">. | |
a0d0e21e | 1301 | |
cb1a09d0 | 1302 | =item continue BLOCK |
d74e8afc | 1303 | X<continue> |
cb1a09d0 | 1304 | |
0d863452 RH |
1305 | =item continue |
1306 | ||
c17cdb72 NC |
1307 | =for Pod::Functions optional trailing block in a while or foreach |
1308 | ||
2263ed23 LM |
1309 | When followed by a BLOCK, L<C<continue>|/continue BLOCK> is actually a |
1310 | flow control statement rather than a function. If there is a | |
1311 | L<C<continue>|/continue BLOCK> BLOCK attached to a BLOCK (typically in a | |
1312 | C<while> or C<foreach>), it is always executed just before the | |
1313 | conditional is about to be evaluated again, just like the third part of | |
1314 | a C<for> loop in C. Thus it can be used to increment a loop variable, | |
1315 | even when the loop has been continued via the L<C<next>|/next LABEL> | |
1316 | statement (which is similar to the C L<C<continue>|/continue BLOCK> | |
cb1a09d0 AD |
1317 | statement). |
1318 | ||
2263ed23 LM |
1319 | L<C<last>|/last LABEL>, L<C<next>|/next LABEL>, or |
1320 | L<C<redo>|/redo LABEL> may appear within a | |
1321 | L<C<continue>|/continue BLOCK> block; L<C<last>|/last LABEL> and | |
1322 | L<C<redo>|/redo LABEL> behave as if they had been executed within the | |
1323 | main block. So will L<C<next>|/next LABEL>, but since it will execute a | |
1324 | L<C<continue>|/continue BLOCK> block, it may be more entertaining. | |
1d2dff63 GS |
1325 | |
1326 | while (EXPR) { | |
a9a5a0dc VP |
1327 | ### redo always comes here |
1328 | do_something; | |
1d2dff63 | 1329 | } continue { |
a9a5a0dc VP |
1330 | ### next always comes here |
1331 | do_something_else; | |
1332 | # then back the top to re-check EXPR | |
1d2dff63 GS |
1333 | } |
1334 | ### last always comes here | |
1335 | ||
2263ed23 LM |
1336 | Omitting the L<C<continue>|/continue BLOCK> section is equivalent to |
1337 | using an empty one, logically enough, so L<C<next>|/next LABEL> goes | |
1338 | directly back to check the condition at the top of the loop. | |
1d2dff63 | 1339 | |
2263ed23 LM |
1340 | When there is no BLOCK, L<C<continue>|/continue BLOCK> is a function |
1341 | that falls through the current C<when> or C<default> block instead of | |
1342 | iterating a dynamically enclosing C<foreach> or exiting a lexically | |
1343 | enclosing C<given>. In Perl 5.14 and earlier, this form of | |
1344 | L<C<continue>|/continue BLOCK> was only available when the | |
1345 | L<C<"switch"> feature|feature/The 'switch' feature> was enabled. See | |
1346 | L<feature> and L<perlsyn/"Switch Statements"> for more information. | |
0d863452 | 1347 | |
a0d0e21e | 1348 | =item cos EXPR |
d74e8afc | 1349 | X<cos> X<cosine> X<acos> X<arccosine> |
a0d0e21e | 1350 | |
d6217f1e GS |
1351 | =item cos |
1352 | ||
c17cdb72 NC |
1353 | =for Pod::Functions cosine function |
1354 | ||
5a964f20 | 1355 | Returns the cosine of EXPR (expressed in radians). If EXPR is omitted, |
2263ed23 | 1356 | takes the cosine of L<C<$_>|perlvar/$_>. |
a0d0e21e | 1357 | |
2263ed23 LM |
1358 | For the inverse cosine operation, you may use the |
1359 | L<C<Math::Trig::acos>|Math::Trig> function, or use this relation: | |
28757baa | 1360 | |
1361 | sub acos { atan2( sqrt(1 - $_[0] * $_[0]), $_[0] ) } | |
1362 | ||
a0d0e21e | 1363 | =item crypt PLAINTEXT,SALT |
d74e8afc | 1364 | X<crypt> X<digest> X<hash> X<salt> X<plaintext> X<password> |
f723aae1 | 1365 | X<decrypt> X<cryptography> X<passwd> X<encrypt> |
a0d0e21e | 1366 | |
c17cdb72 NC |
1367 | =for Pod::Functions one-way passwd-style encryption |
1368 | ||
2263ed23 | 1369 | Creates a digest string exactly like the L<crypt(3)> function in the C |
ef2e6798 | 1370 | library (assuming that you actually have a version there that has not |
bb23f8d1 | 1371 | been extirpated as a potential munition). |
ef2e6798 | 1372 | |
2263ed23 LM |
1373 | L<C<crypt>|/crypt PLAINTEXT,SALT> is a one-way hash function. The |
1374 | PLAINTEXT and SALT are turned | |
ef2e6798 MS |
1375 | into a short string, called a digest, which is returned. The same |
1376 | PLAINTEXT and SALT will always return the same string, but there is no | |
1377 | (known) way to get the original PLAINTEXT from the hash. Small | |
1378 | changes in the PLAINTEXT or SALT will result in large changes in the | |
1379 | digest. | |
1380 | ||
1381 | There is no decrypt function. This function isn't all that useful for | |
1382 | cryptography (for that, look for F<Crypt> modules on your nearby CPAN | |
1383 | mirror) and the name "crypt" is a bit of a misnomer. Instead it is | |
1384 | primarily used to check if two pieces of text are the same without | |
1385 | having to transmit or store the text itself. An example is checking | |
1386 | if a correct password is given. The digest of the password is stored, | |
cf264981 | 1387 | not the password itself. The user types in a password that is |
2263ed23 LM |
1388 | L<C<crypt>|/crypt PLAINTEXT,SALT>'d with the same salt as the stored |
1389 | digest. If the two digests match, the password is correct. | |
ef2e6798 MS |
1390 | |
1391 | When verifying an existing digest string you should use the digest as | |
1392 | the salt (like C<crypt($plain, $digest) eq $digest>). The SALT used | |
cf264981 | 1393 | to create the digest is visible as part of the digest. This ensures |
2263ed23 LM |
1394 | L<C<crypt>|/crypt PLAINTEXT,SALT> will hash the new string with the same |
1395 | salt as the digest. This allows your code to work with the standard | |
1396 | L<C<crypt>|/crypt PLAINTEXT,SALT> and with more exotic implementations. | |
1397 | In other words, assume nothing about the returned string itself nor | |
1398 | about how many bytes of SALT may matter. | |
85c16d83 JH |
1399 | |
1400 | Traditionally the result is a string of 13 bytes: two first bytes of | |
1401 | the salt, followed by 11 bytes from the set C<[./0-9A-Za-z]>, and only | |
391b733c | 1402 | the first eight bytes of PLAINTEXT mattered. But alternative |
ef2e6798 | 1403 | hashing schemes (like MD5), higher level security schemes (like C2), |
e1020413 | 1404 | and implementations on non-Unix platforms may produce different |
ef2e6798 | 1405 | strings. |
85c16d83 JH |
1406 | |
1407 | When choosing a new salt create a random two character string whose | |
1408 | characters come from the set C<[./0-9A-Za-z]> (like C<join '', ('.', | |
d3989d75 CW |
1409 | '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64]>). This set of |
1410 | characters is just a recommendation; the characters allowed in | |
1411 | the salt depend solely on your system's crypt library, and Perl can't | |
2263ed23 | 1412 | restrict what salts L<C<crypt>|/crypt PLAINTEXT,SALT> accepts. |
e71965be | 1413 | |
a0d0e21e | 1414 | Here's an example that makes sure that whoever runs this program knows |
cf264981 | 1415 | their password: |
a0d0e21e | 1416 | |
2263ed23 | 1417 | my $pwd = (getpwuid($<))[1]; |
a0d0e21e LW |
1418 | |
1419 | system "stty -echo"; | |
1420 | print "Password: "; | |
2263ed23 | 1421 | chomp(my $word = <STDIN>); |
a0d0e21e LW |
1422 | print "\n"; |
1423 | system "stty echo"; | |
1424 | ||
e71965be | 1425 | if (crypt($word, $pwd) ne $pwd) { |
a9a5a0dc | 1426 | die "Sorry...\n"; |
a0d0e21e | 1427 | } else { |
a9a5a0dc | 1428 | print "ok\n"; |
54310121 | 1429 | } |
a0d0e21e | 1430 | |
9f8f0c9d | 1431 | Of course, typing in your own password to whoever asks you |
748a9306 | 1432 | for it is unwise. |
a0d0e21e | 1433 | |
2263ed23 LM |
1434 | The L<C<crypt>|/crypt PLAINTEXT,SALT> function is unsuitable for hashing |
1435 | large quantities of data, not least of all because you can't get the | |
1436 | information back. Look at the L<Digest> module for more robust | |
1437 | algorithms. | |
19799a22 | 1438 | |
2263ed23 LM |
1439 | If using L<C<crypt>|/crypt PLAINTEXT,SALT> on a Unicode string (which |
1440 | I<potentially> has characters with codepoints above 255), Perl tries to | |
1441 | make sense of the situation by trying to downgrade (a copy of) the | |
1442 | string back to an eight-bit byte string before calling | |
1443 | L<C<crypt>|/crypt PLAINTEXT,SALT> (on that copy). If that works, good. | |
1444 | If not, L<C<crypt>|/crypt PLAINTEXT,SALT> dies with | |
1445 | L<C<Wide character in crypt>|perldiag/Wide character in %s>. | |
85c16d83 | 1446 | |
ea9eb35a BJ |
1447 | Portability issues: L<perlport/crypt>. |
1448 | ||
aa689395 | 1449 | =item dbmclose HASH |
d74e8afc | 1450 | X<dbmclose> |
a0d0e21e | 1451 | |
c17cdb72 NC |
1452 | =for Pod::Functions breaks binding on a tied dbm file |
1453 | ||
2263ed23 LM |
1454 | [This function has been largely superseded by the |
1455 | L<C<untie>|/untie VARIABLE> function.] | |
a0d0e21e | 1456 | |
aa689395 | 1457 | Breaks the binding between a DBM file and a hash. |
a0d0e21e | 1458 | |
ea9eb35a BJ |
1459 | Portability issues: L<perlport/dbmclose>. |
1460 | ||
19799a22 | 1461 | =item dbmopen HASH,DBNAME,MASK |
d74e8afc | 1462 | X<dbmopen> X<dbm> X<ndbm> X<sdbm> X<gdbm> |
a0d0e21e | 1463 | |
c17cdb72 NC |
1464 | =for Pod::Functions create binding on a tied dbm file |
1465 | ||
01aa884e | 1466 | [This function has been largely superseded by the |
2263ed23 LM |
1467 | L<C<tie>|/tie VARIABLE,CLASSNAME,LIST> function.] |
1468 | ||
1469 | This binds a L<dbm(3)>, L<ndbm(3)>, L<sdbm(3)>, L<gdbm(3)>, or Berkeley | |
1470 | DB file to a hash. HASH is the name of the hash. (Unlike normal | |
1471 | L<C<open>|/open FILEHANDLE,EXPR>, the first argument is I<not> a | |
1472 | filehandle, even though it looks like one). DBNAME is the name of the | |
1473 | database (without the F<.dir> or F<.pag> extension if any). If the | |
1474 | database does not exist, it is created with protection specified by MASK | |
1475 | (as modified by the L<C<umask>|/umask EXPR>). To prevent creation of | |
1476 | the database if it doesn't exist, you may specify a MODE of 0, and the | |
1477 | function will return a false value if it can't find an existing | |
1478 | database. If your system supports only the older DBM functions, you may | |
1479 | make only one L<C<dbmopen>|/dbmopen HASH,DBNAME,MASK> call in your | |
aa689395 | 1480 | program. In older versions of Perl, if your system had neither DBM nor |
2263ed23 LM |
1481 | ndbm, calling L<C<dbmopen>|/dbmopen HASH,DBNAME,MASK> produced a fatal |
1482 | error; it now falls back to L<sdbm(3)>. | |
aa689395 | 1483 | |
1484 | If you don't have write access to the DBM file, you can only read hash | |
1485 | variables, not set them. If you want to test whether you can write, | |
2263ed23 LM |
1486 | either use file tests or try setting a dummy hash entry inside an |
1487 | L<C<eval>|/eval EXPR> to trap the error. | |
a0d0e21e | 1488 | |
2263ed23 LM |
1489 | Note that functions such as L<C<keys>|/keys HASH> and |
1490 | L<C<values>|/values HASH> may return huge lists when used on large DBM | |
1491 | files. You may prefer to use the L<C<each>|/each HASH> function to | |
1492 | iterate over large DBM files. Example: | |
a0d0e21e LW |
1493 | |
1494 | # print out history file offsets | |
1495 | dbmopen(%HIST,'/usr/lib/news/history',0666); | |
1496 | while (($key,$val) = each %HIST) { | |
a9a5a0dc | 1497 | print $key, ' = ', unpack('L',$val), "\n"; |
a0d0e21e LW |
1498 | } |
1499 | dbmclose(%HIST); | |
1500 | ||
cb1a09d0 | 1501 | See also L<AnyDBM_File> for a more general description of the pros and |
184e9718 | 1502 | cons of the various dbm approaches, as well as L<DB_File> for a particularly |
cb1a09d0 | 1503 | rich implementation. |
4633a7c4 | 1504 | |
2b5ab1e7 | 1505 | You can control which DBM library you use by loading that library |
2263ed23 | 1506 | before you call L<C<dbmopen>|/dbmopen HASH,DBNAME,MASK>: |
2b5ab1e7 TC |
1507 | |
1508 | use DB_File; | |
1509 | dbmopen(%NS_Hist, "$ENV{HOME}/.netscape/history.db") | |
a9a5a0dc | 1510 | or die "Can't open netscape history file: $!"; |
2b5ab1e7 | 1511 | |
ea9eb35a BJ |
1512 | Portability issues: L<perlport/dbmopen>. |
1513 | ||
a0d0e21e | 1514 | =item defined EXPR |
d74e8afc | 1515 | X<defined> X<undef> X<undefined> |
a0d0e21e | 1516 | |
54310121 | 1517 | =item defined |
bbce6d69 | 1518 | |
c17cdb72 NC |
1519 | =for Pod::Functions test whether a value, variable, or function is defined |
1520 | ||
2263ed23 LM |
1521 | Returns a Boolean value telling whether EXPR has a value other than the |
1522 | undefined value L<C<undef>|/undef EXPR>. If EXPR is not present, | |
1523 | L<C<$_>|perlvar/$_> is checked. | |
1524 | ||
1525 | Many operations return L<C<undef>|/undef EXPR> to indicate failure, end | |
1526 | of file, system error, uninitialized variable, and other exceptional | |
1527 | conditions. This function allows you to distinguish | |
1528 | L<C<undef>|/undef EXPR> from other values. (A simple Boolean test will | |
1529 | not distinguish among L<C<undef>|/undef EXPR>, zero, the empty string, | |
1530 | and C<"0">, which are all equally false.) Note that since | |
1531 | L<C<undef>|/undef EXPR> is a valid scalar, its presence doesn't | |
1532 | I<necessarily> indicate an exceptional condition: L<C<pop>|/pop ARRAY> | |
1533 | returns L<C<undef>|/undef EXPR> when its argument is an empty array, | |
1534 | I<or> when the element to return happens to be L<C<undef>|/undef EXPR>. | |
1535 | ||
1536 | You may also use C<defined(&func)> to check whether subroutine C<func> | |
f10b0346 | 1537 | has ever been defined. The return value is unaffected by any forward |
2263ed23 | 1538 | declarations of C<func>. A subroutine that is not defined |
847c7ebe | 1539 | may still be callable: its package may have an C<AUTOLOAD> method that |
3b10bc60 | 1540 | makes it spring into existence the first time that it is called; see |
847c7ebe | 1541 | L<perlsub>. |
f10b0346 | 1542 | |
2263ed23 | 1543 | Use of L<C<defined>|/defined EXPR> on aggregates (hashes and arrays) is |
8556cefc A |
1544 | no longer supported. It used to report whether memory for that |
1545 | aggregate had ever been allocated. You should instead use a simple | |
1546 | test for size: | |
f10b0346 GS |
1547 | |
1548 | if (@an_array) { print "has array elements\n" } | |
1549 | if (%a_hash) { print "has hash members\n" } | |
2f9daede TP |
1550 | |
1551 | When used on a hash element, it tells you whether the value is defined, | |
2263ed23 LM |
1552 | not whether the key exists in the hash. Use L<C<exists>|/exists EXPR> |
1553 | for the latter purpose. | |
a0d0e21e LW |
1554 | |
1555 | Examples: | |
1556 | ||
8f1da26d | 1557 | print if defined $switch{D}; |
a0d0e21e LW |
1558 | print "$val\n" while defined($val = pop(@ary)); |
1559 | die "Can't readlink $sym: $!" | |
a9a5a0dc | 1560 | unless defined($value = readlink $sym); |
2263ed23 | 1561 | sub foo { defined &$bar ? $bar->(@_) : die "No bar"; } |
2f9daede | 1562 | $debugging = 0 unless defined $debugging; |
a0d0e21e | 1563 | |
2263ed23 LM |
1564 | Note: Many folks tend to overuse L<C<defined>|/defined EXPR> and are |
1565 | then surprised to discover that the number C<0> and C<""> (the | |
1566 | zero-length string) are, in fact, defined values. For example, if you | |
1567 | say | |
a5f75d66 AD |
1568 | |
1569 | "ab" =~ /a(.*)b/; | |
1570 | ||
80d38338 | 1571 | The pattern match succeeds and C<$1> is defined, although it |
cf264981 | 1572 | matched "nothing". It didn't really fail to match anything. Rather, it |
2b5ab1e7 | 1573 | matched something that happened to be zero characters long. This is all |
a5f75d66 | 1574 | very above-board and honest. When a function returns an undefined value, |
2f9daede | 1575 | it's an admission that it couldn't give you an honest answer. So you |
2263ed23 LM |
1576 | should use L<C<defined>|/defined EXPR> only when questioning the |
1577 | integrity of what you're trying to do. At other times, a simple | |
1578 | comparison to C<0> or C<""> is what you want. | |
2f9daede | 1579 | |
2263ed23 LM |
1580 | See also L<C<undef>|/undef EXPR>, L<C<exists>|/exists EXPR>, |
1581 | L<C<ref>|/ref EXPR>. | |
2f9daede | 1582 | |
a0d0e21e | 1583 | =item delete EXPR |
d74e8afc | 1584 | X<delete> |
a0d0e21e | 1585 | |
c17cdb72 NC |
1586 | =for Pod::Functions deletes a value from a hash |
1587 | ||
2263ed23 LM |
1588 | Given an expression that specifies an element or slice of a hash, |
1589 | L<C<delete>|/delete EXPR> deletes the specified elements from that hash | |
1590 | so that L<C<exists>|/exists EXPR> on that element no longer returns | |
1591 | true. Setting a hash element to the undefined value does not remove its | |
1592 | key, but deleting it does; see L<C<exists>|/exists EXPR>. | |
80d38338 | 1593 | |
8f1da26d | 1594 | In list context, returns the value or values deleted, or the last such |
80d38338 | 1595 | element in scalar context. The return list's length always matches that of |
d0a76353 RS |
1596 | the argument list: deleting non-existent elements returns the undefined value |
1597 | in their corresponding positions. | |
80d38338 | 1598 | |
2263ed23 LM |
1599 | L<C<delete>|/delete EXPR> may also be used on arrays and array slices, |
1600 | but its behavior is less straightforward. Although | |
1601 | L<C<exists>|/exists EXPR> will return false for deleted entries, | |
1602 | deleting array elements never changes indices of existing values; use | |
1603 | L<C<shift>|/shift ARRAY> or L<C<splice>|/splice | |
1604 | ARRAY,OFFSET,LENGTH,LIST> for that. However, if any deleted elements | |
1605 | fall at the end of an array, the array's size shrinks to the position of | |
1606 | the highest element that still tests true for L<C<exists>|/exists EXPR>, | |
1607 | or to 0 if none do. In other words, an array won't have trailing | |
1608 | nonexistent elements after a delete. | |
1609 | ||
1610 | B<WARNING:> Calling L<C<delete>|/delete EXPR> on array values is | |
1611 | strongly discouraged. The | |
2fbadc08 RS |
1612 | notion of deleting or checking the existence of Perl array elements is not |
1613 | conceptually coherent, and can lead to surprising behavior. | |
80d38338 | 1614 | |
2263ed23 LM |
1615 | Deleting from L<C<%ENV>|perlvar/%ENV> modifies the environment. |
1616 | Deleting from a hash tied to a DBM file deletes the entry from the DBM | |
1617 | file. Deleting from a L<C<tied>|/tied VARIABLE> hash or array may not | |
1618 | necessarily return anything; it depends on the implementation of the | |
1619 | L<C<tied>|/tied VARIABLE> package's DELETE method, which may do whatever | |
1620 | it pleases. | |
a0d0e21e | 1621 | |
80d38338 TC |
1622 | The C<delete local EXPR> construct localizes the deletion to the current |
1623 | block at run time. Until the block exits, elements locally deleted | |
1624 | temporarily no longer exist. See L<perlsub/"Localized deletion of elements | |
1625 | of composite types">. | |
eba0920a | 1626 | |
2263ed23 LM |
1627 | my %hash = (foo => 11, bar => 22, baz => 33); |
1628 | my $scalar = delete $hash{foo}; # $scalar is 11 | |
f7051f2c | 1629 | $scalar = delete @hash{qw(foo bar)}; # $scalar is 22 |
2263ed23 | 1630 | my @array = delete @hash{qw(foo baz)}; # @array is (undef,33) |
eba0920a | 1631 | |
01020589 | 1632 | The following (inefficiently) deletes all the values of %HASH and @ARRAY: |
a0d0e21e | 1633 | |
2263ed23 | 1634 | foreach my $key (keys %HASH) { |
a9a5a0dc | 1635 | delete $HASH{$key}; |
a0d0e21e LW |
1636 | } |
1637 | ||
2263ed23 | 1638 | foreach my $index (0 .. $#ARRAY) { |
a9a5a0dc | 1639 | delete $ARRAY[$index]; |
01020589 GS |
1640 | } |
1641 | ||
1642 | And so do these: | |
5f05dabc | 1643 | |
01020589 GS |
1644 | delete @HASH{keys %HASH}; |
1645 | ||
9740c838 | 1646 | delete @ARRAY[0 .. $#ARRAY]; |
5f05dabc | 1647 | |
80d38338 | 1648 | But both are slower than assigning the empty list |
2263ed23 | 1649 | or undefining %HASH or @ARRAY, which is the customary |
80d38338 | 1650 | way to empty out an aggregate: |
01020589 | 1651 | |
5ed4f2ec | 1652 | %HASH = (); # completely empty %HASH |
1653 | undef %HASH; # forget %HASH ever existed | |
2b5ab1e7 | 1654 | |
5ed4f2ec | 1655 | @ARRAY = (); # completely empty @ARRAY |
1656 | undef @ARRAY; # forget @ARRAY ever existed | |
2b5ab1e7 | 1657 | |
80d38338 TC |
1658 | The EXPR can be arbitrarily complicated provided its |
1659 | final operation is an element or slice of an aggregate: | |
a0d0e21e LW |
1660 | |
1661 | delete $ref->[$x][$y]{$key}; | |
5f05dabc | 1662 | delete @{$ref->[$x][$y]}{$key1, $key2, @morekeys}; |
a0d0e21e | 1663 | |
01020589 GS |
1664 | delete $ref->[$x][$y][$index]; |
1665 | delete @{$ref->[$x][$y]}[$index1, $index2, @moreindices]; | |
1666 | ||
a0d0e21e | 1667 | =item die LIST |
d74e8afc | 1668 | X<die> X<throw> X<exception> X<raise> X<$@> X<abort> |
a0d0e21e | 1669 | |
c17cdb72 NC |
1670 | =for Pod::Functions raise an exception or bail out |
1671 | ||
2263ed23 LM |
1672 | L<C<die>|/die LIST> raises an exception. Inside an |
1673 | L<C<eval>|/eval EXPR> the error message is stuffed into | |
1674 | L<C<$@>|perlvar/$@> and the L<C<eval>|/eval EXPR> is terminated with the | |
1675 | undefined value. If the exception is outside of all enclosing | |
1676 | L<C<eval>|/eval EXPR>s, then the uncaught exception prints LIST to | |
1677 | C<STDERR> and exits with a non-zero value. If you need to exit the | |
1678 | process with a specific exit code, see L<C<exit>|/exit EXPR>. | |
a0d0e21e LW |
1679 | |
1680 | Equivalent examples: | |
1681 | ||
1682 | die "Can't cd to spool: $!\n" unless chdir '/usr/spool/news'; | |
54310121 | 1683 | chdir '/usr/spool/news' or die "Can't cd to spool: $!\n" |
a0d0e21e | 1684 | |
ccac6780 | 1685 | If the last element of LIST does not end in a newline, the current |
df37ec69 WW |
1686 | script line number and input line number (if any) are also printed, |
1687 | and a newline is supplied. Note that the "input line number" (also | |
1688 | known as "chunk") is subject to whatever notion of "line" happens to | |
1689 | be currently in effect, and is also available as the special variable | |
2263ed23 | 1690 | L<C<$.>|perlvar/$.>. See L<perlvar/"$/"> and L<perlvar/"$.">. |
df37ec69 WW |
1691 | |
1692 | Hint: sometimes appending C<", stopped"> to your message will cause it | |
1693 | to make better sense when the string C<"at foo line 123"> is appended. | |
1694 | Suppose you are running script "canasta". | |
a0d0e21e LW |
1695 | |
1696 | die "/etc/games is no good"; | |
1697 | die "/etc/games is no good, stopped"; | |
1698 | ||
1699 | produce, respectively | |
1700 | ||
1701 | /etc/games is no good at canasta line 123. | |
1702 | /etc/games is no good, stopped at canasta line 123. | |
1703 | ||
2263ed23 | 1704 | If the output is empty and L<C<$@>|perlvar/$@> already contains a value |
177f0db9 JK |
1705 | (typically from a previous L<C<eval>|/eval EXPR>) that value is reused after |
1706 | appending C<"\t...propagated">. This is useful for propagating exceptions: | |
fb73857a | 1707 | |
1708 | eval { ... }; | |
1709 | die unless $@ =~ /Expected exception/; | |
1710 | ||
2263ed23 LM |
1711 | If the output is empty and L<C<$@>|perlvar/$@> contains an object |
1712 | reference that has a C<PROPAGATE> method, that method will be called | |
1713 | with additional file and line number parameters. The return value | |
1714 | replaces the value in L<C<$@>|perlvar/$@>; i.e., as if | |
1715 | C<< $@ = eval { $@->PROPAGATE(__FILE__, __LINE__) }; >> were called. | |
ad216e65 | 1716 | |
2263ed23 | 1717 | If L<C<$@>|perlvar/$@> is empty, then the string C<"Died"> is used. |
fb73857a | 1718 | |
4c050ad5 | 1719 | If an uncaught exception results in interpreter exit, the exit code is |
2263ed23 LM |
1720 | determined from the values of L<C<$!>|perlvar/$!> and |
1721 | L<C<$?>|perlvar/$?> with this pseudocode: | |
4c050ad5 NC |
1722 | |
1723 | exit $! if $!; # errno | |
1724 | exit $? >> 8 if $? >> 8; # child exit status | |
1725 | exit 255; # last resort | |
1726 | ||
2263ed23 LM |
1727 | As with L<C<exit>|/exit EXPR>, L<C<$?>|perlvar/$?> is set prior to |
1728 | unwinding the call stack; any C<DESTROY> or C<END> handlers can then | |
1729 | alter this value, and thus Perl's exit code. | |
88aeef83 | 1730 | |
4c050ad5 | 1731 | The intent is to squeeze as much possible information about the likely cause |
2263ed23 LM |
1732 | into the limited space of the system exit code. However, as |
1733 | L<C<$!>|perlvar/$!> is the value of C's C<errno>, which can be set by | |
1734 | any system call, this means that the value of the exit code used by | |
1735 | L<C<die>|/die LIST> can be non-predictable, so should not be relied | |
4c050ad5 NC |
1736 | upon, other than to be non-zero. |
1737 | ||
2263ed23 LM |
1738 | You can also call L<C<die>|/die LIST> with a reference argument, and if |
1739 | this is trapped within an L<C<eval>|/eval EXPR>, L<C<$@>|perlvar/$@> | |
1740 | contains that reference. This permits more elaborate exception handling | |
1741 | using objects that maintain arbitrary state about the exception. Such a | |
1742 | scheme is sometimes preferable to matching particular string values of | |
1743 | L<C<$@>|perlvar/$@> with regular expressions. Because | |
1744 | L<C<$@>|perlvar/$@> is a global variable and L<C<eval>|/eval EXPR> may | |
1745 | be used within object implementations, be careful that analyzing the | |
1746 | error object doesn't replace the reference in the global variable. It's | |
1747 | easiest to make a local copy of the reference before any manipulations. | |
1748 | Here's an example: | |
52531d10 | 1749 | |
80d38338 | 1750 | use Scalar::Util "blessed"; |
da279afe | 1751 | |
52531d10 | 1752 | eval { ... ; die Some::Module::Exception->new( FOO => "bar" ) }; |
746d7dd7 | 1753 | if (my $ev_err = $@) { |
f7051f2c FC |
1754 | if (blessed($ev_err) |
1755 | && $ev_err->isa("Some::Module::Exception")) { | |
52531d10 GS |
1756 | # handle Some::Module::Exception |
1757 | } | |
1758 | else { | |
1759 | # handle all other possible exceptions | |
1760 | } | |
1761 | } | |
1762 | ||
3b10bc60 | 1763 | Because Perl stringifies uncaught exception messages before display, |
80d38338 | 1764 | you'll probably want to overload stringification operations on |
52531d10 GS |
1765 | exception objects. See L<overload> for details about that. |
1766 | ||
2263ed23 LM |
1767 | You can arrange for a callback to be run just before the |
1768 | L<C<die>|/die LIST> does its deed, by setting the | |
1769 | L<C<$SIG{__DIE__}>|perlvar/%SIG> hook. The associated handler is called | |
1770 | with the error text and can change the error message, if it sees fit, by | |
1771 | calling L<C<die>|/die LIST> again. See L<perlvar/%SIG> for details on | |
1772 | setting L<C<%SIG>|perlvar/%SIG> entries, and L<C<eval>|/eval EXPR> for some | |
1773 | examples. Although this feature was to be run only right before your | |
1774 | program was to exit, this is not currently so: the | |
1775 | L<C<$SIG{__DIE__}>|perlvar/%SIG> hook is currently called even inside | |
1776 | L<C<eval>|/eval EXPR>ed blocks/strings! If one wants the hook to do | |
19799a22 | 1777 | nothing in such situations, put |
fb73857a | 1778 | |
5ed4f2ec | 1779 | die @_ if $^S; |
fb73857a | 1780 | |
19799a22 GS |
1781 | as the first line of the handler (see L<perlvar/$^S>). Because |
1782 | this promotes strange action at a distance, this counterintuitive | |
b76cc8ba | 1783 | behavior may be fixed in a future release. |
774d564b | 1784 | |
2263ed23 LM |
1785 | See also L<C<exit>|/exit EXPR>, L<C<warn>|/warn LIST>, and the L<Carp> |
1786 | module. | |
4c050ad5 | 1787 | |
a0d0e21e | 1788 | =item do BLOCK |
d74e8afc | 1789 | X<do> X<block> |
a0d0e21e | 1790 | |
c17cdb72 NC |
1791 | =for Pod::Functions turn a BLOCK into a TERM |
1792 | ||
a0d0e21e | 1793 | Not really a function. Returns the value of the last command in the |
6b275a1f RGS |
1794 | sequence of commands indicated by BLOCK. When modified by the C<while> or |
1795 | C<until> loop modifier, executes the BLOCK once before testing the loop | |
391b733c | 1796 | condition. (On other statements the loop modifiers test the conditional |
6b275a1f | 1797 | first.) |
a0d0e21e | 1798 | |
4968c1e4 | 1799 | C<do BLOCK> does I<not> count as a loop, so the loop control statements |
2263ed23 LM |
1800 | L<C<next>|/next LABEL>, L<C<last>|/last LABEL>, or |
1801 | L<C<redo>|/redo LABEL> cannot be used to leave or restart the block. | |
2b5ab1e7 | 1802 | See L<perlsyn> for alternative strategies. |
4968c1e4 | 1803 | |
a0d0e21e | 1804 | =item do EXPR |
d74e8afc | 1805 | X<do> |
a0d0e21e LW |
1806 | |
1807 | Uses the value of EXPR as a filename and executes the contents of the | |
ea63ef19 | 1808 | file as a Perl script. |
a0d0e21e | 1809 | |
a03e9f8a | 1810 | do './stat.pl'; |
a0d0e21e | 1811 | |
c319391a | 1812 | is largely like |
a0d0e21e | 1813 | |
986b19de | 1814 | eval `cat stat.pl`; |
a0d0e21e | 1815 | |
a03e9f8a DH |
1816 | except that it's more concise, runs no external processes, and keeps |
1817 | track of the current filename for error messages. It also differs in that | |
1818 | code evaluated with C<do FILE> cannot see lexicals in the enclosing | |
1819 | scope; C<eval STRING> does. It's the same, however, in that it does | |
1820 | reparse the file every time you call it, so you probably don't want | |
1821 | to do this inside a loop. | |
1822 | ||
1823 | Using C<do> with no path, like | |
1824 | ||
1825 | do 'stat.pl'; | |
1826 | ||
1827 | will search the L<C<@INC>|perlvar/@INC> directories, and update | |
1828 | L<C<%INC>|perlvar/%INC> if the file is found. See L<perlvar/@INC> | |
1829 | and L<perlvar/%INC> for these variables. In particular, note that | |
1830 | whilst historically L<C<@INC>|perlvar/@INC> contained '.' (the | |
1831 | current directory) making these two cases equivalent, that is no | |
1832 | longer necessarily the case, as there is now a compile-time option | |
1833 | to disable this behaviour. | |
2263ed23 LM |
1834 | |
1835 | If L<C<do>|/do EXPR> can read the file but cannot compile it, it | |
1836 | returns L<C<undef>|/undef EXPR> and sets an error message in | |
1837 | L<C<$@>|perlvar/$@>. If L<C<do>|/do EXPR> cannot read the file, it | |
1838 | returns undef and sets L<C<$!>|perlvar/$!> to the error. Always check | |
1839 | L<C<$@>|perlvar/$@> first, as compilation could fail in a way that also | |
1840 | sets L<C<$!>|perlvar/$!>. If the file is successfully compiled, | |
1841 | L<C<do>|/do EXPR> returns the value of the last expression evaluated. | |
8e30cc93 | 1842 | |
80d38338 | 1843 | Inclusion of library modules is better done with the |
2263ed23 LM |
1844 | L<C<use>|/use Module VERSION LIST> and L<C<require>|/require VERSION> |
1845 | operators, which also do automatic error checking and raise an exception | |
1846 | if there's a problem. | |
a0d0e21e | 1847 | |
2263ed23 LM |
1848 | You might like to use L<C<do>|/do EXPR> to read in a program |
1849 | configuration file. Manual error checking can be done this way: | |
5a964f20 | 1850 | |
b76cc8ba | 1851 | # read in config files: system first, then user |
f86cebdf | 1852 | for $file ("/share/prog/defaults.rc", |
b76cc8ba | 1853 | "$ENV{HOME}/.someprogrc") |
a9a5a0dc VP |
1854 | { |
1855 | unless ($return = do $file) { | |
1856 | warn "couldn't parse $file: $@" if $@; | |
1857 | warn "couldn't do $file: $!" unless defined $return; | |
1858 | warn "couldn't run $file" unless $return; | |
1859 | } | |
5a964f20 TC |
1860 | } |
1861 | ||
a0d0e21e | 1862 | =item dump LABEL |
d74e8afc | 1863 | X<dump> X<core> X<undump> |
a0d0e21e | 1864 | |
8a7e748e FC |
1865 | =item dump EXPR |
1866 | ||
1614b0e3 JD |
1867 | =item dump |
1868 | ||
c17cdb72 NC |
1869 | =for Pod::Functions create an immediate core dump |
1870 | ||
19799a22 GS |
1871 | This function causes an immediate core dump. See also the B<-u> |
1872 | command-line switch in L<perlrun>, which does the same thing. | |
1873 | Primarily this is so that you can use the B<undump> program (not | |
1874 | supplied) to turn your core dump into an executable binary after | |
1875 | having initialized all your variables at the beginning of the | |
1876 | program. When the new binary is executed it will begin by executing | |
2263ed23 LM |
1877 | a C<goto LABEL> (with all the restrictions that L<C<goto>|/goto LABEL> |
1878 | suffers). | |
19799a22 | 1879 | Think of it as a goto with an intervening core dump and reincarnation. |
8a7e748e FC |
1880 | If C<LABEL> is omitted, restarts the program from the top. The |
1881 | C<dump EXPR> form, available starting in Perl 5.18.0, allows a name to be | |
1882 | computed at run time, being otherwise identical to C<dump LABEL>. | |
19799a22 GS |
1883 | |
1884 | B<WARNING>: Any files opened at the time of the dump will I<not> | |
1885 | be open any more when the program is reincarnated, with possible | |
80d38338 | 1886 | resulting confusion by Perl. |
19799a22 | 1887 | |
59f521f4 | 1888 | This function is now largely obsolete, mostly because it's very hard to |
391b733c | 1889 | convert a core file into an executable. That's why you should now invoke |
2263ed23 | 1890 | it as C<CORE::dump()> if you don't want to be warned against a possible |
ac206dc8 | 1891 | typo. |
19799a22 | 1892 | |
2ba1f20a FC |
1893 | Unlike most named operators, this has the same precedence as assignment. |
1894 | It is also exempt from the looks-like-a-function rule, so | |
1895 | C<dump ("foo")."bar"> will cause "bar" to be part of the argument to | |
2263ed23 | 1896 | L<C<dump>|/dump LABEL>. |
2ba1f20a | 1897 | |
ea9eb35a BJ |
1898 | Portability issues: L<perlport/dump>. |
1899 | ||
532eee96 | 1900 | =item each HASH |
d74e8afc | 1901 | X<each> X<hash, iterator> |
aa689395 | 1902 | |
532eee96 | 1903 | =item each ARRAY |
aeedbbed NC |
1904 | X<array, iterator> |
1905 | ||
c17cdb72 NC |
1906 | =for Pod::Functions retrieve the next key/value pair from a hash |
1907 | ||
bade7fbc TC |
1908 | When called on a hash in list context, returns a 2-element list |
1909 | consisting of the key and value for the next element of a hash. In Perl | |
1910 | 5.12 and later only, it will also return the index and value for the next | |
1911 | element of an array so that you can iterate over it; older Perls consider | |
1912 | this a syntax error. When called in scalar context, returns only the key | |
1913 | (not the value) in a hash, or the index in an array. | |
2f9daede | 1914 | |
aeedbbed | 1915 | Hash entries are returned in an apparently random order. The actual random |
7bf59113 | 1916 | order is specific to a given hash; the exact same series of operations |
7161e5c2 | 1917 | on two hashes may result in a different order for each hash. Any insertion |
7bf59113 | 1918 | into the hash may change the order, as will any deletion, with the exception |
2263ed23 LM |
1919 | that the most recent key returned by L<C<each>|/each HASH> or |
1920 | L<C<keys>|/keys HASH> may be deleted without changing the order. So | |
1921 | long as a given hash is unmodified you may rely on | |
1922 | L<C<keys>|/keys HASH>, L<C<values>|/values HASH> and | |
1923 | L<C<each>|/each HASH> to repeatedly return the same order | |
7161e5c2 FC |
1924 | as each other. See L<perlsec/"Algorithmic Complexity Attacks"> for |
1925 | details on why hash order is randomized. Aside from the guarantees | |
7bf59113 YO |
1926 | provided here the exact details of Perl's hash algorithm and the hash |
1927 | traversal order are subject to change in any release of Perl. | |
ab192400 | 1928 | |
2263ed23 LM |
1929 | After L<C<each>|/each HASH> has returned all entries from the hash or |
1930 | array, the next call to L<C<each>|/each HASH> returns the empty list in | |
1931 | list context and L<C<undef>|/undef EXPR> in scalar context; the next | |
1932 | call following I<that> one restarts iteration. Each hash or array has | |
1933 | its own internal iterator, accessed by L<C<each>|/each HASH>, | |
1934 | L<C<keys>|/keys HASH>, and L<C<values>|/values HASH>. The iterator is | |
1935 | implicitly reset when L<C<each>|/each HASH> has reached the end as just | |
1936 | described; it can be explicitly reset by calling L<C<keys>|/keys HASH> | |
1937 | or L<C<values>|/values HASH> on the hash or array. If you add or delete | |
1938 | a hash's elements while iterating over it, the effect on the iterator is | |
49daec89 | 1939 | unspecified; for example, entries may be skipped or duplicated--so don't |
d8021140 | 1940 | do that. Exception: It is always safe to delete the item most recently |
2263ed23 | 1941 | returned by L<C<each>|/each HASH>, so the following code works properly: |
74fc8b5f | 1942 | |
2263ed23 LM |
1943 | while (my ($key, $value) = each %hash) { |
1944 | print $key, "\n"; | |
1945 | delete $hash{$key}; # This is safe | |
1946 | } | |
aa689395 | 1947 | |
883f220b TC |
1948 | Tied hashes may have a different ordering behaviour to perl's hash |
1949 | implementation. | |
1950 | ||
2263ed23 | 1951 | This prints out your environment like the L<printenv(1)> program, |
3b10bc60 | 1952 | but in a different order: |
a0d0e21e | 1953 | |
2263ed23 | 1954 | while (my ($key,$value) = each %ENV) { |
a9a5a0dc | 1955 | print "$key=$value\n"; |
a0d0e21e LW |
1956 | } |
1957 | ||
2263ed23 LM |
1958 | Starting with Perl 5.14, an experimental feature allowed |
1959 | L<C<each>|/each HASH> to take a scalar expression. This experiment has | |
1960 | been deemed unsuccessful, and was removed as of Perl 5.24. | |
cba5a3b0 | 1961 | |
2263ed23 LM |
1962 | As of Perl 5.18 you can use a bare L<C<each>|/each HASH> in a C<while> |
1963 | loop, which will set L<C<$_>|perlvar/$_> on every iteration. | |
e6a0db3e | 1964 | |
2263ed23 | 1965 | while (each %ENV) { |
e6a0db3e FC |
1966 | print "$_=$ENV{$_}\n"; |
1967 | } | |
1968 | ||
bade7fbc TC |
1969 | To avoid confusing would-be users of your code who are running earlier |
1970 | versions of Perl with mysterious syntax errors, put this sort of thing at | |
1971 | the top of your file to signal that your code will work I<only> on Perls of | |
1972 | a recent vintage: | |
1973 | ||
1974 | use 5.012; # so keys/values/each work on arrays | |
e6a0db3e | 1975 | use 5.018; # so each assigns to $_ in a lone while test |
bade7fbc | 1976 | |
2263ed23 LM |
1977 | See also L<C<keys>|/keys HASH>, L<C<values>|/values HASH>, and |
1978 | L<C<sort>|/sort SUBNAME LIST>. | |
a0d0e21e LW |
1979 | |
1980 | =item eof FILEHANDLE | |
d74e8afc ITB |
1981 | X<eof> |
1982 | X<end of file> | |
1983 | X<end-of-file> | |
a0d0e21e | 1984 | |
4633a7c4 LW |
1985 | =item eof () |
1986 | ||
a0d0e21e LW |
1987 | =item eof |
1988 | ||
c17cdb72 NC |
1989 | =for Pod::Functions test a filehandle for its end |
1990 | ||
8f1da26d | 1991 | Returns 1 if the next read on FILEHANDLE will return end of file I<or> if |
a0d0e21e | 1992 | FILEHANDLE is not open. FILEHANDLE may be an expression whose value |
5a964f20 | 1993 | gives the real filehandle. (Note that this function actually |
80d38338 | 1994 | reads a character and then C<ungetc>s it, so isn't useful in an |
748a9306 | 1995 | interactive context.) Do not read from a terminal file (or call |
19799a22 | 1996 | C<eof(FILEHANDLE)> on it) after end-of-file is reached. File types such |
748a9306 LW |
1997 | as terminals may lose the end-of-file condition if you do. |
1998 | ||
2263ed23 LM |
1999 | An L<C<eof>|/eof FILEHANDLE> without an argument uses the last file |
2000 | read. Using L<C<eof()>|/eof FILEHANDLE> with empty parentheses is | |
2001 | different. It refers to the pseudo file formed from the files listed on | |
2002 | the command line and accessed via the C<< <> >> operator. Since | |
2003 | C<< <> >> isn't explicitly opened, as a normal filehandle is, an | |
2004 | L<C<eof()>|/eof FILEHANDLE> before C<< <> >> has been used will cause | |
2005 | L<C<@ARGV>|perlvar/@ARGV> to be examined to determine if input is | |
2006 | available. Similarly, an L<C<eof()>|/eof FILEHANDLE> after C<< <> >> | |
2007 | has returned end-of-file will assume you are processing another | |
2008 | L<C<@ARGV>|perlvar/@ARGV> list, and if you haven't set | |
2009 | L<C<@ARGV>|perlvar/@ARGV>, will read input from C<STDIN>; see | |
2010 | L<perlop/"I/O Operators">. | |
2011 | ||
2012 | In a C<< while (<>) >> loop, L<C<eof>|/eof FILEHANDLE> or C<eof(ARGV)> | |
2013 | can be used to detect the end of each file, whereas | |
2014 | L<C<eof()>|/eof FILEHANDLE> will detect the end of the very last file | |
2015 | only. Examples: | |
a0d0e21e | 2016 | |
748a9306 LW |
2017 | # reset line numbering on each input file |
2018 | while (<>) { | |
a9a5a0dc VP |
2019 | next if /^\s*#/; # skip comments |
2020 | print "$.\t$_"; | |
5a964f20 | 2021 | } continue { |
a9a5a0dc | 2022 | close ARGV if eof; # Not eof()! |
748a9306 LW |
2023 | } |
2024 | ||
a0d0e21e LW |
2025 | # insert dashes just before last line of last file |
2026 | while (<>) { | |
a9a5a0dc VP |
2027 | if (eof()) { # check for end of last file |
2028 | print "--------------\n"; | |
2029 | } | |
2030 | print; | |
f7051f2c | 2031 | last if eof(); # needed if we're reading from a terminal |
a0d0e21e LW |
2032 | } |
2033 | ||
2263ed23 LM |
2034 | Practical hint: you almost never need to use L<C<eof>|/eof FILEHANDLE> |
2035 | in Perl, because the input operators typically return L<C<undef>|/undef | |
2036 | EXPR> when they run out of data or encounter an error. | |
a0d0e21e LW |
2037 | |
2038 | =item eval EXPR | |
d74e8afc | 2039 | X<eval> X<try> X<catch> X<evaluate> X<parse> X<execute> |
f723aae1 | 2040 | X<error, handling> X<exception, handling> |
a0d0e21e LW |
2041 | |
2042 | =item eval BLOCK | |
2043 | ||
ce2984c3 PF |
2044 | =item eval |
2045 | ||
c17cdb72 NC |
2046 | =for Pod::Functions catch exceptions or compile and run code |
2047 | ||
9891e9b7 KW |
2048 | C<eval> in all its forms is used to execute a little Perl program, |
2049 | trapping any errors encountered so they don't crash the calling program. | |
2050 | ||
2051 | Plain C<eval> with no argument is just C<eval EXPR>, where the | |
2052 | expression is understood to be contained in L<C<$_>|perlvar/$_>. Thus | |
2053 | there are only two real C<eval> forms; the one with an EXPR is often | |
2054 | called "string eval". In a string eval, the value of the expression | |
2055 | (which is itself determined within scalar context) is first parsed, and | |
2056 | if there were no errors, executed as a block within the lexical context | |
2057 | of the current Perl program. This form is typically used to delay | |
2058 | parsing and subsequent execution of the text of EXPR until run time. | |
2059 | Note that the value is parsed every time the C<eval> executes. | |
2060 | ||
2061 | The other form is called "block eval". It is less general than string | |
2062 | eval, but the code within the BLOCK is parsed only once (at the same | |
2063 | time the code surrounding the C<eval> itself was parsed) and executed | |
c7cc6f1c | 2064 | within the context of the current Perl program. This form is typically |
9891e9b7 KW |
2065 | used to trap exceptions more efficiently than the first, while also |
2066 | providing the benefit of checking the code within BLOCK at compile time. | |
2067 | BLOCK is parsed and compiled just once. Since errors are trapped, it | |
2068 | often is used to check if a given feature is available. | |
c7cc6f1c GS |
2069 | |
2070 | In both forms, the value returned is the value of the last expression | |
9891e9b7 | 2071 | evaluated inside the mini-program; a return statement may also be used, just |
c7cc6f1c | 2072 | as with subroutines. The expression providing the return value is evaluated |
2263ed23 | 2073 | in void, scalar, or list context, depending on the context of the |
9891e9b7 | 2074 | C<eval> itself. See L<C<wantarray>|/wantarray> for more |
2263ed23 LM |
2075 | on how the evaluation context can be determined. |
2076 | ||
2077 | If there is a syntax error or runtime error, or a L<C<die>|/die LIST> | |
9891e9b7 KW |
2078 | statement is executed, C<eval> returns |
2079 | L<C<undef>|/undef EXPR> in scalar context, or an empty list in list | |
2263ed23 LM |
2080 | context, and L<C<$@>|perlvar/$@> is set to the error message. (Prior to |
2081 | 5.16, a bug caused L<C<undef>|/undef EXPR> to be returned in list | |
2082 | context for syntax errors, but not for runtime errors.) If there was no | |
2083 | error, L<C<$@>|perlvar/$@> is set to the empty string. A control flow | |
2084 | operator like L<C<last>|/last LABEL> or L<C<goto>|/goto LABEL> can | |
2085 | bypass the setting of L<C<$@>|perlvar/$@>. Beware that using | |
9891e9b7 | 2086 | C<eval> neither silences Perl from printing warnings to |
2263ed23 LM |
2087 | STDERR, nor does it stuff the text of warning messages into |
2088 | L<C<$@>|perlvar/$@>. To do either of those, you have to use the | |
2089 | L<C<$SIG{__WARN__}>|perlvar/%SIG> facility, or turn off warnings inside | |
2090 | the BLOCK or EXPR using S<C<no warnings 'all'>>. See | |
2091 | L<C<warn>|/warn LIST>, L<perlvar>, and L<warnings>. | |
2092 | ||
9891e9b7 | 2093 | Note that, because C<eval> traps otherwise-fatal errors, |
2263ed23 LM |
2094 | it is useful for determining whether a particular feature (such as |
2095 | L<C<socket>|/socket SOCKET,DOMAIN,TYPE,PROTOCOL> or | |
2096 | L<C<symlink>|/symlink OLDFILE,NEWFILE>) is implemented. It is also | |
2097 | Perl's exception-trapping mechanism, where the L<C<die>|/die LIST> | |
2098 | operator is used to raise exceptions. | |
a0d0e21e | 2099 | |
9891e9b7 KW |
2100 | Before Perl 5.14, the assignment to L<C<$@>|perlvar/$@> occurred before |
2101 | restoration | |
2102 | of localized variables, which means that for your code to run on older | |
2103 | versions, a temporary is required if you want to mask some, but not all | |
2104 | errors: | |
2105 | ||
2106 | # alter $@ on nefarious repugnancy only | |
2107 | { | |
2108 | my $e; | |
2109 | { | |
2110 | local $@; # protect existing $@ | |
2111 | eval { test_repugnancy() }; | |
2112 | # $@ =~ /nefarious/ and die $@; # Perl 5.14 and higher only | |
2113 | $@ =~ /nefarious/ and $e = $@; | |
2114 | } | |
2115 | die $e if defined $e | |
2116 | } | |
2117 | ||
2118 | There are some different considerations for each form: | |
2119 | ||
2120 | =over 4 | |
2121 | ||
2122 | =item String eval | |
2123 | ||
2124 | Since the return value of EXPR is executed as a block within the lexical | |
2125 | context of the current Perl program, any outer lexical variables are | |
2126 | visible to it, and any package variable settings or subroutine and | |
2127 | format definitions remain afterwards. | |
2128 | ||
2129 | =over 4 | |
2130 | ||
2131 | =item Under the L<C<"unicode_eval"> feature|feature/The 'unicode_eval' and 'evalbytes' features> | |
2132 | ||
2133 | If this feature is enabled (which is the default under a C<use 5.16> or | |
2134 | higher declaration), EXPR is considered to be | |
2135 | in the same encoding as the surrounding program. Thus if | |
2136 | S<L<C<use utf8>|utf8>> is in effect, the string will be treated as being | |
2137 | UTF-8 encoded. Otherwise, the string is considered to be a sequence of | |
2138 | independent bytes. Bytes that correspond to ASCII-range code points | |
2139 | will have their normal meanings for operators in the string. The | |
2140 | treatment of the other bytes depends on if the | |
2141 | L<C<'unicode_strings"> feature|feature/The 'unicode_strings' feature> is | |
2142 | in effect. | |
2143 | ||
2144 | In a plain C<eval> without an EXPR argument, being in S<C<use utf8>> or | |
2145 | not is irrelevant; the UTF-8ness of C<$_> itself determines the | |
2146 | behavior. | |
2147 | ||
2148 | Any S<C<use utf8>> or S<C<no utf8>> declarations within the string have | |
2149 | no effect, and source filters are forbidden. (C<unicode_strings>, | |
66a17892 | 2150 | however, can appear within the string.) See also the |
9891e9b7 KW |
2151 | L<C<evalbytes>|/evalbytes EXPR> operator, which works properly with |
2152 | source filters. | |
2153 | ||
2154 | Variables defined outside the C<eval> and used inside it retain their | |
2155 | original UTF-8ness. Everything inside the string follows the normal | |
2156 | rules for a Perl program with the given state of S<C<use utf8>>. | |
2157 | ||
2158 | =item Outside the C<"unicode_eval"> feature | |
2159 | ||
2160 | In this case, the behavior is problematic and is not so easily | |
2161 | described. Here are two bugs that cannot easily be fixed without | |
2162 | breaking existing programs: | |
2163 | ||
2164 | =over 4 | |
2165 | ||
2166 | =item * | |
2167 | ||
2168 | It can lose track of whether something should be encoded as UTF-8 or | |
2169 | not. | |
2170 | ||
2171 | =item * | |
2172 | ||
2173 | Source filters activated within C<eval> leak out into whichever file | |
2174 | scope is currently being compiled. To give an example with the CPAN module | |
2175 | L<Semi::Semicolons>: | |
2176 | ||
2177 | BEGIN { eval "use Semi::Semicolons; # not filtered" } | |
2178 | # filtered here! | |
2179 | ||
2180 | L<C<evalbytes>|/evalbytes EXPR> fixes that to work the way one would | |
2181 | expect: | |
2182 | ||
2183 | use feature "evalbytes"; | |
2184 | BEGIN { evalbytes "use Semi::Semicolons; # filtered" } | |
2185 | # not filtered | |
2186 | ||
2187 | =back | |
2188 | ||
2189 | =back | |
2190 | ||
2191 | Problems can arise if the string expands a scalar containing a floating | |
2192 | point number. That scalar can expand to letters, such as C<"NaN"> or | |
2193 | C<"Infinity">; or, within the scope of a L<C<use locale>|locale>, the | |
2194 | decimal point character may be something other than a dot (such as a | |
2195 | comma). None of these are likely to parse as you are likely expecting. | |
2196 | ||
2197 | You should be especially careful to remember what's being looked at | |
2198 | when: | |
2199 | ||
2200 | eval $x; # CASE 1 | |
2201 | eval "$x"; # CASE 2 | |
2202 | ||
2203 | eval '$x'; # CASE 3 | |
2204 | eval { $x }; # CASE 4 | |
2205 | ||
2206 | eval "\$$x++"; # CASE 5 | |
2207 | $$x++; # CASE 6 | |
2208 | ||
2209 | Cases 1 and 2 above behave identically: they run the code contained in | |
2210 | the variable $x. (Although case 2 has misleading double quotes making | |
2211 | the reader wonder what else might be happening (nothing is).) Cases 3 | |
2212 | and 4 likewise behave in the same way: they run the code C<'$x'>, which | |
2213 | does nothing but return the value of $x. (Case 4 is preferred for | |
2214 | purely visual reasons, but it also has the advantage of compiling at | |
2215 | compile-time instead of at run-time.) Case 5 is a place where | |
2216 | normally you I<would> like to use double quotes, except that in this | |
2217 | particular situation, you can just use symbolic references instead, as | |
2218 | in case 6. | |
2219 | ||
2220 | An C<eval ''> executed within a subroutine defined | |
2221 | in the C<DB> package doesn't see the usual | |
2222 | surrounding lexical scope, but rather the scope of the first non-DB piece | |
2223 | of code that called it. You don't normally need to worry about this unless | |
2224 | you are writing a Perl debugger. | |
2225 | ||
2226 | The final semicolon, if any, may be omitted from the value of EXPR. | |
2227 | ||
2228 | =item Block eval | |
5f1da31c | 2229 | |
a0d0e21e LW |
2230 | If the code to be executed doesn't vary, you may use the eval-BLOCK |
2231 | form to trap run-time errors without incurring the penalty of | |
2263ed23 LM |
2232 | recompiling each time. The error, if any, is still returned in |
2233 | L<C<$@>|perlvar/$@>. | |
a0d0e21e LW |
2234 | Examples: |
2235 | ||
54310121 | 2236 | # make divide-by-zero nonfatal |
a0d0e21e LW |
2237 | eval { $answer = $a / $b; }; warn $@ if $@; |
2238 | ||
2239 | # same thing, but less efficient | |
2240 | eval '$answer = $a / $b'; warn $@ if $@; | |
2241 | ||
2242 | # a compile-time error | |
5ed4f2ec | 2243 | eval { $answer = }; # WRONG |
a0d0e21e LW |
2244 | |
2245 | # a run-time error | |
5ed4f2ec | 2246 | eval '$answer ='; # sets $@ |
a0d0e21e | 2247 | |
9891e9b7 KW |
2248 | If you want to trap errors when loading an XS module, some problems with |
2249 | the binary interface (such as Perl version skew) may be fatal even with | |
2250 | C<eval> unless C<$ENV{PERL_DL_NONLAZY}> is set. See | |
2251 | L<perlrun>. | |
2252 | ||
2263ed23 | 2253 | Using the C<eval {}> form as an exception trap in libraries does have some |
cf264981 SP |
2254 | issues. Due to the current arguably broken state of C<__DIE__> hooks, you |
2255 | may wish not to trigger any C<__DIE__> hooks that user code may have installed. | |
2b5ab1e7 | 2256 | You can use the C<local $SIG{__DIE__}> construct for this purpose, |
80d38338 | 2257 | as this example shows: |
774d564b | 2258 | |
80d38338 | 2259 | # a private exception trap for divide-by-zero |
f86cebdf GS |
2260 | eval { local $SIG{'__DIE__'}; $answer = $a / $b; }; |
2261 | warn $@ if $@; | |
774d564b | 2262 | |
2263 | This is especially significant, given that C<__DIE__> hooks can call | |
2263ed23 LM |
2264 | L<C<die>|/die LIST> again, which has the effect of changing their error |
2265 | messages: | |
774d564b | 2266 | |
2267 | # __DIE__ hooks may modify error messages | |
2268 | { | |
f86cebdf GS |
2269 | local $SIG{'__DIE__'} = |
2270 | sub { (my $x = $_[0]) =~ s/foo/bar/g; die $x }; | |
c7cc6f1c GS |
2271 | eval { die "foo lives here" }; |
2272 | print $@ if $@; # prints "bar lives here" | |
774d564b | 2273 | } |
2274 | ||
19799a22 | 2275 | Because this promotes action at a distance, this counterintuitive behavior |
2b5ab1e7 TC |
2276 | may be fixed in a future release. |
2277 | ||
4968c1e4 | 2278 | C<eval BLOCK> does I<not> count as a loop, so the loop control statements |
2263ed23 LM |
2279 | L<C<next>|/next LABEL>, L<C<last>|/last LABEL>, or |
2280 | L<C<redo>|/redo LABEL> cannot be used to leave or restart the block. | |
4968c1e4 | 2281 | |
9891e9b7 KW |
2282 | The final semicolon, if any, may be omitted from within the BLOCK. |
2283 | ||
2284 | =back | |
d819b83a | 2285 | |
7289c5e6 FC |
2286 | =item evalbytes EXPR |
2287 | X<evalbytes> | |
2288 | ||
2289 | =item evalbytes | |
2290 | ||
d9b04284 | 2291 | =for Pod::Functions +evalbytes similar to string eval, but intend to parse a bytestream |
c17cdb72 | 2292 | |
9891e9b7 KW |
2293 | This function is similar to a L<string eval|/eval EXPR>, except it |
2294 | always parses its argument (or L<C<$_>|perlvar/$_> if EXPR is omitted) | |
2295 | as a string of independent bytes. | |
7289c5e6 | 2296 | |
9891e9b7 | 2297 | If called when S<C<use utf8>> is in effect, the string will be assumed |
83c3106b KW |
2298 | to be encoded in UTF-8, and C<evalbytes> will make a temporary copy to |
2299 | work from, downgraded to non-UTF-8. If this is not possible | |
9891e9b7 KW |
2300 | (because one or more characters in it require UTF-8), the C<evalbytes> |
2301 | will fail with the error stored in C<$@>. | |
2302 | ||
2303 | Bytes that correspond to ASCII-range code points will have their normal | |
2304 | meanings for operators in the string. The treatment of the other bytes | |
2305 | depends on if the L<C<'unicode_strings"> feature|feature/The | |
2306 | 'unicode_strings' feature> is in effect. | |
2307 | ||
2308 | Of course, variables that are UTF-8 and are referred to in the string | |
2309 | retain that: | |
2310 | ||
2311 | my $a = "\x{100}"; | |
2312 | evalbytes 'print ord $a, "\n"'; | |
2313 | ||
2314 | prints | |
2315 | ||
2316 | 256 | |
2317 | ||
2318 | and C<$@> is empty. | |
2319 | ||
2320 | Source filters activated within the evaluated code apply to the code | |
2321 | itself. | |
2322 | ||
2323 | L<C<evalbytes>|/evalbytes EXPR> is available starting in Perl v5.16. To | |
2324 | access it, you must say C<CORE::evalbytes>, but you can omit the | |
2325 | C<CORE::> if the | |
2263ed23 | 2326 | L<C<"evalbytes"> feature|feature/The 'unicode_eval' and 'evalbytes' features> |
9891e9b7 KW |
2327 | is enabled. This is enabled automatically with a C<use v5.16> (or |
2328 | higher) declaration in the current scope. | |
7289c5e6 | 2329 | |
a0d0e21e | 2330 | =item exec LIST |
d74e8afc | 2331 | X<exec> X<execute> |
a0d0e21e | 2332 | |
8bf3b016 GS |
2333 | =item exec PROGRAM LIST |
2334 | ||
c17cdb72 NC |
2335 | =for Pod::Functions abandon this program to run another |
2336 | ||
2263ed23 LM |
2337 | The L<C<exec>|/exec LIST> function executes a system command I<and never |
2338 | returns>; use L<C<system>|/system LIST> instead of L<C<exec>|/exec LIST> | |
2339 | if you want it to return. It fails and | |
19799a22 | 2340 | returns false only if the command does not exist I<and> it is executed |
fb73857a | 2341 | directly instead of via your system's command shell (see below). |
a0d0e21e | 2342 | |
2263ed23 LM |
2343 | Since it's a common mistake to use L<C<exec>|/exec LIST> instead of |
2344 | L<C<system>|/system LIST>, Perl warns you if L<C<exec>|/exec LIST> is | |
2345 | called in void context and if there is a following statement that isn't | |
2346 | L<C<die>|/die LIST>, L<C<warn>|/warn LIST>, or L<C<exit>|/exit EXPR> (if | |
2347 | L<warnings> are enabled--but you always do that, right?). If you | |
2348 | I<really> want to follow an L<C<exec>|/exec LIST> with some other | |
2349 | statement, you can use one of these styles to avoid the warning: | |
55d729e4 | 2350 | |
5a964f20 TC |
2351 | exec ('foo') or print STDERR "couldn't exec foo: $!"; |
2352 | { exec ('foo') }; print STDERR "couldn't exec foo: $!"; | |
55d729e4 | 2353 | |
2263ed23 | 2354 | If there is more than one argument in LIST, this calls L<execvp(3)> with the |
667eac0c RS |
2355 | arguments in LIST. If there is only one element in LIST, the argument is |
2356 | checked for shell metacharacters, and if there are any, the entire | |
2357 | argument is passed to the system's command shell for parsing (this is | |
2358 | C</bin/sh -c> on Unix platforms, but varies on other platforms). If | |
2359 | there are no shell metacharacters in the argument, it is split into words | |
2360 | and passed directly to C<execvp>, which is more efficient. Examples: | |
a0d0e21e | 2361 | |
19799a22 GS |
2362 | exec '/bin/echo', 'Your arguments are: ', @ARGV; |
2363 | exec "sort $outfile | uniq"; | |
a0d0e21e LW |
2364 | |
2365 | If you don't really want to execute the first argument, but want to lie | |
2366 | to the program you are executing about its own name, you can specify | |
2367 | the program you actually want to run as an "indirect object" (without a | |
94d4006a TS |
2368 | comma) in front of the LIST, as in C<exec PROGRAM LIST>. (This always |
2369 | forces interpretation of the LIST as a multivalued list, even if there | |
2370 | is only a single scalar in the list.) Example: | |
a0d0e21e | 2371 | |
2263ed23 | 2372 | my $shell = '/bin/csh'; |
5ed4f2ec | 2373 | exec $shell '-sh'; # pretend it's a login shell |
a0d0e21e LW |
2374 | |
2375 | or, more directly, | |
2376 | ||
5ed4f2ec | 2377 | exec {'/bin/csh'} '-sh'; # pretend it's a login shell |
a0d0e21e | 2378 | |
3b10bc60 | 2379 | When the arguments get executed via the system shell, results are |
2380 | subject to its quirks and capabilities. See L<perlop/"`STRING`"> | |
bb32b41a GS |
2381 | for details. |
2382 | ||
2263ed23 LM |
2383 | Using an indirect object with L<C<exec>|/exec LIST> or |
2384 | L<C<system>|/system LIST> is also more secure. This usage (which also | |
2385 | works fine with L<C<system>|/system LIST>) forces | |
19799a22 GS |
2386 | interpretation of the arguments as a multivalued list, even if the |
2387 | list had just one argument. That way you're safe from the shell | |
2388 | expanding wildcards or splitting up words with whitespace in them. | |
5a964f20 | 2389 | |
2263ed23 | 2390 | my @args = ( "echo surprise" ); |
5a964f20 | 2391 | |
2b5ab1e7 | 2392 | exec @args; # subject to shell escapes |
f86cebdf | 2393 | # if @args == 1 |
2b5ab1e7 | 2394 | exec { $args[0] } @args; # safe even with one-arg list |
5a964f20 TC |
2395 | |
2396 | The first version, the one without the indirect object, ran the I<echo> | |
80d38338 TC |
2397 | program, passing it C<"surprise"> an argument. The second version didn't; |
2398 | it tried to run a program named I<"echo surprise">, didn't find it, and set | |
2263ed23 | 2399 | L<C<$?>|perlvar/$?> to a non-zero value indicating failure. |
5a964f20 | 2400 | |
94d4006a TS |
2401 | On Windows, only the C<exec PROGRAM LIST> indirect object syntax will |
2402 | reliably avoid using the shell; C<exec LIST>, even with more than one | |
2403 | element, will fall back to the shell if the first spawn fails. | |
2404 | ||
e9fa405d BF |
2405 | Perl attempts to flush all files opened for output before the exec, |
2406 | but this may not be supported on some platforms (see L<perlport>). | |
2263ed23 LM |
2407 | To be safe, you may need to set L<C<$E<verbar>>|perlvar/$E<verbar>> |
2408 | (C<$AUTOFLUSH> in L<English>) or call the C<autoflush> method of | |
2409 | L<C<IO::Handle>|IO::Handle/METHODS> on any open handles to avoid lost | |
2410 | output. | |
0f897271 | 2411 | |
2263ed23 LM |
2412 | Note that L<C<exec>|/exec LIST> will not call your C<END> blocks, nor |
2413 | will it invoke C<DESTROY> methods on your objects. | |
7660c0ab | 2414 | |
ea9eb35a BJ |
2415 | Portability issues: L<perlport/exec>. |
2416 | ||
a0d0e21e | 2417 | =item exists EXPR |
d74e8afc | 2418 | X<exists> X<autovivification> |
a0d0e21e | 2419 | |
c17cdb72 NC |
2420 | =for Pod::Functions test whether a hash key is present |
2421 | ||
d0a76353 RS |
2422 | Given an expression that specifies an element of a hash, returns true if the |
2423 | specified element in the hash has ever been initialized, even if the | |
2424 | corresponding value is undefined. | |
a0d0e21e | 2425 | |
5ed4f2ec | 2426 | print "Exists\n" if exists $hash{$key}; |
2427 | print "Defined\n" if defined $hash{$key}; | |
01020589 GS |
2428 | print "True\n" if $hash{$key}; |
2429 | ||
d0a76353 | 2430 | exists may also be called on array elements, but its behavior is much less |
2263ed23 LM |
2431 | obvious and is strongly tied to the use of L<C<delete>|/delete EXPR> on |
2432 | arrays. | |
2fbadc08 | 2433 | |
2263ed23 LM |
2434 | B<WARNING:> Calling L<C<exists>|/exists EXPR> on array values is |
2435 | strongly discouraged. The | |
2fbadc08 RS |
2436 | notion of deleting or checking the existence of Perl array elements is not |
2437 | conceptually coherent, and can lead to surprising behavior. | |
d0a76353 | 2438 | |
5ed4f2ec | 2439 | print "Exists\n" if exists $array[$index]; |
2440 | print "Defined\n" if defined $array[$index]; | |
01020589 | 2441 | print "True\n" if $array[$index]; |
a0d0e21e | 2442 | |
8f1da26d | 2443 | A hash or array element can be true only if it's defined and defined only if |
a0d0e21e LW |
2444 | it exists, but the reverse doesn't necessarily hold true. |
2445 | ||
afebc493 GS |
2446 | Given an expression that specifies the name of a subroutine, |
2447 | returns true if the specified subroutine has ever been declared, even | |
2448 | if it is undefined. Mentioning a subroutine name for exists or defined | |
80d38338 | 2449 | does not count as declaring it. Note that a subroutine that does not |
847c7ebe DD |
2450 | exist may still be callable: its package may have an C<AUTOLOAD> |
2451 | method that makes it spring into existence the first time that it is | |
3b10bc60 | 2452 | called; see L<perlsub>. |
afebc493 | 2453 | |
5ed4f2ec | 2454 | print "Exists\n" if exists &subroutine; |
2455 | print "Defined\n" if defined &subroutine; | |
afebc493 | 2456 | |
a0d0e21e | 2457 | Note that the EXPR can be arbitrarily complicated as long as the final |
afebc493 | 2458 | operation is a hash or array key lookup or subroutine name: |
a0d0e21e | 2459 | |
5ed4f2ec | 2460 | if (exists $ref->{A}->{B}->{$key}) { } |
2461 | if (exists $hash{A}{B}{$key}) { } | |
2b5ab1e7 | 2462 | |
5ed4f2ec | 2463 | if (exists $ref->{A}->{B}->[$ix]) { } |
2464 | if (exists $hash{A}{B}[$ix]) { } | |
01020589 | 2465 | |
afebc493 GS |
2466 | if (exists &{$ref->{A}{B}{$key}}) { } |
2467 | ||
9590a7cd | 2468 | Although the most deeply nested array or hash element will not spring into |
3b10bc60 | 2469 | existence just because its existence was tested, any intervening ones will. |
61eff3bc | 2470 | Thus C<< $ref->{"A"} >> and C<< $ref->{"A"}->{"B"} >> will spring |
2263ed23 | 2471 | into existence due to the existence test for the C<$key> element above. |
3b10bc60 | 2472 | This happens anywhere the arrow operator is used, including even here: |
5a964f20 | 2473 | |
2b5ab1e7 | 2474 | undef $ref; |
5ed4f2ec | 2475 | if (exists $ref->{"Some key"}) { } |
2476 | print $ref; # prints HASH(0x80d3d5c) | |
2b5ab1e7 TC |
2477 | |
2478 | This surprising autovivification in what does not at first--or even | |
2479 | second--glance appear to be an lvalue context may be fixed in a future | |
5a964f20 | 2480 | release. |
a0d0e21e | 2481 | |
afebc493 | 2482 | Use of a subroutine call, rather than a subroutine name, as an argument |
2263ed23 | 2483 | to L<C<exists>|/exists EXPR> is an error. |
afebc493 | 2484 | |
5ed4f2ec | 2485 | exists ⊂ # OK |
2486 | exists &sub(); # Error | |
afebc493 | 2487 | |
a0d0e21e | 2488 | =item exit EXPR |
d74e8afc | 2489 | X<exit> X<terminate> X<abort> |
a0d0e21e | 2490 | |
ce2984c3 PF |
2491 | =item exit |
2492 | ||
c17cdb72 NC |
2493 | =for Pod::Functions terminate this program |
2494 | ||
2b5ab1e7 | 2495 | Evaluates EXPR and exits immediately with that value. Example: |
a0d0e21e | 2496 | |
2263ed23 | 2497 | my $ans = <STDIN>; |
a0d0e21e LW |
2498 | exit 0 if $ans =~ /^[Xx]/; |
2499 | ||
2263ed23 LM |
2500 | See also L<C<die>|/die LIST>. If EXPR is omitted, exits with C<0> |
2501 | status. The only | |
2b5ab1e7 TC |
2502 | universally recognized values for EXPR are C<0> for success and C<1> |
2503 | for error; other values are subject to interpretation depending on the | |
2504 | environment in which the Perl program is running. For example, exiting | |
2505 | 69 (EX_UNAVAILABLE) from a I<sendmail> incoming-mail filter will cause | |
2506 | the mailer to return the item undelivered, but that's not true everywhere. | |
a0d0e21e | 2507 | |
2263ed23 LM |
2508 | Don't use L<C<exit>|/exit EXPR> to abort a subroutine if there's any |
2509 | chance that someone might want to trap whatever error happened. Use | |
2510 | L<C<die>|/die LIST> instead, which can be trapped by an | |
2511 | L<C<eval>|/eval EXPR>. | |
28757baa | 2512 | |
2263ed23 LM |
2513 | The L<C<exit>|/exit EXPR> function does not always exit immediately. It |
2514 | calls any defined C<END> routines first, but these C<END> routines may | |
2515 | not themselves abort the exit. Likewise any object destructors that | |
2516 | need to be called are called before the real exit. C<END> routines and | |
2517 | destructors can change the exit status by modifying L<C<$?>|perlvar/$?>. | |
2518 | If this is a problem, you can call | |
2519 | L<C<POSIX::_exit($status)>|POSIX/C<_exit>> to avoid C<END> and destructor | |
2520 | processing. See L<perlmod> for details. | |
5a964f20 | 2521 | |
ea9eb35a BJ |
2522 | Portability issues: L<perlport/exit>. |
2523 | ||
a0d0e21e | 2524 | =item exp EXPR |
d74e8afc | 2525 | X<exp> X<exponential> X<antilog> X<antilogarithm> X<e> |
a0d0e21e | 2526 | |
54310121 | 2527 | =item exp |
bbce6d69 | 2528 | |
c17cdb72 NC |
2529 | =for Pod::Functions raise I<e> to a power |
2530 | ||
b76cc8ba | 2531 | Returns I<e> (the natural logarithm base) to the power of EXPR. |
a0d0e21e LW |
2532 | If EXPR is omitted, gives C<exp($_)>. |
2533 | ||
628253b8 BF |
2534 | =item fc EXPR |
2535 | X<fc> X<foldcase> X<casefold> X<fold-case> X<case-fold> | |
2536 | ||
2537 | =item fc | |
2538 | ||
d9b04284 | 2539 | =for Pod::Functions +fc return casefolded version of a string |
c17cdb72 | 2540 | |
628253b8 BF |
2541 | Returns the casefolded version of EXPR. This is the internal function |
2542 | implementing the C<\F> escape in double-quoted strings. | |
2543 | ||
2544 | Casefolding is the process of mapping strings to a form where case | |
2545 | differences are erased; comparing two strings in their casefolded | |
2546 | form is effectively a way of asking if two strings are equal, | |
2547 | regardless of case. | |
2548 | ||
2549 | Roughly, if you ever found yourself writing this | |
2550 | ||
f6c6dcb6 | 2551 | lc($this) eq lc($that) # Wrong! |
628253b8 | 2552 | # or |
f6c6dcb6 | 2553 | uc($this) eq uc($that) # Also wrong! |
628253b8 | 2554 | # or |
f6c6dcb6 | 2555 | $this =~ /^\Q$that\E\z/i # Right! |
628253b8 BF |
2556 | |
2557 | Now you can write | |
2558 | ||
2559 | fc($this) eq fc($that) | |
2560 | ||
2561 | And get the correct results. | |
2562 | ||
2263ed23 LM |
2563 | Perl only implements the full form of casefolding, but you can access |
2564 | the simple folds using L<Unicode::UCD/B<casefold()>> and | |
2565 | L<Unicode::UCD/B<prop_invmap()>>. | |
628253b8 BF |
2566 | For further information on casefolding, refer to |
2567 | the Unicode Standard, specifically sections 3.13 C<Default Case Operations>, | |
2568 | 4.2 C<Case-Normative>, and 5.18 C<Case Mappings>, | |
2569 | available at L<http://www.unicode.org/versions/latest/>, as well as the | |
2570 | Case Charts available at L<http://www.unicode.org/charts/case/>. | |
2571 | ||
2263ed23 | 2572 | If EXPR is omitted, uses L<C<$_>|perlvar/$_>. |
628253b8 | 2573 | |
2263ed23 LM |
2574 | This function behaves the same way under various pragmas, such as within |
2575 | L<S<C<"use feature 'unicode_strings">>|feature/The 'unicode_strings' feature>, | |
2576 | as L<C<lc>|/lc EXPR> does, with the single exception of | |
2577 | L<C<fc>|/fc EXPR> of I<LATIN CAPITAL LETTER SHARP S> (U+1E9E) within the | |
2578 | scope of L<S<C<use locale>>|locale>. The foldcase of this character | |
2579 | would normally be C<"ss">, but as explained in the L<C<lc>|/lc EXPR> | |
2580 | section, case | |
1ca267a5 KW |
2581 | changes that cross the 255/256 boundary are problematic under locales, |
2582 | and are hence prohibited. Therefore, this function under locale returns | |
2263ed23 LM |
2583 | instead the string C<"\x{17F}\x{17F}">, which is the I<LATIN SMALL LETTER |
2584 | LONG S>. Since that character itself folds to C<"s">, the string of two | |
1ca267a5 | 2585 | of them together should be equivalent to a single U+1E9E when foldcased. |
628253b8 BF |
2586 | |
2587 | While the Unicode Standard defines two additional forms of casefolding, | |
2588 | one for Turkic languages and one that never maps one character into multiple | |
2263ed23 LM |
2589 | characters, these are not provided by the Perl core. However, the CPAN module |
2590 | L<C<Unicode::Casing>|Unicode::Casing> may be used to provide an implementation. | |
628253b8 | 2591 | |
2263ed23 LM |
2592 | L<C<fc>|/fc EXPR> is available only if the |
2593 | L<C<"fc"> feature|feature/The 'fc' feature> is enabled or if it is | |
2594 | prefixed with C<CORE::>. The | |
2595 | L<C<"fc"> feature|feature/The 'fc' feature> is enabled automatically | |
2596 | with a C<use v5.16> (or higher) declaration in the current scope. | |
628253b8 | 2597 | |
a0d0e21e | 2598 | =item fcntl FILEHANDLE,FUNCTION,SCALAR |
d74e8afc | 2599 | X<fcntl> |
a0d0e21e | 2600 | |
c17cdb72 NC |
2601 | =for Pod::Functions file control system call |
2602 | ||
2263ed23 | 2603 | Implements the L<fcntl(2)> function. You'll probably have to say |
a0d0e21e LW |
2604 | |
2605 | use Fcntl; | |
2606 | ||
0ade1984 | 2607 | first to get the correct constant definitions. Argument processing and |
2263ed23 LM |
2608 | value returned work just like L<C<ioctl>|/ioctl |
2609 | FILEHANDLE,FUNCTION,SCALAR> below. For example: | |
a0d0e21e LW |
2610 | |
2611 | use Fcntl; | |
d5eedefe | 2612 | my $flags = fcntl($filehandle, F_GETFL, 0) |
2263ed23 LM |
2613 | or die "Can't fcntl F_GETFL: $!"; |
2614 | ||
2615 | You don't have to check for L<C<defined>|/defined EXPR> on the return | |
2616 | from L<C<fcntl>|/fcntl FILEHANDLE,FUNCTION,SCALAR>. Like | |
2617 | L<C<ioctl>|/ioctl FILEHANDLE,FUNCTION,SCALAR>, it maps a C<0> return | |
2618 | from the system call into C<"0 but true"> in Perl. This string is true | |
2619 | in boolean context and C<0> in numeric context. It is also exempt from | |
2620 | the normal | |
2621 | L<C<Argument "..." isn't numeric>|perldiag/Argument "%s" isn't numeric%s> | |
2622 | L<warnings> on improper numeric conversions. | |
2623 | ||
2624 | Note that L<C<fcntl>|/fcntl FILEHANDLE,FUNCTION,SCALAR> raises an | |
2625 | exception if used on a machine that doesn't implement L<fcntl(2)>. See | |
2626 | the L<Fcntl> module or your L<fcntl(2)> manpage to learn what functions | |
2627 | are available on your system. | |
2628 | ||
2629 | Here's an example of setting a filehandle named C<$REMOTE> to be | |
2630 | non-blocking at the system level. You'll have to negotiate | |
2631 | L<C<$E<verbar>>|perlvar/$E<verbar>> on your own, though. | |
be2f7487 TH |
2632 | |
2633 | use Fcntl qw(F_GETFL F_SETFL O_NONBLOCK); | |
2634 | ||
2263ed23 LM |
2635 | my $flags = fcntl($REMOTE, F_GETFL, 0) |
2636 | or die "Can't get flags for the socket: $!\n"; | |
be2f7487 | 2637 | |
2263ed23 LM |
2638 | fcntl($REMOTE, F_SETFL, $flags | O_NONBLOCK) |
2639 | or die "Can't set flags for the socket: $!\n"; | |
be2f7487 | 2640 | |
ea9eb35a BJ |
2641 | Portability issues: L<perlport/fcntl>. |
2642 | ||
cfa52385 FC |
2643 | =item __FILE__ |
2644 | X<__FILE__> | |
2645 | ||
c17cdb72 NC |
2646 | =for Pod::Functions the name of the current source file |
2647 | ||
cfa52385 FC |
2648 | A special token that returns the name of the file in which it occurs. |
2649 | ||
a0d0e21e | 2650 | =item fileno FILEHANDLE |
d74e8afc | 2651 | X<fileno> |
a0d0e21e | 2652 | |
c17cdb72 NC |
2653 | =for Pod::Functions return file descriptor from filehandle |
2654 | ||
2b5ab1e7 | 2655 | Returns the file descriptor for a filehandle, or undefined if the |
a7c1632d FC |
2656 | filehandle is not open. If there is no real file descriptor at the OS |
2657 | level, as can happen with filehandles connected to memory objects via | |
2263ed23 LM |
2658 | L<C<open>|/open FILEHANDLE,EXPR> with a reference for the third |
2659 | argument, -1 is returned. | |
a7c1632d | 2660 | |
2263ed23 LM |
2661 | This is mainly useful for constructing bitmaps for |
2662 | L<C<select>|/select RBITS,WBITS,EBITS,TIMEOUT> and low-level POSIX | |
2663 | tty-handling operations. | |
2b5ab1e7 TC |
2664 | If FILEHANDLE is an expression, the value is taken as an indirect |
2665 | filehandle, generally its name. | |
5a964f20 | 2666 | |
b76cc8ba | 2667 | You can use this to find out whether two handles refer to the |
5a964f20 TC |
2668 | same underlying descriptor: |
2669 | ||
2263ed23 LM |
2670 | if (fileno($this) != -1 && fileno($this) == fileno($that)) { |
2671 | print "\$this and \$that are dups\n"; | |
2672 | } elsif (fileno($this) != -1 && fileno($that) != -1) { | |
2673 | print "\$this and \$that have different " . | |
555bd962 | 2674 | "underlying file descriptors\n"; |
3231d257 | 2675 | } else { |
2263ed23 | 2676 | print "At least one of \$this and \$that does " . |
555bd962 | 2677 | "not have a real file descriptor\n"; |
b76cc8ba NIS |
2678 | } |
2679 | ||
2263ed23 LM |
2680 | The behavior of L<C<fileno>|/fileno FILEHANDLE> on a directory handle |
2681 | depends on the operating system. On a system with L<dirfd(3)> or | |
2682 | similar, L<C<fileno>|/fileno FILEHANDLE> on a directory | |
67f2cc75 AC |
2683 | handle returns the underlying file descriptor associated with the |
2684 | handle; on systems with no such support, it returns the undefined value, | |
2263ed23 | 2685 | and sets L<C<$!>|perlvar/$!> (errno). |
67f2cc75 | 2686 | |
a0d0e21e | 2687 | =item flock FILEHANDLE,OPERATION |
d74e8afc | 2688 | X<flock> X<lock> X<locking> |
a0d0e21e | 2689 | |
c17cdb72 NC |
2690 | =for Pod::Functions lock an entire file with an advisory lock |
2691 | ||
2263ed23 | 2692 | Calls L<flock(2)>, or an emulation of it, on FILEHANDLE. Returns true |
19799a22 | 2693 | for success, false on failure. Produces a fatal error if used on a |
2263ed23 LM |
2694 | machine that doesn't implement L<flock(2)>, L<fcntl(2)> locking, or |
2695 | L<lockf(3)>. L<C<flock>|/flock FILEHANDLE,OPERATION> is Perl's portable | |
2696 | file-locking interface, although it locks entire files only, not | |
2697 | records. | |
2b5ab1e7 | 2698 | |
2263ed23 LM |
2699 | Two potentially non-obvious but traditional L<C<flock>|/flock |
2700 | FILEHANDLE,OPERATION> semantics are | |
2b5ab1e7 | 2701 | that it waits indefinitely until the lock is granted, and that its locks |
dbfe1e81 FC |
2702 | are B<merely advisory>. Such discretionary locks are more flexible, but |
2703 | offer fewer guarantees. This means that programs that do not also use | |
2263ed23 LM |
2704 | L<C<flock>|/flock FILEHANDLE,OPERATION> may modify files locked with |
2705 | L<C<flock>|/flock FILEHANDLE,OPERATION>. See L<perlport>, | |
8f1da26d | 2706 | your port's specific documentation, and your system-specific local manpages |
2b5ab1e7 TC |
2707 | for details. It's best to assume traditional behavior if you're writing |
2708 | portable programs. (But if you're not, you should as always feel perfectly | |
2709 | free to write for your own system's idiosyncrasies (sometimes called | |
2710 | "features"). Slavish adherence to portability concerns shouldn't get | |
2711 | in the way of your getting your job done.) | |
a3cb178b | 2712 | |
8ebc5c01 | 2713 | OPERATION is one of LOCK_SH, LOCK_EX, or LOCK_UN, possibly combined with |
2714 | LOCK_NB. These constants are traditionally valued 1, 2, 8 and 4, but | |
8f1da26d TC |
2715 | you can use the symbolic names if you import them from the L<Fcntl> module, |
2716 | either individually, or as a group using the C<:flock> tag. LOCK_SH | |
68dc0745 | 2717 | requests a shared lock, LOCK_EX requests an exclusive lock, and LOCK_UN |
ea3105be | 2718 | releases a previously requested lock. If LOCK_NB is bitwise-or'ed with |
2263ed23 LM |
2719 | LOCK_SH or LOCK_EX, then L<C<flock>|/flock FILEHANDLE,OPERATION> returns |
2720 | immediately rather than blocking waiting for the lock; check the return | |
2721 | status to see if you got it. | |
68dc0745 | 2722 | |
2b5ab1e7 TC |
2723 | To avoid the possibility of miscoordination, Perl now flushes FILEHANDLE |
2724 | before locking or unlocking it. | |
8ebc5c01 | 2725 | |
2263ed23 | 2726 | Note that the emulation built with L<lockf(3)> doesn't provide shared |
8ebc5c01 | 2727 | locks, and it requires that FILEHANDLE be open with write intent. These |
2263ed23 LM |
2728 | are the semantics that L<lockf(3)> implements. Most if not all systems |
2729 | implement L<lockf(3)> in terms of L<fcntl(2)> locking, though, so the | |
8ebc5c01 | 2730 | differing semantics shouldn't bite too many people. |
2731 | ||
2263ed23 | 2732 | Note that the L<fcntl(2)> emulation of L<flock(3)> requires that FILEHANDLE |
becacb53 TM |
2733 | be open with read intent to use LOCK_SH and requires that it be open |
2734 | with write intent to use LOCK_EX. | |
2735 | ||
2263ed23 LM |
2736 | Note also that some versions of L<C<flock>|/flock FILEHANDLE,OPERATION> |
2737 | cannot lock things over the network; you would need to use the more | |
2738 | system-specific L<C<fcntl>|/fcntl FILEHANDLE,FUNCTION,SCALAR> for | |
2739 | that. If you like you can force Perl to ignore your system's L<flock(2)> | |
2740 | function, and so provide its own L<fcntl(2)>-based emulation, by passing | |
8ebc5c01 | 2741 | the switch C<-Ud_flock> to the F<Configure> program when you configure |
8f1da26d | 2742 | and build a new Perl. |
4633a7c4 LW |
2743 | |
2744 | Here's a mailbox appender for BSD systems. | |
a0d0e21e | 2745 | |
f7051f2c FC |
2746 | # import LOCK_* and SEEK_END constants |
2747 | use Fcntl qw(:flock SEEK_END); | |
a0d0e21e LW |
2748 | |
2749 | sub lock { | |
a9a5a0dc VP |
2750 | my ($fh) = @_; |
2751 | flock($fh, LOCK_EX) or die "Cannot lock mailbox - $!\n"; | |
7ed5353d | 2752 | |
a9a5a0dc VP |
2753 | # and, in case someone appended while we were waiting... |
2754 | seek($fh, 0, SEEK_END) or die "Cannot seek - $!\n"; | |
a0d0e21e LW |
2755 | } |
2756 | ||
2757 | sub unlock { | |
a9a5a0dc VP |
2758 | my ($fh) = @_; |
2759 | flock($fh, LOCK_UN) or die "Cannot unlock mailbox - $!\n"; | |
a0d0e21e LW |
2760 | } |
2761 | ||
b0169937 | 2762 | open(my $mbox, ">>", "/usr/spool/mail/$ENV{'USER'}") |
5ed4f2ec | 2763 | or die "Can't open mailbox: $!"; |
a0d0e21e | 2764 | |
7ed5353d | 2765 | lock($mbox); |
b0169937 | 2766 | print $mbox $msg,"\n\n"; |
7ed5353d | 2767 | unlock($mbox); |
a0d0e21e | 2768 | |
2263ed23 LM |
2769 | On systems that support a real L<flock(2)>, locks are inherited across |
2770 | L<C<fork>|/fork> calls, whereas those that must resort to the more | |
2771 | capricious L<fcntl(2)> function lose their locks, making it seriously | |
2772 | harder to write servers. | |
2b5ab1e7 | 2773 | |
2263ed23 LM |
2774 | See also L<DB_File> for other L<C<flock>|/flock FILEHANDLE,OPERATION> |
2775 | examples. | |
a0d0e21e | 2776 | |
ea9eb35a BJ |
2777 | Portability issues: L<perlport/flock>. |
2778 | ||
a0d0e21e | 2779 | =item fork |
d74e8afc | 2780 | X<fork> X<child> X<parent> |
a0d0e21e | 2781 | |
c17cdb72 NC |
2782 | =for Pod::Functions create a new process just like this one |
2783 | ||
2263ed23 | 2784 | Does a L<fork(2)> system call to create a new process running the |
2b5ab1e7 | 2785 | same program at the same point. It returns the child pid to the |
2263ed23 LM |
2786 | parent process, C<0> to the child process, or L<C<undef>|/undef EXPR> if |
2787 | the fork is | |
2b5ab1e7 TC |
2788 | unsuccessful. File descriptors (and sometimes locks on those descriptors) |
2789 | are shared, while everything else is copied. On most systems supporting | |
2263ed23 | 2790 | L<fork(2)>, great care has gone into making it extremely efficient (for |
2b5ab1e7 TC |
2791 | example, using copy-on-write technology on data pages), making it the |
2792 | dominant paradigm for multitasking over the last few decades. | |
5a964f20 | 2793 | |
2263ed23 LM |
2794 | Perl attempts to flush all files opened for output before forking the |
2795 | child process, but this may not be supported on some platforms (see | |
2796 | L<perlport>). To be safe, you may need to set | |
2797 | L<C<$E<verbar>>|perlvar/$E<verbar>> (C<$AUTOFLUSH> in L<English>) or | |
2798 | call the C<autoflush> method of L<C<IO::Handle>|IO::Handle/METHODS> on | |
2799 | any open handles to avoid duplicate output. | |
a0d0e21e | 2800 | |
2263ed23 | 2801 | If you L<C<fork>|/fork> without ever waiting on your children, you will |
2b5ab1e7 | 2802 | accumulate zombies. On some systems, you can avoid this by setting |
2263ed23 LM |
2803 | L<C<$SIG{CHLD}>|perlvar/%SIG> to C<"IGNORE">. See also L<perlipc> for |
2804 | more examples of forking and reaping moribund children. | |
cb1a09d0 | 2805 | |
28757baa | 2806 | Note that if your forked child inherits system file descriptors like |
2807 | STDIN and STDOUT that are actually connected by a pipe or socket, even | |
2b5ab1e7 | 2808 | if you exit, then the remote server (such as, say, a CGI script or a |
19799a22 | 2809 | backgrounded job launched from a remote shell) won't think you're done. |
2b5ab1e7 | 2810 | You should reopen those to F</dev/null> if it's any issue. |
28757baa | 2811 | |
2263ed23 LM |
2812 | On some platforms such as Windows, where the L<fork(2)> system call is |
2813 | not available, Perl can be built to emulate L<C<fork>|/fork> in the Perl | |
2814 | interpreter. The emulation is designed, at the level of the Perl | |
2815 | program, to be as compatible as possible with the "Unix" L<fork(2)>. | |
2816 | However it has limitations that have to be considered in code intended | |
2817 | to be portable. See L<perlfork> for more details. | |
ea9eb35a BJ |
2818 | |
2819 | Portability issues: L<perlport/fork>. | |
2820 | ||
cb1a09d0 | 2821 | =item format |
d74e8afc | 2822 | X<format> |
cb1a09d0 | 2823 | |
c17cdb72 NC |
2824 | =for Pod::Functions declare a picture format with use by the write() function |
2825 | ||
2263ed23 LM |
2826 | Declare a picture format for use by the L<C<write>|/write FILEHANDLE> |
2827 | function. For example: | |
cb1a09d0 | 2828 | |
54310121 | 2829 | format Something = |
a9a5a0dc VP |
2830 | Test: @<<<<<<<< @||||| @>>>>> |
2831 | $str, $%, '$' . int($num) | |
cb1a09d0 AD |
2832 | . |
2833 | ||
2834 | $str = "widget"; | |
184e9718 | 2835 | $num = $cost/$quantity; |
cb1a09d0 AD |
2836 | $~ = 'Something'; |
2837 | write; | |
2838 | ||
2839 | See L<perlform> for many details and examples. | |
2840 | ||
8903cb82 | 2841 | =item formline PICTURE,LIST |
d74e8afc | 2842 | X<formline> |
a0d0e21e | 2843 | |
c17cdb72 NC |
2844 | =for Pod::Functions internal function used for formats |
2845 | ||
2263ed23 LM |
2846 | This is an internal function used by L<C<format>|/format>s, though you |
2847 | may call it, too. It formats (see L<perlform>) a list of values | |
2848 | according to the contents of PICTURE, placing the output into the format | |
2849 | output accumulator, L<C<$^A>|perlvar/$^A> (or C<$ACCUMULATOR> in | |
2850 | L<English>). Eventually, when a L<C<write>|/write FILEHANDLE> is done, | |
2851 | the contents of L<C<$^A>|perlvar/$^A> are written to some filehandle. | |
2852 | You could also read L<C<$^A>|perlvar/$^A> and then set | |
2853 | L<C<$^A>|perlvar/$^A> back to C<"">. Note that a format typically does | |
2854 | one L<C<formline>|/formline PICTURE,LIST> per line of form, but the | |
2855 | L<C<formline>|/formline PICTURE,LIST> function itself doesn't care how | |
2856 | many newlines are embedded in the PICTURE. This means that the C<~> and | |
2857 | C<~~> tokens treat the entire PICTURE as a single line. You may | |
2858 | therefore need to use multiple formlines to implement a single record | |
2859 | format, just like the L<C<format>|/format> compiler. | |
748a9306 | 2860 | |
19799a22 | 2861 | Be careful if you put double quotes around the picture, because an C<@> |
748a9306 | 2862 | character may be taken to mean the beginning of an array name. |
2263ed23 LM |
2863 | L<C<formline>|/formline PICTURE,LIST> always returns true. See |
2864 | L<perlform> for other examples. | |
a0d0e21e | 2865 | |
2263ed23 LM |
2866 | If you are trying to use this instead of L<C<write>|/write FILEHANDLE> |
2867 | to capture the output, you may find it easier to open a filehandle to a | |
2868 | scalar (C<< open my $fh, ">", \$output >>) and write to that instead. | |
445b09e5 | 2869 | |
a0d0e21e | 2870 | =item getc FILEHANDLE |
f723aae1 | 2871 | X<getc> X<getchar> X<character> X<file, read> |
a0d0e21e LW |
2872 | |
2873 | =item getc | |
2874 | ||
c17cdb72 NC |
2875 | =for Pod::Functions get the next character from the filehandle |
2876 | ||
a0d0e21e | 2877 | Returns the next character from the input file attached to FILEHANDLE, |
3b10bc60 | 2878 | or the undefined value at end of file or if there was an error (in |
2263ed23 LM |
2879 | the latter case L<C<$!>|perlvar/$!> is set). If FILEHANDLE is omitted, |
2880 | reads from | |
b5fe5ca2 SR |
2881 | STDIN. This is not particularly efficient. However, it cannot be |
2882 | used by itself to fetch single characters without waiting for the user | |
2883 | to hit enter. For that, try something more like: | |
4633a7c4 LW |
2884 | |
2885 | if ($BSD_STYLE) { | |
a9a5a0dc | 2886 | system "stty cbreak </dev/tty >/dev/tty 2>&1"; |
4633a7c4 LW |
2887 | } |
2888 | else { | |
a9a5a0dc | 2889 | system "stty", '-icanon', 'eol', "\001"; |
4633a7c4 LW |
2890 | } |
2891 | ||
2263ed23 | 2892 | my $key = getc(STDIN); |
4633a7c4 LW |
2893 | |
2894 | if ($BSD_STYLE) { | |
a9a5a0dc | 2895 | system "stty -cbreak </dev/tty >/dev/tty 2>&1"; |
4633a7c4 LW |
2896 | } |
2897 | else { | |
3b10bc60 | 2898 | system 'stty', 'icanon', 'eol', '^@'; # ASCII NUL |
4633a7c4 LW |
2899 | } |
2900 | print "\n"; | |
2901 | ||
2263ed23 LM |
2902 | Determination of whether C<$BSD_STYLE> should be set is left as an |
2903 | exercise to the reader. | |
cb1a09d0 | 2904 | |
2263ed23 LM |
2905 | The L<C<POSIX::getattr>|POSIX/C<getattr>> function can do this more |
2906 | portably on systems purporting POSIX compliance. See also the | |
2907 | L<C<Term::ReadKey>|Term::ReadKey> module on CPAN. | |
a0d0e21e LW |
2908 | |
2909 | =item getlogin | |
d74e8afc | 2910 | X<getlogin> X<login> |
a0d0e21e | 2911 | |
c17cdb72 NC |
2912 | =for Pod::Functions return who logged in at this tty |
2913 | ||
cf264981 | 2914 | This implements the C library function of the same name, which on most |
3b10bc60 | 2915 | systems returns the current login from F</etc/utmp>, if any. If it |
2263ed23 | 2916 | returns the empty string, use L<C<getpwuid>|/getpwuid UID>. |
a0d0e21e | 2917 | |
2263ed23 | 2918 | my $login = getlogin || getpwuid($<) || "Kilroy"; |
a0d0e21e | 2919 | |
2263ed23 LM |
2920 | Do not consider L<C<getlogin>|/getlogin> for authentication: it is not |
2921 | as secure as L<C<getpwuid>|/getpwuid UID>. | |
4633a7c4 | 2922 | |
ea9eb35a BJ |
2923 | Portability issues: L<perlport/getlogin>. |
2924 | ||
a0d0e21e | 2925 | =item getpeername SOCKET |
d74e8afc | 2926 | X<getpeername> X<peer> |
a0d0e21e | 2927 | |
c17cdb72 NC |
2928 | =for Pod::Functions find the other end of a socket connection |
2929 | ||
a3390c9f FC |
2930 | Returns the packed sockaddr address of the other end of the SOCKET |
2931 | connection. | |
a0d0e21e | 2932 | |
4633a7c4 | 2933 | use Socket; |
2263ed23 LM |
2934 | my $hersockaddr = getpeername($sock); |
2935 | my ($port, $iaddr) = sockaddr_in($hersockaddr); | |
2936 | my $herhostname = gethostbyaddr($iaddr, AF_INET); | |
2937 | my $herstraddr = inet_ntoa($iaddr); | |
a0d0e21e LW |
2938 | |
2939 | =item getpgrp PID | |
d74e8afc | 2940 | X<getpgrp> X<group> |
a0d0e21e | 2941 | |
c17cdb72 NC |
2942 | =for Pod::Functions get process group |
2943 | ||
47e29363 | 2944 | Returns the current process group for the specified PID. Use |
7660c0ab | 2945 | a PID of C<0> to get the current process group for the |
4633a7c4 | 2946 | current process. Will raise an exception if used on a machine that |
2263ed23 LM |
2947 | doesn't implement L<getpgrp(2)>. If PID is omitted, returns the process |
2948 | group of the current process. Note that the POSIX version of | |
2949 | L<C<getpgrp>|/getpgrp PID> does not accept a PID argument, so only | |
2950 | C<PID==0> is truly portable. | |
a0d0e21e | 2951 | |
ea9eb35a BJ |
2952 | Portability issues: L<perlport/getpgrp>. |
2953 | ||
a0d0e21e | 2954 | =item getppid |
d74e8afc | 2955 | X<getppid> X<parent> X<pid> |
a0d0e21e | 2956 | |
c17cdb72 NC |
2957 | =for Pod::Functions get parent process ID |
2958 | ||
a0d0e21e LW |
2959 | Returns the process id of the parent process. |
2960 | ||
d7c042c9 AB |
2961 | Note for Linux users: Between v5.8.1 and v5.16.0 Perl would work |
2962 | around non-POSIX thread semantics the minority of Linux systems (and | |
2963 | Debian GNU/kFreeBSD systems) that used LinuxThreads, this emulation | |
7161e5c2 | 2964 | has since been removed. See the documentation for L<$$|perlvar/$$> for |
d7c042c9 | 2965 | details. |
4d76a344 | 2966 | |
ea9eb35a BJ |
2967 | Portability issues: L<perlport/getppid>. |
2968 | ||
a0d0e21e | 2969 | =item getpriority WHICH,WHO |
d74e8afc | 2970 | X<getpriority> X<priority> X<nice> |
a0d0e21e | 2971 | |
c17cdb72 NC |
2972 | =for Pod::Functions get current nice value |
2973 | ||
4633a7c4 | 2974 | Returns the current priority for a process, a process group, or a user. |
01aa884e | 2975 | (See L<getpriority(2)>.) Will raise a fatal exception if used on a |
2263ed23 | 2976 | machine that doesn't implement L<getpriority(2)>. |
a0d0e21e | 2977 | |
ea9eb35a BJ |
2978 | Portability issues: L<perlport/getpriority>. |
2979 | ||
a0d0e21e | 2980 | =item getpwnam NAME |
d74e8afc ITB |
2981 | X<getpwnam> X<getgrnam> X<gethostbyname> X<getnetbyname> X<getprotobyname> |
2982 | X<getpwuid> X<getgrgid> X<getservbyname> X<gethostbyaddr> X<getnetbyaddr> | |
2983 | X<getprotobynumber> X<getservbyport> X<getpwent> X<getgrent> X<gethostent> | |
2984 | X<getnetent> X<getprotoent> X<getservent> X<setpwent> X<setgrent> X<sethostent> | |
2985 | X<setnetent> X<setprotoent> X<setservent> X<endpwent> X<endgrent> X<endhostent> | |
2263ed23 | 2986 | X<endnetent> X<endprotoent> X<endservent> |
a0d0e21e | 2987 | |
c17cdb72 NC |
2988 | =for Pod::Functions get passwd record given user login name |
2989 | ||
a0d0e21e LW |
2990 | =item getgrnam NAME |
2991 | ||
c17cdb72 NC |
2992 | =for Pod::Functions get group record given group name |
2993 | ||
a0d0e21e LW |
2994 | =item gethostbyname NAME |
2995 | ||
c17cdb72 NC |
2996 | =for Pod::Functions get host record given name |
2997 | ||
a0d0e21e LW |
2998 | =item getnetbyname NAME |
2999 | ||
c17cdb72 NC |
3000 | =for Pod::Functions get networks record given name |
3001 | ||
a0d0e21e LW |
3002 | =item getprotobyname NAME |
3003 | ||
c17cdb72 NC |
3004 | =for Pod::Functions get protocol record given name |
3005 | ||
a0d0e21e LW |
3006 | =item getpwuid UID |
3007 | ||
c17cdb72 NC |
3008 | =for Pod::Functions get passwd record given user ID |
3009 | ||
a0d0e21e LW |
3010 | =item getgrgid GID |
3011 | ||
c17cdb72 NC |
3012 | =for Pod::Functions get group record given group user ID |
3013 | ||
a0d0e21e LW |
3014 | =item getservbyname NAME,PROTO |
3015 | ||
c17cdb72 NC |
3016 | =for Pod::Functions get services record given its name |
3017 | ||
a0d0e21e LW |
3018 | =item gethostbyaddr ADDR,ADDRTYPE |
3019 | ||
c17cdb72 NC |
3020 | =for Pod::Functions get host record given its address |
3021 | ||
a0d0e21e LW |
3022 | =item getnetbyaddr ADDR,ADDRTYPE |
3023 | ||
c17cdb72 NC |
3024 | =for Pod::Functions get network record given its address |
3025 | ||
a0d0e21e LW |
3026 | =item getprotobynumber NUMBER |
3027 | ||
c17cdb72 NC |
3028 | =for Pod::Functions get protocol record numeric protocol |
3029 | ||
a0d0e21e LW |
3030 | =item getservbyport PORT,PROTO |
3031 | ||
c17cdb72 NC |
3032 | =for Pod::Functions get services record given numeric port |
3033 | ||
a0d0e21e LW |
3034 | =item getpwent |
3035 | ||
c17cdb72 NC |
3036 | =for Pod::Functions get next passwd record |
3037 | ||
a0d0e21e LW |
3038 | =item getgrent |
3039 | ||
c17cdb72 NC |
3040 | =for Pod::Functions get next group record |
3041 | ||
a0d0e21e LW |
3042 | =item gethostent |
3043 | ||
c17cdb72 NC |
3044 | =for Pod::Functions get next hosts record |
3045 | ||
a0d0e21e LW |
3046 | =item getnetent |
3047 | ||
c17cdb72 NC |
3048 | =for Pod::Functions get next networks record |
3049 | ||
a0d0e21e LW |
3050 | =item getprotoent |
3051 | ||
c17cdb72 NC |
3052 | =for Pod::Functions get next protocols record |
3053 | ||
a0d0e21e LW |
3054 | =item getservent |
3055 | ||
c17cdb72 NC |
3056 | =for Pod::Functions get next services record |
3057 | ||
a0d0e21e LW |
3058 | =item setpwent |
3059 | ||
c17cdb72 NC |
3060 | =for Pod::Functions prepare passwd file for use |
3061 | ||
a0d0e21e LW |
3062 | =item setgrent |
3063 | ||
c17cdb72 NC |
3064 | =for Pod::Functions prepare group file for use |
3065 | ||
a0d0e21e LW |
3066 | =item sethostent STAYOPEN |
3067 | ||
c17cdb72 NC |
3068 | =for Pod::Functions prepare hosts file for use |
3069 | ||
a0d0e21e LW |
3070 | =item setnetent STAYOPEN |
3071 | ||
c17cdb72 NC |
3072 | =for Pod::Functions prepare networks file for use |
3073 | ||
a0d0e21e LW |
3074 | =item setprotoent STAYOPEN |
3075 | ||
c17cdb72 NC |
3076 | =for Pod::Functions prepare protocols file for use |
3077 | ||
a0d0e21e LW |
3078 | =item setservent STAYOPEN |
3079 | ||
c17cdb72 NC |
3080 | =for Pod::Functions prepare services file for use |
3081 | ||
a0d0e21e LW |
3082 | =item endpwent |
3083 | ||
c17cdb72 NC |
3084 | =for Pod::Functions be done using passwd file |
3085 | ||
a0d0e21e LW |
3086 | =item endgrent |
3087 | ||
c17cdb72 NC |
3088 | =for Pod::Functions be done using group file |
3089 | ||
a0d0e21e LW |
3090 | =item endhostent |
3091 | ||
c17cdb72 NC |
3092 | =for Pod::Functions be done using hosts file |
3093 | ||
a0d0e21e LW |
3094 | =item endnetent |
3095 | ||
c17cdb72 NC |
3096 | =for Pod::Functions be done using networks file |
3097 | ||
a0d0e21e LW |
3098 | =item endprotoent |
3099 | ||
c17cdb72 NC |
3100 | =for Pod::Functions be done using protocols file |
3101 | ||
a0d0e21e LW |
3102 | =item endservent |
3103 | ||
c17cdb72 NC |
3104 | =for Pod::Functions be done using services file |
3105 | ||
80d38338 TC |
3106 | These routines are the same as their counterparts in the |
3107 | system C library. In list context, the return values from the | |
a0d0e21e LW |
3108 | various get routines are as follows: |
3109 | ||
2263ed23 LM |
3110 | # 0 1 2 3 4 |
3111 | my ( $name, $passwd, $gid, $members ) = getgr* | |
3112 | my ( $name, $aliases, $addrtype, $net ) = getnet* | |
3113 | my ( $name, $aliases, $port, $proto ) = getserv* | |
3114 | my ( $name, $aliases, $proto ) = getproto* | |
3115 | my ( $name, $aliases, $addrtype, $length, @addrs ) = gethost* | |
3116 | my ( $name, $passwd, $uid, $gid, $quota, | |
3117 | $comment, $gcos, $dir, $shell, $expire ) = getpw* | |
3118 | # 5 6 7 8 9 | |
a0d0e21e | 3119 | |
75f7c783 FC |
3120 | (If the entry doesn't exist, the return value is a single meaningless true |
3121 | value.) | |
a0d0e21e | 3122 | |
4602f195 JH |
3123 | The exact meaning of the $gcos field varies but it usually contains |
3124 | the real name of the user (as opposed to the login name) and other | |
3125 | information pertaining to the user. Beware, however, that in many | |
3126 | system users are able to change this information and therefore it | |
106325ad | 3127 | cannot be trusted and therefore the $gcos is tainted (see |
2959b6e3 | 3128 | L<perlsec>). The $passwd and $shell, user's encrypted password and |
a3390c9f | 3129 | login shell, are also tainted, for the same reason. |
4602f195 | 3130 | |
5a964f20 | 3131 | In scalar context, you get the name, unless the function was a |
a0d0e21e LW |
3132 | lookup by name, in which case you get the other thing, whatever it is. |
3133 | (If the entry doesn't exist you get the undefined value.) For example: | |
3134 | ||
2263ed23 LM |
3135 | my $uid = getpwnam($name); |
3136 | my $name = getpwuid($num); | |
3137 | my $name = getpwent(); | |
3138 | my $gid = getgrnam($name); | |
3139 | my $name = getgrgid($num); | |
3140 | my $name = getgrent(); | |
3141 | # etc. | |
a0d0e21e | 3142 | |
4602f195 | 3143 | In I<getpw*()> the fields $quota, $comment, and $expire are special |
80d38338 | 3144 | in that they are unsupported on many systems. If the |
4602f195 JH |
3145 | $quota is unsupported, it is an empty scalar. If it is supported, it |
3146 | usually encodes the disk quota. If the $comment field is unsupported, | |
3147 | it is an empty scalar. If it is supported it usually encodes some | |
3148 | administrative comment about the user. In some systems the $quota | |
3149 | field may be $change or $age, fields that have to do with password | |
3150 | aging. In some systems the $comment field may be $class. The $expire | |
3151 | field, if present, encodes the expiration period of the account or the | |
3152 | password. For the availability and the exact meaning of these fields | |
2263ed23 | 3153 | in your system, please consult L<getpwnam(3)> and your system's |
4602f195 JH |
3154 | F<pwd.h> file. You can also find out from within Perl what your |
3155 | $quota and $comment fields mean and whether you have the $expire field | |
2263ed23 | 3156 | by using the L<C<Config>|Config> module and the values C<d_pwquota>, C<d_pwage>, |
4602f195 | 3157 | C<d_pwchange>, C<d_pwcomment>, and C<d_pwexpire>. Shadow password |
3b10bc60 | 3158 | files are supported only if your vendor has implemented them in the |
4602f195 | 3159 | intuitive fashion that calling the regular C library routines gets the |
5d3a0a3b | 3160 | shadow versions if you're running under privilege or if there exists |
2263ed23 | 3161 | the L<shadow(3)> functions as found in System V (this includes Solaris |
a3390c9f | 3162 | and Linux). Those systems that implement a proprietary shadow password |
5d3a0a3b | 3163 | facility are unlikely to be supported. |
6ee623d5 | 3164 | |
a3390c9f | 3165 | The $members value returned by I<getgr*()> is a space-separated list of |
a0d0e21e LW |
3166 | the login names of the members of the group. |
3167 | ||
3168 | For the I<gethost*()> functions, if the C<h_errno> variable is supported in | |
2263ed23 LM |
3169 | C, it will be returned to you via L<C<$?>|perlvar/$?> if the function |
3170 | call fails. The | |
3b10bc60 | 3171 | C<@addrs> value returned by a successful call is a list of raw |
3172 | addresses returned by the corresponding library call. In the | |
3173 | Internet domain, each address is four bytes long; you can unpack it | |
a0d0e21e LW |
3174 | by saying something like: |
3175 | ||
2263ed23 | 3176 | my ($w,$x,$y,$z) = unpack('W4',$addr[0]); |
a0d0e21e | 3177 | |
2b5ab1e7 TC |
3178 | The Socket library makes this slightly easier: |
3179 | ||
3180 | use Socket; | |
2263ed23 LM |
3181 | my $iaddr = inet_aton("127.1"); # or whatever address |
3182 | my $name = gethostbyaddr($iaddr, AF_INET); | |
2b5ab1e7 TC |
3183 | |
3184 | # or going the other way | |
2263ed23 | 3185 | my $straddr = inet_ntoa($iaddr); |
2b5ab1e7 | 3186 | |
d760c846 GS |
3187 | In the opposite way, to resolve a hostname to the IP address |
3188 | you can write this: | |
3189 | ||
3190 | use Socket; | |
2263ed23 LM |
3191 | my $packed_ip = gethostbyname("www.perl.org"); |
3192 | my $ip_address; | |
d760c846 GS |
3193 | if (defined $packed_ip) { |
3194 | $ip_address = inet_ntoa($packed_ip); | |
3195 | } | |
3196 | ||
2263ed23 LM |
3197 | Make sure L<C<gethostbyname>|/gethostbyname NAME> is called in SCALAR |
3198 | context and that its return value is checked for definedness. | |
d760c846 | 3199 | |
2263ed23 LM |
3200 | The L<C<getprotobynumber>|/getprotobynumber NUMBER> function, even |
3201 | though it only takes one argument, has the precedence of a list | |
3202 | operator, so beware: | |
0d043efa FC |
3203 | |
3204 | getprotobynumber $number eq 'icmp' # WRONG | |
3205 | getprotobynumber($number eq 'icmp') # actually means this | |
3206 | getprotobynumber($number) eq 'icmp' # better this way | |
3207 | ||
19799a22 | 3208 | If you get tired of remembering which element of the return list |
2263ed23 LM |
3209 | contains which return value, by-name interfaces are provided in standard |
3210 | modules: L<C<File::stat>|File::stat>, L<C<Net::hostent>|Net::hostent>, | |
3211 | L<C<Net::netent>|Net::netent>, L<C<Net::protoent>|Net::protoent>, | |
3212 | L<C<Net::servent>|Net::servent>, L<C<Time::gmtime>|Time::gmtime>, | |
3213 | L<C<Time::localtime>|Time::localtime>, and | |
3214 | L<C<User::grent>|User::grent>. These override the normal built-ins, | |
3215 |