There's more than one way to do things PerlMonks

### Re: Perl Humor

by gmpassos (Priest)
 on Sep 21, 2002 at 01:23 UTC ( #199684=note: print w/replies, xml ) Need Help??

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.

Create A New User
Node Status?
node history
Node Type: note [id://199684]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (5)
As of 2018-04-24 16:42 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
My travels bear the most uncanny semblance to ...

Results (86 votes). Check out past polls.

Notices?