Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

(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")

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://118789]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (3)
As of 2018-10-21 16:17 GMT
Find Nodes?
    Voting Booth?
    When I need money for a bigger acquisition, I usually ...

    Results (119 votes). Check out past polls.