summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCasey West <casey@geeknest.com>2003-05-09 06:30:13 -0400
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>2003-05-11 19:13:00 +0000
commitdf5f811689103091b7cb304529446ab7fbcb73af (patch)
tree4acc5106088ba232cd23462693d0a1b9d8404a25
parentbbac04ed8cd43991be4ad2af52ee5af30eb4a52c (diff)
downloadperl-df5f811689103091b7cb304529446ab7fbcb73af.tar.gz
Re: [PATCH] [perl #8636] [perl #8634] Both patches together for perlop
Message-ID: <20030509143013.GM49820@geeknest.com> p4raw-id: //depot/perl@19493
-rw-r--r--pod/perlop.pod40
1 files changed, 32 insertions, 8 deletions
diff --git a/pod/perlop.pod b/pod/perlop.pod
index bfbb048b09..6bc66d219e 100644
--- a/pod/perlop.pod
+++ b/pod/perlop.pod
@@ -458,23 +458,42 @@ sequence number in a range has the string "E0" appended to it, which
doesn't affect its numeric value, but gives you something to search
for if you want to exclude the endpoint. You can exclude the
beginning point by waiting for the sequence number to be greater
-than 1. If either operand of scalar ".." is a constant expression,
-that operand is implicitly compared to the C<$.> variable, the
-current line number. Examples:
+than 1.
+
+If either operand of scalar ".." is a constant expression,
+that operand is considered true if it is equal (C<==>) to the current
+input line number (the C<$.> variable).
+
+To be pedantic, the comparison is actually C<int(EXPR) == int(EXPR)>,
+but that is only an issue if you use a floating point expression; when
+implicitly using C<$.> as described in the previous paragraph, the
+comparison is C<int(EXPR) == int($.)> which is only an issue when C<$.>
+is set to a floating point value and you are not reading from a file.
+Furthermore, C<"span" .. "spat"> or C<2.18 .. 3.14> will not do what
+you want in scalar context because each of the operands are evaluated
+using their integer representation.
+
+Examples:
As a scalar operator:
- if (101 .. 200) { print; } # print 2nd hundred lines
- next line if (1 .. /^$/); # skip header lines
+ if (101 .. 200) { print; } # print 2nd hundred lines, short for
+ # if ($. == 101 .. $. == 200) ...
+ next line if (1 .. /^$/); # skip header lines, short for
+ # ... if ($. == 1 .. /^$/);
s/^/> / if (/^$/ .. eof()); # quote body
# parse mail messages
while (<>) {
$in_header = 1 .. /^$/;
- $in_body = /^$/ .. eof();
- # do something based on those
+ $in_body = /^$/ .. eof;
+ if ($in_header) {
+ # ...
+ } else { # in body
+ # ...
+ }
} continue {
- close ARGV if eof; # reset $. each file
+ close ARGV if eof; # reset $. each file
}
As a list operator:
@@ -502,6 +521,11 @@ in the sequence that the magical increment would produce, the sequence
goes until the next value would be longer than the final value
specified.
+Because each operand is evaluated in integer form, C<2.18 .. 3.14> will
+return two elements in list context.
+
+ @list = (2.18 .. 3.14); # same as @list = (2 .. 3);
+
=head2 Conditional Operator
Ternary "?:" is the conditional operator, just as in C. It works much