diff options
Diffstat (limited to 'pod')
-rw-r--r-- | pod/checkpods.PL | 21 | ||||
-rw-r--r-- | pod/perlcall.pod | 53 | ||||
-rw-r--r-- | pod/perldelta.pod | 8 | ||||
-rw-r--r-- | pod/perldiag.pod | 12 | ||||
-rw-r--r-- | pod/perlembed.pod | 4 | ||||
-rw-r--r-- | pod/perlfunc.pod | 4 | ||||
-rw-r--r-- | pod/perlguts.pod | 21 | ||||
-rw-r--r-- | pod/perllocale.pod | 2 | ||||
-rw-r--r-- | pod/perlmod.pod | 2 | ||||
-rw-r--r-- | pod/perlop.pod | 83 | ||||
-rw-r--r-- | pod/perlstyle.pod | 2 | ||||
-rw-r--r-- | pod/perlsyn.pod | 14 | ||||
-rw-r--r-- | pod/perlxs.pod | 4 |
13 files changed, 142 insertions, 88 deletions
diff --git a/pod/checkpods.PL b/pod/checkpods.PL index ccd78ec9cf..0cac62325e 100644 --- a/pod/checkpods.PL +++ b/pod/checkpods.PL @@ -37,7 +37,7 @@ print OUT <<'!NO!SUBS!'; # From: Roderick Schertler <roderick@gate.net> # To: perl5-porters@africa.nicoh.com # Subject: POD lines with only spaces -# +# # There are some places in the documentation where a POD directive is # ignored because the line before it contains whitespace (and so the # directive doesn't start a paragraph). This patch adds a way to check @@ -53,18 +53,25 @@ print OUT <<'!NO!SUBS!'; # to grow. Someone will probably want to rewrite in terms of # some sort of Pod::Checker module. Or something. Consider this # a placeholder for the future. -$exit = $last_blank = 0; +# Version 1.02 Roderick Schertler <roderick@argon.org> +# Check for pod directives following any kind of unempty line, not +# just lines of whitespace. + +@directive = qw(head1 head2 item over back cut pod for begin end); +@directive{@directive} = (1) x @directive; + +$exit = $last_unempty = 0; while (<>) { - chop; - if (/^(=\S+)/ && $last_blank) { - printf "%s: line %5d, Non-empty line preceeding directive %s\n", + chomp; + if (/^=(\S+)/ && $directive{$1} && $last_unempty) { + printf "%s: line %5d, no blank line preceeding directive =%s\n", $ARGV, $., $1; $exit = 1; } - $last_blank = /^\s+$/; + $last_unempty = ($_ ne ''); if (eof) { close(ARGV); - $last_blank = 0; + $last_unempty = 0; } } exit $exit diff --git a/pod/perlcall.pod b/pod/perlcall.pod index f90e09f238..865d3bf88d 100644 --- a/pod/perlcall.pod +++ b/pod/perlcall.pod @@ -404,7 +404,7 @@ via this XSUB void Call_fred() CODE: - PUSHMARK(sp) ; + PUSHMARK(SP) ; perl_call_pv("fred", G_DISCARD|G_NOARGS) ; fprintf(stderr, "back in Call_fred\n") ; @@ -421,7 +421,7 @@ higher, or use the G_EVAL flag with I<perl_call_*> as shown below void Call_fred() CODE: - PUSHMARK(sp) ; + PUSHMARK(SP) ; perl_call_pv("fred", G_EVAL|G_DISCARD|G_NOARGS) ; fprintf(stderr, "back in Call_fred\n") ; @@ -462,7 +462,7 @@ and here is a C function to call it { dSP ; - PUSHMARK(sp) ; + PUSHMARK(SP) ; perl_call_pv("PrintUID", G_DISCARD|G_NOARGS) ; } @@ -474,7 +474,7 @@ A few points to note about this example. =item 1. -Ignore C<dSP> and C<PUSHMARK(sp)> for now. They will be discussed in +Ignore C<dSP> and C<PUSHMARK(SP)> for now. They will be discussed in the next example. =item 2. @@ -526,7 +526,7 @@ The C function required to call I<LeftString> would look like this. { dSP ; - PUSHMARK(sp) ; + PUSHMARK(SP) ; XPUSHs(sv_2mortal(newSVpv(a, 0))); XPUSHs(sv_2mortal(newSViv(b))); PUTBACK ; @@ -542,8 +542,9 @@ Here are a few notes on the C function I<call_LeftString>. Parameters are passed to the Perl subroutine using the Perl stack. This is the purpose of the code beginning with the line C<dSP> and -ending with the line C<PUTBACK>. - +ending with the line C<PUTBACK>. The C<dSP> declares a local copy +of the stack pointer. This local copy should B<always> be accessed +as C<SP>. =item 2. @@ -630,7 +631,7 @@ function required to call it is now a bit more complex. ENTER ; SAVETMPS; - PUSHMARK(sp) ; + PUSHMARK(SP) ; XPUSHs(sv_2mortal(newSViv(a))); XPUSHs(sv_2mortal(newSViv(b))); PUTBACK ; @@ -766,7 +767,7 @@ and this is the C function ENTER ; SAVETMPS; - PUSHMARK(sp) ; + PUSHMARK(SP) ; XPUSHs(sv_2mortal(newSViv(a))); XPUSHs(sv_2mortal(newSViv(b))); PUTBACK ; @@ -829,7 +830,7 @@ context, like this ENTER ; SAVETMPS; - PUSHMARK(sp) ; + PUSHMARK(SP) ; XPUSHs(sv_2mortal(newSViv(a))); XPUSHs(sv_2mortal(newSViv(b))); PUTBACK ; @@ -897,7 +898,7 @@ and here is a C function to call it. sva = sv_2mortal(newSViv(a)) ; svb = sv_2mortal(newSViv(b)) ; - PUSHMARK(sp) ; + PUSHMARK(SP) ; XPUSHs(sva); XPUSHs(svb); PUTBACK ; @@ -954,7 +955,7 @@ and some C to call it ENTER ; SAVETMPS; - PUSHMARK(sp) ; + PUSHMARK(SP) ; XPUSHs(sv_2mortal(newSViv(a))); XPUSHs(sv_2mortal(newSViv(b))); PUTBACK ; @@ -1087,7 +1088,7 @@ Here is a snippet of XSUB which defines I<CallSubPV>. CallSubPV(name) char * name CODE: - PUSHMARK(sp) ; + PUSHMARK(SP) ; perl_call_pv(name, G_DISCARD|G_NOARGS) ; That is fine as far as it goes. The thing is, the Perl subroutine @@ -1103,7 +1104,7 @@ I<perl_call_sv> instead of I<perl_call_pv>. CallSubSV(name) SV * name CODE: - PUSHMARK(sp) ; + PUSHMARK(SP) ; perl_call_sv(name, G_DISCARD|G_NOARGS) ; Because we are using an SV to call I<fred> the following can all be used @@ -1133,7 +1134,7 @@ pointer to the SV. Say the code above had been like this void CallSavedSub1() CODE: - PUSHMARK(sp) ; + PUSHMARK(SP) ; perl_call_sv(rememberSub, G_DISCARD|G_NOARGS) ; The reason this is wrong is that by the time you come to use the @@ -1209,7 +1210,7 @@ SV. The code below shows C<SaveSub2> modified to do that void CallSavedSub2() CODE: - PUSHMARK(sp) ; + PUSHMARK(SP) ; perl_call_sv(keepSub, G_DISCARD|G_NOARGS) ; To avoid creating a new SV every time C<SaveSub2> is called, @@ -1318,7 +1319,7 @@ the C<PrintID> and C<Display> methods from C. char * method int index CODE: - PUSHMARK(sp); + PUSHMARK(SP); XPUSHs(ref); XPUSHs(sv_2mortal(newSViv(index))) ; PUTBACK; @@ -1330,7 +1331,7 @@ the C<PrintID> and C<Display> methods from C. char * class char * method CODE: - PUSHMARK(sp); + PUSHMARK(SP); XPUSHs(sv_2mortal(newSVpv(class, 0))) ; PUTBACK; @@ -1522,7 +1523,7 @@ Now change that to call a Perl subroutine instead { dSP ; - PUSHMARK(sp) ; + PUSHMARK(SP) ; /* Call the Perl sub to process the callback */ perl_call_sv(callback, G_DISCARD) ; @@ -1625,7 +1626,7 @@ and C<asynch_read_if> could look like this if (sv == (SV**)NULL) croak("Internal error...\n") ; - PUSHMARK(sp) ; + PUSHMARK(SP) ; XPUSHs(sv_2mortal(newSViv(fh))) ; XPUSHs(sv_2mortal(newSVpv(buffer, 0))) ; PUTBACK ; @@ -1709,7 +1710,7 @@ series of C functions to act as the interface to Perl, thus { dSP ; - PUSHMARK(sp) ; + PUSHMARK(SP) ; XPUSHs(sv_2mortal(newSVpv(buffer, 0))) ; PUTBACK ; @@ -1863,7 +1864,7 @@ of values> recoded to use C<ST> instead of C<POP*>. ENTER ; SAVETMPS; - PUSHMARK(sp) ; + PUSHMARK(SP) ; XPUSHs(sv_2mortal(newSViv(a))); XPUSHs(sv_2mortal(newSViv(b))); PUTBACK ; @@ -1871,8 +1872,8 @@ of values> recoded to use C<ST> instead of C<POP*>. count = perl_call_pv("AddSubtract", G_ARRAY); SPAGAIN ; - sp -= count ; - ax = (sp - stack_base) + 1 ; + SP -= count ; + ax = (SP - stack_base) + 1 ; if (count != 2) croak("Big trouble\n") ; @@ -1901,8 +1902,8 @@ you. The code SPAGAIN ; - sp -= count ; - ax = (sp - stack_base) + 1 ; + SP -= count ; + ax = (SP - stack_base) + 1 ; sets the stack up so that we can use the C<ST> macro. diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 5c99211e62..9443f386d9 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -1208,7 +1208,7 @@ or a hash slice, such as =item Applying %s to %s will act on scalar(%s) -(W) The pattern match (//), substitution (s///), and translation (tr///) +(W) The pattern match (//), substitution (s///), and transliteration (tr///) operators work on scalar values. If you apply one of them to an array or a hash, it will convert the array or hash to a scalar value -- the length of an array, or the population info of a hash -- and then work on @@ -1228,6 +1228,12 @@ that can no longer be found in the table. as an lvalue, which is pretty strange. Perhaps you forgot to dereference it first. See L<perlfunc/substr>. +=item Bareword "%s" refers to nonexistent package + +(W) You used a qualified bareword of the form C<Foo::>, but +the compiler saw no other uses of that namespace before that point. +Perhaps you need to predeclare a package? + =item Can't redefine active sort subroutine %s (F) Perl optimizes the internal handling of sort subroutines and keeps diff --git a/pod/perldiag.pod b/pod/perldiag.pod index 5f2876bc73..9f16761239 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -194,7 +194,7 @@ the return value of your socket() call? See L<perlfunc/accept>. =item Applying %s to %s will act on scalar(%s) -(W) The pattern match (//), substitution (s///), and translation (tr///) +(W) The pattern match (//), substitution (s///), and transliteration (tr///) operators work on scalar values. If you apply one of them to an array or a hash, it will convert the array or hash to a scalar value -- the length of an array, or the population info of a hash -- and then work on @@ -361,6 +361,12 @@ Perl yourself. subroutine identifier, in curly braces or to the left of the "=>" symbol. Perhaps you need to predeclare a subroutine? +=item Bareword "%s" refers to nonexistent package + +(W) You used a qualified bareword of the form C<Foo::>, but +the compiler saw no other uses of that namespace before that point. +Perhaps you need to predeclare a package? + =item BEGIN failed--compilation aborted (F) An untrapped exception was raised while executing a BEGIN subroutine. @@ -2463,13 +2469,13 @@ Perl yourself. (F) The regular expression ends with an unbackslashed backslash. Backslash it. See L<perlre>. -=item Translation pattern not terminated +=item Transliteration pattern not terminated (F) The lexer couldn't find the interior delimiter of a tr/// or tr[][] or y/// or y[][] construct. Missing the leading C<$> from variables C<$tr> or C<$y> may cause this error. -=item Translation replacement not terminated +=item Transliteration replacement not terminated (F) The lexer couldn't find the final delimiter of a tr/// or tr[][] construct. diff --git a/pod/perlembed.pod b/pod/perlembed.pod index e7164b58f9..32096789ec 100644 --- a/pod/perlembed.pod +++ b/pod/perlembed.pod @@ -370,7 +370,7 @@ been wrapped here): dSP; SV* retval; - PUSHMARK(sp); + PUSHMARK(SP); perl_eval_sv(sv, G_SCALAR); SPAGAIN; @@ -563,7 +563,7 @@ deep breath... dSP; /* initialize stack pointer */ ENTER; /* everything created after here */ SAVETMPS; /* ...is a temporary variable. */ - PUSHMARK(sp); /* remember the stack pointer */ + PUSHMARK(SP); /* remember the stack pointer */ XPUSHs(sv_2mortal(newSViv(a))); /* push the base onto the stack */ XPUSHs(sv_2mortal(newSViv(b))); /* push the exponent onto stack */ PUTBACK; /* make local stack pointer global */ diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod index 0570c8fe64..f509f61553 100644 --- a/pod/perlfunc.pod +++ b/pod/perlfunc.pod @@ -3720,7 +3720,7 @@ seconds, for this process and the children of this process. =item tr/// -The translation operator. Same as y///. See L<perlop>. +The transliteration operator. Same as y///. See L<perlop>. =item truncate FILEHANDLE,LENGTH @@ -4062,6 +4062,6 @@ Note that write is I<NOT> the opposite of read. Unfortunately. =item y/// -The translation operator. Same as tr///. See L<perlop>. +The transliteration operator. Same as tr///. See L<perlop>. =back diff --git a/pod/perlguts.pod b/pod/perlguts.pod index 4ef8c22713..c6ba0115e2 100644 --- a/pod/perlguts.pod +++ b/pod/perlguts.pod @@ -1088,10 +1088,10 @@ two, the local time zone's standard and summer time abbreviations. To handle this situation, the PPCODE directive is used and the stack is extended using the macro: - EXTEND(sp, num); + EXTEND(SP, num); -where C<sp> is the stack pointer, and C<num> is the number of elements the -stack should be extended by. +where C<SP> is the macro that represents the local copy of the stack pointer, +and C<num> is the number of elements the stack should be extended by. Now that there is room on the stack, values can be pushed on it using the macros to push IVs, doubles, strings, and SV pointers respectively: @@ -1144,6 +1144,7 @@ must manipulate the Perl stack. These include the following macros and functions: dSP + SP PUSHMARK() PUTBACK SPAGAIN @@ -1575,7 +1576,8 @@ The C variable which corresponds to Perl's $^W warning variable. =item dSP -Declares a stack pointer variable, C<sp>, for the XSUB. See C<SP>. +Declares a local copy of perl's stack pointer for the XSUB, available via +the C<SP> macro. See C<SP>. =item dXSARGS @@ -3457,17 +3459,14 @@ destination, C<n> is the number of items, and C<t> is the type. =back -=head1 EDITOR +=head1 AUTHORS -Jeff Okamoto <F<okamoto@corp.hp.com>> +Until May 1997, this document was maintained by Jeff Okamoto +<okamoto@corp.hp.com>. It is now maintained as part of Perl itself. With lots of help and suggestions from Dean Roehrich, Malcolm Beattie, Andreas Koenig, Paul Hudson, Ilya Zakharevich, Paul Marquess, Neil Bowers, Matthew Green, Tim Bunce, Spider Boardman, Ulrich Pfeifer, Stephen McCamant, and Gurusamy Sarathy. -API Listing by Dean Roehrich <F<roehrich@cray.com>>. - -=head1 DATE - -Version 31.8: 1997/5/17 +API Listing originally by Dean Roehrich <roehrich@cray.com>. diff --git a/pod/perllocale.pod b/pod/perllocale.pod index 037fcc9f91..70a32e4fe9 100644 --- a/pod/perllocale.pod +++ b/pod/perllocale.pod @@ -491,7 +491,7 @@ regular expressions.) Thanks to C<LC_CTYPE>, depending on your locale setting, characters like 'E<aelig>', 'E<eth>', 'E<szlig>', and 'E<oslash>' may be understood as C<\w> characters. -The C<LC_CTYPE> locale also provides the map used in translating +The C<LC_CTYPE> locale also provides the map used in transliterating characters between lower and uppercase. This affects the case-mapping functions - lc(), lcfirst, uc() and ucfirst(); case-mapping interpolation with C<\l>, C<\L>, C<\u> or <\U> in double-quoted strings diff --git a/pod/perlmod.pod b/pod/perlmod.pod index 4d0ad2d449..942f216dda 100644 --- a/pod/perlmod.pod +++ b/pod/perlmod.pod @@ -45,7 +45,7 @@ forced to be in package C<main>, even when used for other purposes than their builtin one. Note also that, if you have a package called C<m>, C<s>, or C<y>, then you can't use the qualified form of an identifier because it will be interpreted instead as a pattern match, a substitution, -or a translation. +or a transliteration. (Variables beginning with underscore used to be forced into package main, but we decided it was more useful for package writers to be able diff --git a/pod/perlop.pod b/pod/perlop.pod index 17728df9d3..5d1aae79a6 100644 --- a/pod/perlop.pod +++ b/pod/perlop.pod @@ -145,7 +145,7 @@ is returned. One effect of these rules is that C<-bareword> is equivalent to C<"-bareword">. Unary "~" performs bitwise negation, i.e., 1's complement. -(See also L<Integer Arithmetic>.) +(See also L<Integer Arithmetic> and L<Bitwise String Operators>.) Unary "+" has no effect whatsoever, even on strings. It is useful syntactically for separating a function name from a parenthesized expression @@ -162,11 +162,11 @@ thing from interpretation. Binary "=~" binds a scalar expression to a pattern match. Certain operations search or modify the string $_ by default. This operator makes that kind of operation work on some other string. The right argument is a search -pattern, substitution, or translation. The left argument is what is -supposed to be searched, substituted, or translated instead of the default +pattern, substitution, or transliteration. The left argument is what is +supposed to be searched, substituted, or transliterated instead of the default $_. The return value indicates the success of the operation. (If the right argument is an expression rather than a search pattern, -substitution, or translation, it is interpreted as a search pattern at run +substitution, or transliteration, it is interpreted as a search pattern at run time. This can be is less efficient than an explicit search, because the pattern must be compiled every time the expression is evaluated. @@ -300,15 +300,15 @@ by the current locale if C<use locale> is in effect. See L<perllocale>. =head2 Bitwise And Binary "&" returns its operators ANDed together bit by bit. -(See also L<Integer Arithmetic>.) +(See also L<Integer Arithmetic> and L<Bitwise String Operators>.) =head2 Bitwise Or and Exclusive Or Binary "|" returns its operators ORed together bit by bit. -(See also L<Integer Arithmetic>.) +(See also L<Integer Arithmetic> and L<Bitwise String Operators>.) Binary "^" returns its operators XORed together bit by bit. -(See also L<Integer Arithmetic>.) +(See also L<Integer Arithmetic> and L<Bitwise String Operators>.) =head2 C-style Logical And @@ -558,14 +558,14 @@ any pair of delimiters you choose. Non-bracketing delimiters use the same character fore and aft, but the 4 sorts of brackets (round, angle, square, curly) will all nest. - Customary Generic Meaning Interpolates - '' q{} Literal no - "" qq{} Literal yes - `` qx{} Command yes - qw{} Word list no - // m{} Pattern match yes - s{}{} Substitution yes - tr{}{} Translation no + Customary Generic Meaning Interpolates + '' q{} Literal no + "" qq{} Literal yes + `` qx{} Command yes + qw{} Word list no + // m{} Pattern match yes + s{}{} Substitution yes + tr{}{} Transliteration no (but see below) Note that there can be whitespace between the operator and the quoting characters, except when C<#> is being used as the quoting character. @@ -576,8 +576,9 @@ next line. This allows you to write: s {foo} # Replace foo {bar} # with bar. -For constructs that do interpolation, variables beginning with "C<$>" or "C<@>" -are interpolated, as are the following sequences: +For constructs that do interpolation, variables beginning with "C<$>" +or "C<@>" are interpolated, as are the following sequences. Within +a transliteration, the first ten of these sequences may be used. \t tab (HT, TAB) \n newline (LF, NL) @@ -589,6 +590,7 @@ are interpolated, as are the following sequences: \033 octal char \x1b hex char \c[ control char + \l lowercase next char \u uppercase next char \L lowercase till \E @@ -954,16 +956,18 @@ to occur. Here are two common cases: =item y/SEARCHLIST/REPLACEMENTLIST/cds -Translates all occurrences of the characters found in the search list +Transliterates all occurrences of the characters found in the search list with the corresponding character in the replacement list. It returns the number of characters replaced or deleted. If no string is -specified via the =~ or !~ operator, the $_ string is translated. (The +specified via the =~ or !~ operator, the $_ string is transliterated. (The string specified with =~ must be a scalar variable, an array element, a hash element, or an assignment to one of those, i.e., an lvalue.) +A character range may be specified with a hyphen, so C<tr/A-J/0-9/> +does the same replacement as C<tr/ACEGIBDFHJ/0246813579/>. For B<sed> devotees, C<y> is provided as a synonym for C<tr>. If the SEARCHLIST is delimited by bracketing quotes, the REPLACEMENTLIST has its own pair of quotes, which may or may not be bracketing quotes, -e.g., C<tr[A-Z][a-z]> or C<tr(+-*/)/ABCD/>. +e.g., C<tr[A-Z][a-z]> or C<tr(+\-*/)/ABCD/>. Options: @@ -977,7 +981,7 @@ by SEARCHLIST not found in REPLACEMENTLIST are deleted. (Note that this is slightly more flexible than the behavior of some B<tr> programs, which delete anything they find in the SEARCHLIST, period.) If the C</s> modifier is specified, sequences of characters that were -translated to the same character are squashed down to a single instance of the +transliterated to the same character are squashed down to a single instance of the character. If the C</d> modifier is used, the REPLACEMENTLIST is always interpreted @@ -1006,13 +1010,13 @@ Examples: tr [\200-\377] [\000-\177]; # delete 8th bit -If multiple translations are given for a character, only the first one is used: +If multiple transliterations are given for a character, only the first one is used: tr/AAA/XYZ/ -will translate any A to X. +will transliterate any A to X. -Note that because the translation table is built at compile time, neither +Note that because the transliteration table is built at compile time, neither the SEARCHLIST nor the REPLACEMENTLIST are subjected to double quote interpolation. That means that if you want to use variables, you must use an eval(): @@ -1213,6 +1217,34 @@ the compiler will precompute the number that expression represents so that the interpreter won't have to. +=head2 Bitwise String Operators + +Bitstrings of any size may be manipulated by the bitwise operators +(C<~ | & ^>). + +If the operands to a binary bitwise op are strings of different sizes, +B<or> and B<xor> ops will act as if the shorter operand had additional +zero bits on the right, while the B<and> op will act as if the longer +operand were truncated to the length of the shorter. + + # ASCII-based examples + print "j p \n" ^ " a h"; # prints "JAPH\n" + print "JA" | " ph\n"; # prints "japh\n" + print "japh\nJunk" & '_____'; # prints "JAPH\n"; + print 'p N$' ^ " E<H\n"; # prints "Perl\n"; + +If you are intending to manipulate bitstrings, you should be certain that +you're supplying bitstrings: If an operand is a number, that will imply +a B<numeric> bitwise operation. You may explicitly show which type of +operation you intend by using C<""> or C<0+>, as in the examples below. + + $foo = 150 | 105 ; # yields 255 (0x96 | 0x69 is 0xFF) + $foo = '150' | 105 ; # yields 255 + $foo = 150 | '105'; # yields 255 + $foo = '150' | '105'; # yields string '155' (under ASCII) + + $baz = 0+$foo & 0+$bar; # both ops explicitly numeric + $biz = "$foo" ^ "$bar"; # both ops explicitly stringy =head2 Integer Arithmetic @@ -1230,7 +1262,8 @@ countermand this by saying which lasts until the end of that BLOCK. The bitwise operators ("&", "|", "^", "~", "<<", and ">>") always -produce integral results. However, C<use integer> still has meaning +produce integral results. (But see also L<Bitwise String Operators>.) +However, C<use integer> still has meaning for them. By default, their results are interpreted as unsigned integers. However, if C<use integer> is in effect, their results are interpreted as signed integers. For example, C<~0> usually evaluates diff --git a/pod/perlstyle.pod b/pod/perlstyle.pod index bfc94a9eaa..5ad73cfafe 100644 --- a/pod/perlstyle.pod +++ b/pod/perlstyle.pod @@ -250,7 +250,7 @@ sufficient example: =item * -Line up your translations when it makes sense: +Line up your transliterations when it makes sense: tr [abc] [xyz]; diff --git a/pod/perlsyn.pod b/pod/perlsyn.pod index 5274d28383..205be7d97a 100644 --- a/pod/perlsyn.pod +++ b/pod/perlsyn.pod @@ -79,14 +79,16 @@ modifiers are: unless EXPR while EXPR until EXPR + foreach EXPR The C<if> and C<unless> modifiers have the expected semantics, -presuming you're a speaker of English. The C<while> and C<until> -modifiers also have the usual "while loop" semantics (conditional -evaluated first), except when applied to a do-BLOCK (or to the -now-deprecated do-SUBROUTINE statement), in which case the block -executes once before the conditional is evaluated. This is so that you -can write loops like: +presuming you're a speaker of English. The C<foreach> modifier is an +iterator: For each value in EXPR, it aliases $_ to the value and +executes the statement. The C<while> and C<until> modifiers have the +usual "while loop" semantics (conditional evaluated first), except +when applied to a do-BLOCK (or to the now-deprecated do-SUBROUTINE +statement), in which case the block executes once before the +conditional is evaluated. This is so that you can write loops like: do { $line = <STDIN>; diff --git a/pod/perlxs.pod b/pod/perlxs.pod index 07abd10564..d065b94425 100644 --- a/pod/perlxs.pod +++ b/pod/perlxs.pod @@ -558,7 +558,7 @@ Perl as a single list. bool_t status; PPCODE: status = rpcb_gettime( host, &timep ); - EXTEND(sp, 2); + EXTEND(SP, 2); PUSHs(sv_2mortal(newSViv(status))); PUSHs(sv_2mortal(newSViv(timep))); @@ -573,7 +573,7 @@ directive. The EXTEND() macro is used to make room on the argument stack for 2 return values. The PPCODE: directive causes the -B<xsubpp> compiler to create a stack pointer called C<sp>, and it +B<xsubpp> compiler to create a stack pointer available as C<SP>, and it is this pointer which is being used in the EXTEND() macro. The values are then pushed onto the stack with the PUSHs() macro. |