develooper Front page | perl.perl5.porters | Postings from May 2003

[PATCH] [perl #8634] complete patch for updates to C<..> docs

Thread Next
From:
Casey West
Date:
May 9, 2003 02:23
Subject:
[PATCH] [perl #8634] complete patch for updates to C<..> docs
Message ID:
20030509092750.GB49820@geeknest.com
http://rt.perl.org/rt2/Ticket/Display.html?id=8634

I've read through the thread and complex maze of patches proposed to
resolve this bug.  The following is what I've come up with.

  Casey West

-- 
Shooting yourself in the foot with APL 
@#&^$%&%^ foot 

--- perl-current.orig/pod/perlop.pod    Mon Apr 28 13:44:51 2003
+++ perl-current/pod/perlop.pod Fri May  9 05:19:29 2003
@@ -458,15 +458,29 @@
 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
+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 or
+C<$.> is set to a floating point value without 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
-    s/^/> / if (/^$/ .. eof());        # quote body
+    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, short for
+                               #   ... if (/^$/ .. $. == eof());
 
     # parse mail messages
     while (<>) {
@@ -474,7 +488,7 @@
         $in_body   = /^$/ .. eof();
        # do something based on those
     } continue {
-       close ARGV if eof;              # reset $. each file
+        close ARGV if eof;             # reset $. each file
     }
 
 As a list operator:
@@ -501,6 +515,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
 

Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About