summaryrefslogtreecommitdiff
path: root/pod/perlsub.pod
diff options
context:
space:
mode:
Diffstat (limited to 'pod/perlsub.pod')
-rw-r--r--pod/perlsub.pod13
1 files changed, 3 insertions, 10 deletions
diff --git a/pod/perlsub.pod b/pod/perlsub.pod
index a38d05be25..9d725abe0d 100644
--- a/pod/perlsub.pod
+++ b/pod/perlsub.pod
@@ -48,15 +48,8 @@ there's really no difference from the language's perspective.)
Any arguments passed to the routine come in as the array @_. Thus if you
called a function with two arguments, those would be stored in C<$_[0]>
and C<$_[1]>. The array @_ is a local array, but its values are implicit
-references (predating L<perlref>) to the actual scalar parameters. What
-this means in practice is that when you explicitly modify C<$_[0]> et al.,
-you will be changing the actual arguments. As a result, all arguments
-to functions are treated as lvalues. Any hash or array elements that are
-passed to functions will get created if they do not exist (irrespective
-of whether the function does modify the contents of C<@_>). This is
-frequently a source of surprise. See L<perltrap> for an example.
-
-The return value of the subroutine is the value of the last expression
+references (predating L<perlref>) to the actual scalar parameters. The
+return value of the subroutine is the value of the last expression
evaluated. Alternatively, a return statement may be used to specify the
returned value and exit the subroutine. If you return one or more arrays
and/or hashes, these will be flattened together into one large
@@ -503,7 +496,7 @@ Even if you don't want to modify an array, this mechanism is useful for
passing multiple arrays in a single LIST, because normally the LIST
mechanism will merge all the array values so that you can't extract out
the individual arrays. For more on typeglobs, see
-L<perldata/"Typeglobs and FileHandles">.
+L<perldata/"Typeglobs and Filehandles">.
=head2 Pass by Reference