Skip to content
Browse files

perlapi.pod Enhancements

This is a patch to enhance perlapi.pod by providing Perl equivalents and
clarifying documentation where appropriate.
  • Loading branch information...
1 parent 1fcb005 commit f0b90de1127cfd7f88a667aff4553d624d6e451d @shlomif shlomif committed with Father Chrysostomos
Showing with 31 additions and 6 deletions.
  1. +14 −2 av.c
  2. +2 −0 av.h
  3. +6 −1 cv.h
  4. +9 −3 perl.c
View
16 av.c
@@ -275,11 +275,15 @@ Perl_av_fetch(pTHX_ register AV *av, I32 key, I32 lval)
Stores an SV in an array. The array index is specified as C<key>. The
return value will be NULL if the operation failed or if the value did not
need to be actually stored within the array (as in the case of tied
-arrays). Otherwise it can be dereferenced to get the original C<SV*>. Note
-that the caller is responsible for suitably incrementing the reference
+arrays). Otherwise, it can be dereferenced to get the C<SV*> that was stored
+there (= C<val>)).
+
+Note that the caller is responsible for suitably incrementing the reference
count of C<val> before the call, and decrementing it if the function
returned NULL.
+Approximate Perl equivalent: C<$myarray[$key] = $val;>.
+
See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for
more information on how to use this function on tied arrays.
@@ -529,6 +533,8 @@ Perl_av_create_and_push(pTHX_ AV **const avp, SV *const val)
Pushes an SV onto the end of the array. The array will grow automatically
to accommodate the addition. This takes ownership of one reference count.
+Perl equivalent: C<push @myarray, $elem;>.
+
=cut
*/
@@ -558,6 +564,8 @@ Perl_av_push(pTHX_ register AV *av, SV *val)
Pops an SV off the end of the array. Returns C<&PL_sv_undef> if the array
is empty.
+Perl equivalent: C<pop(@myarray);>
+
=cut
*/
@@ -617,6 +625,8 @@ Unshift the given number of C<undef> values onto the beginning of the
array. The array will grow automatically to accommodate the addition. You
must then use C<av_store> to assign values to these new elements.
+Perl equivalent: C<unshift @myarray, ( (undef) x $n );>
+
=cut
*/
@@ -679,6 +689,8 @@ Perl_av_unshift(pTHX_ register AV *av, register I32 num)
Shifts an SV off the beginning of the array. Returns C<&PL_sv_undef> if the
array is empty.
+Perl equivalent: C<shift(@myarray);>
+
=cut
*/
View
2 av.h
@@ -83,6 +83,8 @@ Same as C<av_len()>. Deprecated, use C<av_len()> instead.
Creates a new AV. The reference count is set to 1.
+Perl equivalent: C<my @array;>.
+
=cut
*/
View
7 cv.h
@@ -26,8 +26,13 @@ Null CV pointer.
=head1 CV Manipulation Functions
+This section documents functions to manipulate CVs which are code-values,
+or subroutines. For more information, see L<perlguts>.
+
=for apidoc Am|HV*|CvSTASH|CV* cv
-Returns the stash of the CV.
+Returns the stash of the CV. A stash is the symbol table hash, containing
+the package-scoped variables in the package where the subroutine was defined.
+For more information, see L<perlguts>.
=cut
*/
View
12 perl.c
@@ -2382,11 +2382,14 @@ Perl_get_sv(pTHX_ const char *name, I32 flags)
=for apidoc p||get_av
-Returns the AV of the specified Perl array. C<flags> are passed to
-C<gv_fetchpv>. If C<GV_ADD> is set and the
+Returns the AV of the specified Perl global or package array with the given
+name (so it won't work on lexical variables). C<flags> are passed
+to C<gv_fetchpv>. If C<GV_ADD> is set and the
Perl variable does not exist then it will be created. If C<flags> is zero
and the variable does not exist then NULL is returned.
+Perl equivalent: C<@{"$name"}>.
+
=cut
*/
@@ -2488,7 +2491,10 @@ Perl_get_cv(pTHX_ const char *name, I32 flags)
=for apidoc p||call_argv
-Performs a callback to the specified Perl sub. See L<perlcall>.
+Performs a callback to the specified named and package-scoped Perl subroutine
+with C<argv> (a NULL-terminated array of strings) as arguments. See L<perlcall>.
+
+Approximate Perl equivalent: C<&{"$sub_name"}(@$argv)>.
=cut
*/

0 comments on commit f0b90de

Please sign in to comment.
Something went wrong with that request. Please try again.