Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

(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 all is quiet...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (8)
As of 2018-07-18 07:14 GMT
Find Nodes?
    Voting Booth?
    It has been suggested to rename Perl 6 in order to boost its marketing potential. Which name would you prefer?

    Results (383 votes). Check out past polls.