http://www.perlmonks.org?node_id=199684


in reply to Perl Humor

The best is this 3 questinos, making fun with C and ROMAN Numbers:

------------------------------------------
How do I convert a string to a number?

Use this atoi function:

sub atoi { my $t; foreach my $d (split(//, shift())) { $t = $t * 10 + $d; } } $number = atoi("123");
------------------------------------------
How do I convert a number to a string?

Use sprintf:

$string = sprintf("%f", 123.45);

------------------------------------------
How can I tell if a string is a number?

The simplest method is:

if ($string == "$string") { # It is a number }
Note the use of the == operator to compare the string to its numeric value. However, this approach is dangerous because the $string might contain arbitrary code such as @{[system "rm -rf /"]} which would be executed as a result of the interpolation process. For safety, use this regular expression:
if ($var =~ /(?=.)M{0,3}(C[MD]|D?C{0,3})(X[CL]|L?X{0,3})(I[XV]|V?I{0 +,3})/) { print "$var contains a number.\b"; }

Graciliano M. P.
"The creativity is the expression of the liberty".

Edit kudra, 2002-09-21 Fixed literal brackets

Replies are listed 'Best First'.
Re^2: Perl Humor
by Aristotle (Chancellor) on Sep 21, 2002 at 09:06 UTC
    the $string might contain arbitrary code such as @{[system "rm -rf /"]} which would be executed as a result of the interpolation process.
    Heh, that's mocking shell, not C, and really caught me off guard for a moment before the d'uh bells went off.

    Makeshifts last the longest.