diff options
Diffstat (limited to 'perl.man.3')
-rw-r--r-- | perl.man.3 | 41 |
1 files changed, 38 insertions, 3 deletions
diff --git a/perl.man.3 b/perl.man.3 index bd64915a99..7d3972c8d7 100644 --- a/perl.man.3 +++ b/perl.man.3 @@ -1,7 +1,13 @@ ''' Beginning of part 3 -''' $Header: perl.man.3,v 3.0.1.3 89/12/21 20:10:12 lwall Locked $ +''' $Header: perl.man.3,v 3.0.1.4 90/02/28 18:00:09 lwall Locked $ ''' ''' $Log: perl.man.3,v $ +''' Revision 3.0.1.4 90/02/28 18:00:09 lwall +''' patch9: added pipe function +''' patch9: documented how to handle arbitrary weird characters in filenames +''' patch9: documented the unflushed buffers problem on piped opens +''' patch9: documented how to force top of page +''' ''' Revision 3.0.1.3 89/12/21 20:10:12 lwall ''' patch7: documented that s`pat`repl` does command substitution on replacement ''' patch7: documented that $timeleft from select() is likely not implemented @@ -202,6 +208,22 @@ The following pairs are equivalent: .fi Explicitly closing any piped filehandle causes the parent process to wait for the child to finish, and returns the status value in $?. +Note: on any operation which may do a fork, +unflushed buffers remain unflushed in both +processes, which means you may need to set $| to +avoid duplicate output. +.Sp +The filename that is passed to open will have leading and trailing +whitespace deleted. +In order to open a file with arbitrary weird characters in it, it's necessary +to protect any leading and trailing whitespace thusly: +.nf + +.ne 2 + $file =~ s#^(\es)#./$1#; + open(FOO, "< $file\e0"); + +.fi .Ip "opendir(DIRHANDLE,EXPR)" 8 3 Opens a directory named EXPR for processing by readdir(), telldir(), seekdir(), rewinddir() and closedir(). @@ -270,6 +292,14 @@ Examples: .fi The same template may generally also be used in the unpack function. +.Ip "pipe(READHANDLE,WRITEHANDLE)" 8 3 +Opens a pair of connected pipes like the corresponding system call. +Note that if you set up a loop of piped processes, deadlock can occur +unless you are very careful. +In addition, note that perl's pipes use stdio buffering, so you may need +to set $| to flush your WRITEHANDLE after each command, depending on +the application. +[Requires version 3.0 patchlevel 9.] .Ip "pop(ARRAY)" 8 .Ip "pop ARRAY" 8 6 Pops and returns the last value of the array, shortening the array by 1. @@ -693,7 +723,9 @@ Examples: .Ip "split" 8 Splits a string into an array of strings, and returns it. (If not in an array context, returns the number of fields found and splits -into the @_ array.) +into the @_ array. +(In an array context, you can force the split into @_ +by using ?? as the pattern delimiters, but it still returns the array value.)) If EXPR is omitted, splits the $_ string. If PATTERN is also omitted, splits on whitespace (/[\ \et\en]+/). Anything matching PATTERN is taken to be a delimiter separating the fields. @@ -1119,11 +1151,14 @@ by assigning the name of the format to the $~ variable. .Sp Top of form processing is handled automatically: if there is insufficient room on the current page for the formatted -record, the page is advanced, a special top-of-page format is used +record, the page is advanced by writing a form feed, +a special top-of-page format is used to format the new page header, and then the record is written. By default the top-of-page format is \*(L"top\*(R", but it may be set to the format of your choice by assigning the name to the $^ variable. +The number of lines remaining on the current page is in variable $-, which +can be set to 0 to force a new page. .Sp If FILEHANDLE is unspecified, output goes to the current default output channel, which starts out as |