X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlfunc.pod;h=7d9e2379a9910e2406e1f77a725afe2c3f14229e;hb=e199845280bc7d6fec24a11bbe30c154943f9814;hp=0f4c4a8fd8c387925a9e2728ff2dd0e4a5ecf7dd;hpb=aeedbbed677eb39b533d78d495f79d82297f273f;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod index 0f4c4a8..7d9e237 100644 --- a/pod/perlfunc.pod +++ b/pod/perlfunc.pod @@ -1928,11 +1928,11 @@ Here's a mailbox appender for BSD systems. flock(MBOX,LOCK_UN); } - open(MBOX, ">>/usr/spool/mail/$ENV{'USER'}") + open(my $mbox, ">>", "/usr/spool/mail/$ENV{'USER'}") or die "Can't open mailbox: $!"; lock(); - print MBOX $msg,"\n\n"; + print $mbox $msg,"\n\n"; unlock(); On systems that support a real flock(), locks are inherited across fork() @@ -2667,9 +2667,10 @@ X X =item length Returns the length in I of the value of EXPR. If EXPR is -omitted, returns length of C<$_>. Note that this cannot be used on -an entire array or hash to find out how many elements these have. -For that, use C and C respectively. +omitted, returns length of C<$_>. If EXPR is undefined, returns C. +Note that this cannot be used on an entire array or hash to find out how +many elements these have. For that, use C and C respectively. Note the I: if the EXPR is in Unicode, you will get the number of characters, not the number of bytes. To get the length @@ -2749,7 +2750,8 @@ Wednesday. C<$yday> is the day of the year, in the range C<0..364> C<$isdst> is true if the specified time occurs during Daylight Saving Time, false otherwise. -If EXPR is omitted, C uses the current time (C). +If EXPR is omitted, C uses the current time (as returned +by the C built-in). In scalar context, C returns the ctime(3) value: @@ -3057,6 +3059,14 @@ X X X X Opens the file whose filename is given by EXPR, and associates it with FILEHANDLE. +Simple examples to open a file for reading: + + open(my $fh, '<', "input.txt") or die $!; + +and for writing: + + open(my $fh, '>', "output.txt") or die $!; + (The following is a comprehensive reference to open(): for a gentler introduction you may consider L.) @@ -3128,7 +3138,7 @@ You may use the three-argument form of open to specify IO "layers" that affect how the input and output are processed (see L and L for more details). For example - open(FH, "<:encoding(UTF-8)", "file") + open(my $fh, "<:encoding(UTF-8)", "file") will open the UTF-8 encoded file containing Unicode characters, see L. Note that if layers are specified in the @@ -3158,7 +3168,7 @@ working with an unopened filehandle is actually what you want to do. As a special case the 3-arg form with a read/write mode and the third argument being C: - open(TMP, "+>", undef) or die ... + open(my $tmp, "+>", undef) or die ... opens a filehandle to an anonymous temporary file. Also using "+<" works for symmetry, but you really should consider writing something @@ -3186,10 +3196,10 @@ Examples: open(LOG, '>>/usr/spool/news/twitlog'); # (log is reserved) # if the open fails, output is discarded - open(DBASE, '+<', 'dbase.mine') # open for update + open(my $dbase, '+<', 'dbase.mine') # open for update or die "Can't open 'dbase.mine' for update: $!"; - open(DBASE, '+new; open($handle, "myfile") or die "myfile: $!"; $first = <$handle> or return (); # Automatically closed here. @@ -3424,6 +3434,8 @@ scalar variable (or array or hash element), the variable is assigned a reference to a new anonymous dirhandle. DIRHANDLEs have their own namespace separate from FILEHANDLEs. +See example at C. + =item ord EXPR X X @@ -4050,12 +4062,6 @@ If the package name is null, the C
package as assumed. That is, C<$::sail> is equivalent to C<$main::sail> (as well as to C<$main'sail>, still seen in older code). -If NAMESPACE is omitted, then there is no current package, and all -identifiers must be fully qualified or lexicals. However, you are -strongly advised not to make use of this feature. Its use can cause -unexpected behaviour, even crashing some versions of Perl. It is -deprecated, and will be removed from a future release. - See L for more information about packages, modules, and classes. See L for other scoping issues. @@ -4275,9 +4281,9 @@ If you're planning to filetest the return values out of a C, you'd better prepend the directory in question. Otherwise, because we didn't C there, it would have been testing the wrong file. - opendir(DIR, $some_dir) || die "can't opendir $some_dir: $!"; - @dots = grep { /^\./ && -f "$some_dir/$_" } readdir(DIR); - closedir DIR; + opendir(my $dh, $some_dir) || die "can't opendir $some_dir: $!"; + @dots = grep { /^\./ && -f "$some_dir/$_" } readdir($dh); + closedir $dh; =item readline EXPR @@ -6863,22 +6869,16 @@ of perl older than the specified one. Specifying VERSION as a literal of the form v5.6.1 should generally be avoided, because it leads to misleading error messages under earlier -versions of Perl that do not support this syntax. The equivalent numeric -version should be used instead. - -Alternatively, you can use a numeric version C followed by a -v-string version like C, to avoid the unintuitive C. (older perl versions fail gracefully at the first C, -later perl versions understand the v-string syntax in the second). +versions of Perl (that is, prior to 5.6.0) that do not support this +syntax. The equivalent numeric version should be used instead. use v5.6.1; # compile time version check use 5.6.1; # ditto use 5.006_001; # ditto; preferred for backwards compatibility - use 5.006; use 5.6.1; # ditto, for compatibility and readability This is often useful if you need to check the current Perl version before -Cing library modules that have changed in incompatible ways from -older versions of Perl. (We try not to do this more than we have to.) +Cing library modules that won't work with older versions of Perl. +(We try not to do this more than we have to.) Also, if the specified perl version is greater than or equal to 5.9.5, C will also load the C pragma and enable all