Visit Our UNIX and Linux User Community


Perl code to differentiate numeric and non-numeric input


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Perl code to differentiate numeric and non-numeric input
# 1  
Old 03-02-2007
Perl code to differentiate numeric and non-numeric input

Hi All,

Is there any code in Perl which can differentiate between numeric and non-numeric input?
# 2  
Old 03-03-2007
The most common way:
Use regular expression.

Alternative (probably a better) way:
Code:
cbkihong@cbkihong:~$ perl -MScalar::Util -e 
'print(Scalar::Util::looks_like_number("-8.90e10")?"Looks like a number.\n":"Not a number.\n")'
Looks like a number.
cbkihong@cbkihong:~$ perl -MScalar::Util -e 
'print(Scalar::Util::looks_like_number("89d")?"Looks like a number.\n":"Not a number.\n")'
Not a number.

# 3  
Old 03-05-2007
Hi ,

Below is my Perl code using regular expression. but it doesn;t seem to work.
Can anybody tell me what's wrong with my code ?

Code:
#!/usr/bin/perl

print "Enter a term: ";
$Input = <STDIN>;
print "\n";

if ($input == [0-9]) {
print "$Input is numeric\n";
}
else {
print "$Input is non-numeric\n";
}

# 4  
Old 03-05-2007
Code:
#!/usr/bin/perl

print "Enter a term: ";
$input = <STDIN>;
print "\n";

if ($input =~ /^[0-9]+$/) {
print "$Input is numeric\n";
}
else {
print "$Input is non-numeric\n";
}

# 5  
Old 03-05-2007
Quote:
Originally Posted by anbu23
Code:
#!/usr/bin/perl

print "Enter a term: ";
$input = <STDIN>;
print "\n";

if ($input =~ /^[0-9]+$/) {
print "$Input is numeric\n";
}
else {
print "$Input is non-numeric\n";
}

i don't intend to flame you, but wish to point out a few deficiencies in your code - it doesn't consider negative numbers, and real numbers, in current form, it is identifying natural numbers, along with zero
# 6  
Old 03-05-2007
this one identifies integers, real numbers, and negative numbers as well:
Code:
#!/usr/bin/perl
use strict;

print "Enter a number: ";
chomp (my $num = <STDIN>);

if ($num =~ m/^-?\d+$/) {
    print "An integer \n";
}
elsif ($num =~ m/^-?\d+[\/|\.]\d+$/) {
    print "real number! \n";
}
else {
    print "not a number \n";
}

# 7  
Old 03-05-2007
Quote:
Originally Posted by Yogesh Sawant
i don't intend to flame you, but wish to point out a few deficiencies in your code - it doesn't consider negative numbers, and real numbers, in current form, it is identifying natural numbers, along with zero
Code:
#!/usr/bin/perl

print "Enter a term: ";
$input = <STDIN>;
print "\n";

if ( $input =~ /^[\+-]*[0-9]*\.*[0-9]*$/ && $input !~ /^[\. ]*$/  ) {
print "$Input is numeric\n";
}
else {
print "$Input is non-numeric\n";
}


Last edited by anbu23; 03-05-2007 at 04:57 AM..

Previous Thread | Next Thread
Test Your Knowledge in Computers #118
Difficulty: Easy
A Unix-like OS is the one that works like Unix systems, however, Unix-like system do not necessarily conform to the Single UNIX Specification (SUS) or POSIX (Portable Operating System Interface) standards.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Check whether input is numeric

Hello there, find below for my code first: $pdp_asaba=`cat /tmp/temp_total | grep asaba | sed 's/*//g'` if ]] then pdp_asaba=0 fi $pdp_abuja=`cat /tmp/temp_total | grep abuja | sed 's/*//g'` if ]] then pdp_abuja=0 fi $pdp_ojota=`cat /tmp/temp_total | grep ojota | sed 's/*//g'` if ... (3 Replies)
Discussion started by: infinitydon
3 Replies

2. Windows & DOS: Issues & Discussions

Put the numeric validation in user input when value is 5.1.2.3

Hi I need to put the validation in batch script when user will enter the build number it should be numeric.I can put the validation for numeric values but there is .(dot) in number so it would not take it as numeric. Is it possible we can store it in variable and remove the .(dot) from the... (1 Reply)
Discussion started by: anuragpgtgerman
1 Replies

3. Shell Programming and Scripting

String variable to numeric conversion in perl

Hi guys I am having this strange issue.Well my requirement is like below Compare two values between flat file and oracle DB Via perl script I am easily getting the rowcount Now I connect sql plus via perl and the column value that returns is string my $sqlplus_settings = ''; my... (7 Replies)
Discussion started by: Pratik4891
7 Replies

4. Programming

Perl : Numeric Range Pattern Matching

hi Experts just wondering if you can help me check a number between a specific range if i have an ip address , how can i say the valid number for ip between 1 to 254 something like this if ($ip ) =~ /.../ { } what the pattern i need to type thanks (3 Replies)
Discussion started by: doubando
3 Replies

5. Shell Programming and Scripting

Perl script to sort data on second numeric field

Hi, I'm a learner of PERL programming. I've a input file with the below data: SWAT_5, 1703, 2010-09-21 SWAT_6, 2345, 2010-09-21 SWAT_7, 1792, 2010-09-21 SWAT_8, 1662, 2010-09-21 SWAT_9, 1888, 2010-09-21 VXHARP_1, 171, 2010-09-21 I need to sort this data based on the second... (6 Replies)
Discussion started by: ganapati
6 Replies

6. UNIX for Dummies Questions & Answers

Find and Replace random numeric value with non-numeric value

Can someone tell me how to change the first column in a very large 17k line file from a random 10 digit numeric value to a non numeric value. The format of lines in the file is: 1702938475,SNU022,201004 the first 10 numbers always begin with 170 (6 Replies)
Discussion started by: Bahf1s
6 Replies

7. Shell Programming and Scripting

Checking input for being numeric and integers

Hi, I'm trying to check to see that the arguments given to my script are both numeric and positive integers. I'm using tcsh. I figured out the positive part, but I am having trouble with the arguments being numeric and integers I have no idea where to get started with the checking them actually... (1 Reply)
Discussion started by: mistykz
1 Replies

8. Shell Programming and Scripting

Check for Numeric output in Perl

Hi All, I would like to convert my below csh script to Perl. Can any expert help ? # To check for numeric input set tested1 = `echo "$tested"| awk '/^+$/'`; # To remove un-neccessary zeros set tested2 = `echo "$tested"|awk '{print $0+0}'`; (3 Replies)
Discussion started by: Raynon
3 Replies

9. Shell Programming and Scripting

validating a input file for numeric and character

i have a input file like this 001|rahim|bajaj|20090102 while reading the file i need to check whether the first column is a number second column is a name is there any methodology to check for the same thanks in advance (2 Replies)
Discussion started by: trichyselva
2 Replies

10. Shell Programming and Scripting

How to check for a valid numeric input

Hi Folks, I'm using bash script. I would like to check whether input is a number or not.(Only positive numbers).. if space or non numeric is entered, it should say "invalid input". pls help.. thanks in adv. Br/// Vijay. (1 Reply)
Discussion started by: Vijayakumarpc
1 Replies

Featured Tech Videos