X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlsyn.pod;h=6d820b6882e8e9f30a0bf3833aed65789b9ed40a;hb=47223a367d95f4dc59ba3d4c168a2648263556ab;hp=484af52121f5e24be177ef5f60fea2157dab39ed;hpb=9f1b1f2d9ab55954ee07a14c4ab04bd3dd1f99d5;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlsyn.pod b/pod/perlsyn.pod index 484af52..6d820b6 100644 --- a/pod/perlsyn.pod +++ b/pod/perlsyn.pod @@ -53,8 +53,8 @@ subroutine without defining it by saying C, thus: sub myname; $me = myname $0 or die "can't get myname"; -Note that my() functions as a list operator, not as a unary operator; so -be careful to use C instead of C<||> in this case. However, if +Note that myname() functions as a list operator, not as a unary operator; +so be careful to use C instead of C<||> in this case. However, if you were to declare the subroutine as C, then C would function as a unary operator, so either C or C<||> would work. @@ -172,7 +172,7 @@ If the LABEL is omitted, the loop control statement refers to the innermost enclosing loop. This may include dynamically looking back your call-stack at run time to find the LABEL. Such desperate behavior triggers a warning if you use the C -praga or the B<-w> flag. +pragma or the B<-w> flag. Unlike a C statement, a C statement never implicitly localises any variables. @@ -324,7 +324,7 @@ Examples: for (@ary) { s/foo/bar/ } - foreach my $elem (@elements) { + for my $elem (@elements) { $elem *= 2; } @@ -353,8 +353,8 @@ Here's how a C programmer might code up a particular algorithm in Perl: Whereas here's how a Perl programmer more comfortable with the idiom might do it: - OUTER: foreach my $wid (@ary1) { - INNER: foreach my $jet (@ary2) { + OUTER: for my $wid (@ary1) { + INNER: for my $jet (@ary2) { next OUTER if $wid > $jet; $wid += $jet; } @@ -483,7 +483,7 @@ Or Or if you are certainly that all the C<&&> clauses are true, you can use something like this, which "switches" on the value of the -C envariable. +C environment variable. #!/usr/bin/perl # pick out jargon file page based on browser @@ -525,7 +525,7 @@ The C-EXPR form expects a label name, whose scope will be resolved dynamically. This allows for computed Cs per FORTRAN, but isn't necessarily recommended if you're optimizing for maintainability: - goto ("FOO", "BAR", "GLARCH")[$i]; + goto(("FOO", "BAR", "GLARCH")[$i]); The C-&NAME form is highly magical, and substitutes a call to the named subroutine for the currently running subroutine. This is used by @@ -598,6 +598,11 @@ C with C<$1> being the line number for the next line, and C<$2> being the optional filename (specified within quotes). +There is a fairly obvious gotcha included with the line directive: +Debuggers and profilers will only show the last source line to appear +at a particular line number in a given file. Care should be taken not +to cause line number collisions in code you'd like to debug later. + Here are some examples that you should be able to type into your command shell: