summaryrefslogtreecommitdiff
path: root/pod/perlfunc.pod
diff options
context:
space:
mode:
Diffstat (limited to 'pod/perlfunc.pod')
-rw-r--r--pod/perlfunc.pod37
1 files changed, 24 insertions, 13 deletions
diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod
index ddf64d07bb..3e791810db 100644
--- a/pod/perlfunc.pod
+++ b/pod/perlfunc.pod
@@ -1435,7 +1435,7 @@ defined C<END> routines first, but these C<END> routines may not
themselves abort the exit. Likewise any object destructors that need to
be called are called before the real exit. If this is a problem, you
can call C<POSIX:_exit($status)> to avoid END and destructor processing.
-See L<perlsub> for details.
+See L<perlmod> for details.
=item exp EXPR
@@ -2118,7 +2118,8 @@ See also C<each>, C<values> and C<sort>.
Sends a signal to a list of processes. The first element of
the list must be the signal to send. Returns the number of
-processes successfully signaled.
+processes successfully signaled (which is not necessarily the
+same as the number actually killed).
$cnt = kill 1, $child1, $child2;
kill 9, @goners;
@@ -4200,29 +4201,38 @@ a NAME, it's an anonymous function declaration, and does actually return a
value: the CODE ref of the closure you just created. See L<perlsub> and
L<perlref> for details.
-=item substr EXPR,OFFSET,LEN,REPLACEMENT
+=item substr EXPR,OFFSET,LENGTH,REPLACEMENT
-=item substr EXPR,OFFSET,LEN
+=item substr EXPR,OFFSET,LENGTH
=item substr EXPR,OFFSET
Extracts a substring out of EXPR and returns it. First character is at
offset C<0>, or whatever you've set C<$[> to (but don't do that).
If OFFSET is negative (or more precisely, less than C<$[>), starts
-that far from the end of the string. If LEN is omitted, returns
-everything to the end of the string. If LEN is negative, leaves that
+that far from the end of the string. If LENGTH is omitted, returns
+everything to the end of the string. If LENGTH is negative, leaves that
many characters off the end of the string.
-If you specify a substring that is partly outside the string, the part
-within the string is returned. If the substring is totally outside
-the string a warning is produced.
-
You can use the substr() function as an lvalue, in which case EXPR
-must itself be an lvalue. If you assign something shorter than LEN,
-the string will shrink, and if you assign something longer than LEN,
+must itself be an lvalue. If you assign something shorter than LENGTH,
+the string will shrink, and if you assign something longer than LENGTH,
the string will grow to accommodate it. To keep the string the same
length you may need to pad or chop your value using C<sprintf>.
+If OFFSET and LENGTH specify a substring that is partly outside the
+string, only the part within the string is returned. If the substring
+is beyond either end of the string, substr() returns the undefined
+value and produces a warning. When used as an lvalue, specifying a
+substring that is entirely outside the string is a fatal error.
+Here's an example showing the behavior for boundary cases:
+
+ my $name = 'fred';
+ substr($name, 4) = 'dy'; # $name is now 'freddy'
+ my $null = substr $name, 6, 2; # returns '' (no warning)
+ my $oops = substr $name, 7; # returns undef, with warning
+ substr($name, 7) = 'gap'; # fatal error
+
An alternative to using substr() as an lvalue is to specify the
replacement string as the 4th argument. This allows you to replace
parts of the EXPR and return what was there before in one operation,
@@ -4368,7 +4378,8 @@ The return value is the exit status of the program as
returned by the C<wait> call. To get the actual exit value divide by
256. See also L</exec>. This is I<not> what you want to use to capture
the output from a command, for that you should use merely backticks or
-C<qx//>, as described in L<perlop/"`STRING`">.
+C<qx//>, as described in L<perlop/"`STRING`">. Return value of -1
+indicates a failure to start the program (inspect $! for the reason).
Like C<exec>, C<system> allows you to lie to a program about its name if
you use the C<system PROGRAM LIST> syntax. Again, see L</exec>.