In perl.git, the branch blead has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/a13ded5516803d9baff49d9177619361dcc9d083?hp=92f9d56c664ae354430f66e7a870fb3f4b0f44a3>

- Log -----------------------------------------------------------------
commit a13ded5516803d9baff49d9177619361dcc9d083
Author: brian d foy <brian.d....@gmail.com>
Date:   Wed Oct 13 02:40:49 2010 -0500

    perlfaq4: use given() in number/float/integer answer
    
        How do I determine whether a scalar is a number/whole/integer/float?
    
        David Canzi also adjusted some of the regexes. The
        real number and decimal number tests are really the
        same thing, and we don't have to capture in the float
        case.
-----------------------------------------------------------------------

Summary of changes:
 pod/perlfaq4.pod |   34 +++++++++++++++++++++-------------
 1 files changed, 21 insertions(+), 13 deletions(-)

diff --git a/pod/perlfaq4.pod b/pod/perlfaq4.pod
index e972d77..139885b 100644
--- a/pod/perlfaq4.pod
+++ b/pod/perlfaq4.pod
@@ -2506,31 +2506,39 @@ some gotchas.  See the section on Regular Expressions.
 =head2 How do I determine whether a scalar is a number/whole/integer/float?
 
 Assuming that you don't care about IEEE notations like "NaN" or
-"Infinity", you probably just want to use a regular expression.
+"Infinity", you probably just want to use a regular expression:
 
-       if (/\D/)             { print "has nondigits\n" }
-       if (/^\d+\z/)         { print "is a whole number\n" }
-       if (/^-?\d+\z/)       { print "is an integer\n" }
-       if (/^[+-]?\d+\z/)    { print "is a +/- integer\n" }
-       if (/^-?\d+\.?\d*\z/) { print "is a real number\n" }
-       if (/^-?(?:\d+(?:\.\d*)?|\.\d+)\z/) { print "is a decimal number\n" }
-       if (/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?\z/)
-                       { print "a C float\n" }
+       use 5.010;
+       
+       given( $number ) {
+               when( /\D/ )             
+                       { say "\thas nondigits"; continue }
+               when( /^\d+\z/ )         
+                       { say "\tis a whole number"; continue }
+               when( /^-?\d+\z/ )       
+                       { say "\tis an integer"; continue }
+               when( /^[+-]?\d+\z/ )    
+                       { say "\tis a +/- integer"; continue }
+               when( /^-?(?:\d+\.?|\.\d)\d*\z/ ) 
+                       { say "\tis a real number"; continue }
+               when( /^[+-]?(?=\.?\d)\d*\.?\d*(?:e[+-]?\d+)?\z/i)
+                       { say "\tis a C float" }
+               }
 
 There are also some commonly used modules for the task.
 L<Scalar::Util> (distributed with 5.8) provides access to perl's
 internal function C<looks_like_number> for determining whether a
-variable looks like a number.  L<Data::Types> exports functions that
+variable looks like a number. L<Data::Types> exports functions that
 validate data types using both the above and other regular
 expressions. Thirdly, there is C<Regexp::Common> which has regular
 expressions to match various types of numbers. Those three modules are
 available from the CPAN.
 
 If you're on a POSIX system, Perl supports the C<POSIX::strtod>
-function.  Its semantics are somewhat cumbersome, so here's a
-C<getnum> wrapper function for more convenient access.  This function
+function. Its semantics are somewhat cumbersome, so here's a
+C<getnum> wrapper function for more convenient access. This function
 takes a string and returns the number it found, or C<undef> for input
-that isn't a C float.  The C<is_numeric> function is a front end to
+that isn't a C float. The C<is_numeric> function is a front end to
 C<getnum> if you just want to say, "Is this a float?"
 
        sub getnum {

--
Perl5 Master Repository

Reply via email to