XP is just a number 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?
and all is quiet...

How do I use this? | Other CB clients
Other Users?