I think (but hope wiser heads will correct me if I err) that zwon's case, above rests on the use of non-interpolating quotes around \$number.

Compare to this demo (which can be written much more compactly but was deliberately written in this tedious manner for utmost clarity):

#!/usr/bin/perl -lw use strict; my $number0 = '1.00'; #zwon's version with NON-interpolating quotes my $number1 = 1.00; my $number2 = 1.393939393939393939393939393939393939393939393939393939 +3939393939; # exceeds length for FP precision my $number3 = 123456789.123e5; my $number4 = 123e-5; my $number5 = '123e-5' ; print "\$number0, $number0, contains a period" if $number0 =~ /\./; print "\$number0, $number0, is an Integer" if $number0 == int($number0 +); print "\$number1, $number1, contains a period" if $number1 =~ /\./; print "\$number1, $number1, is an Integer" if $number1 == int($number1 +); print "\$number2, $number2, contains a period" if $number2 =~ /\./; print "\$number2, $number2, is an Integer" if $number2 == int($number2 +); print "\$number3, $number3, contains a period" if $number3 =~ /\./; print "\$number3, $number3, is an Integer" if $number3 == int($number3 +); if ( $number4 =~ /\./ ) { # alt coding of the previous solely to + allow the else print "\$number4, $number4, contains a period"; } else { print "\tNo period in $number4"; } print "\$number4, $number4, is an Integer" if $number4 == int($number4 +); if ( $number5 =~ /\./ ) { print "\$number5, $number5, contains a period"; } else { print "\tNo period in $number5"; } print "\$number5, $number5, is an Integer" if $number5 == int($number5 +); print "\nNext, using ww's regex"; print "\n\$number0: $number0\n\$number1: $number1\n\$number2: $number2 +\n\$number3: $number3\n\$number4: $number4\n"; # CASE 0 $number0 =~ /\d+(\.)\d+/; if ($1) { print "\$number0 contains a decimal point"; } $number0 =~ s/(\d+)(\.)(\d+)/$1/; print "Integer value, if desired: $number0"; # CASE 1 $number1 =~ /\d+(\.)\d+/; if ($1) { print "\$number1 contains a decimal point"; } $number1 =~ s/(\d+)(\.)(\d+)/$1/; print "Integer value of \$number1, if desired: $number1"; # CASE 2 $number2 =~ /\d+(\.)\d+/; if ($1) { print "\$number2 contains a decimal point"; } $number2 =~ s/(\d+)(\.)(\d+)/$1/; print "Integer value of \$number2, if desired: $number2"; # CASE 3 $number3 =~ /\d+(\.)\d+/; if ($1) { print "\$number3 contains a decimal point"; } $number3 =~ s/(\d+)(\.)(\d+)/$1/; print "Integer value of \$number3, if desired: $number3"; # CASE 4 $number4 =~ /(\.)/; # Special case: Scientific notation if ($1) { print "\$number4 contains a decimal point"; } $number4 =~ s/(\d+)(\.)(\d+)/$1/; print "Integer value of \$number4, if desired: $number4"; # CASE 5 $number5 =~ /(\.)/; # Special case, as above if ($1) { print "\$number5 contains a decimal point"; } else { print "NO decimal point in \$number5, $number5"; } $number5 =~ s/(\d=)(\.)(\d+)/$1/; print "Integer value of \$number5, if desired: " . int($number5); # + using int(); otherwise prints the string literal

Output:

$number0, 1.00, contains a period $number0, 1.00, is an Integer # --> Note 1 $number1, 1, is an Integer $number2, 1.39393939393939, contains a period $number3, 12345678912300, is an Integer $number4, 0.00123, contains a period No period in 123e-5 Next, using ww's regex $number0: 1.00 $number1: 1 $number2: 1.39393939393939 $number3: 12345678912300 $number4: 0.00123 $number0 contains a decimal point Integer value, if desired: 1 $number1 contains a decimal point Integer value of $number1, if desired: 1 $number2 contains a decimal point Integer value of $number2, if desired: 1 $number3 contains a decimal point Integer value of $number3, if desired: 12345678912300 $number4 contains a decimal point Integer value of $number4, if desired: 0 NO decimal point in $number5, 123e-5 Integer value of $number5, if desired: 0
--> Note 1: Arguable. Integer is defined "n : any of the natural numbers (positive or negative) or zero syn: whole number" and "whole number" is defined "(Math.), a number which is not a fraction or mixed number; an integer."

Update: revised phrasing of the parenthetical comment about the tedious (kindergarten) code.


In reply to Re^2: How to determine whether a number has a decimal component? by ww
in thread How to determine whether a number has a decimal component? by Xenofur

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.