"be consistent" PerlMonks

### (tye)Re: Extract numbers in multiple bases

by tye (Sage)
 on Oct 15, 2001 at 03:32 UTC ( #118789=note: print w/replies, xml ) Need Help??

in reply to Extract numbers in multiple bases

```sub isNumber {
local( \$_ )= @_;
my( \$ok, \$val, \$base );
if(  s/h\$//i  &&  s/^/0x/
||  m/^0x/  ) {
\$ok= m/^0x[\da-f]+\$/i;
\$val= hex(\$_);
\$base= 16;
} elsif(  s/o\$//i  ) {
\$ok= m/^[0-7]+\$/;
\$val= oct(\$_);
\$base= 8;
} else {
my \$warn;
local( \$SIG{__WARN__} )= sub {
\$warn= \$_[0];
};
local( \$^W )= 1;
\$val= 0 + \$_;
\$ok= ! \$warn;
\$base= 10;
}
\$_[1]= \$val;
\$_[2]= \$base;
return \$ok;
}
my \$num= <STDIN>;
my \$val;
if(  isNumber( \$num, \$val, \$base )   ) {
print "Your number's value is \$val in base \$base.\n";
} else {
print "Your number is invalid but might be close to \$val in base \$
+base.\n";
}

Note that I didn't treat a leading zero as octal and I'm a bit inconsistant with how much whitespace I'll ignore.

Updated: To return the base.

- tye (but my friends call me "Tye")

Create A New User
Node Status?
node history
Node Type: note [id://118789]
help
Chatterbox?
 [erix]: my "Jeschwätz von jestern" = "Geschwätz von gestern" = "my babbling of yesterday" [marto]: thanks erix

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (13)
As of 2018-01-19 13:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
How did you see in the new year?

Results (218 votes). Check out past polls.

Notices?