It occurred to me that you could remove ALL of the quotation marks, by carrying the idea further ...
How it works ...sub I {$O=$_[0]} sub put {$_[0]} sub the {$_[0]} sub J {'J'.$_[0]} sub in {$_[0]} sub RAPH {82.65.80.72} sub remove {$O=~s~$_[0]~~;print$O."\n"} sub R {'R'} I put the J in RAPH and remove the R
|
First, delineating the order of evaluation:
Expression: (I (put (the (J (in (RAPH)))))) and (remove (the (R)))
Subroutines "put", "the" and "in" just return their single argument, so
they are all effectively NOOPs. This reduces the expression to:
Expression: (I ( ( (J ( (RAPH)))))) and (remove ( (R)))
= Expression: (I (J RAPH)) and (remove R)
Now, subroutine "RAPH" returns "RAPH", and subroutine "J" prepends a 'J' to
the argument passed to it. So (J RAPH) equates to "JRAPH":
Expression: (I "JRAPH") and (remove R)
Then, subroutine "I" assigns its argument to $O (the variable is an
uppercase 'o', for "obscure:, "obtuse", and "obfuscated" :-). Finally, the
subroutine "remove" takes a single argument (in this case 'R', which was
returned from subroutine "R"), removes it from the variable $O, and prints
the result.
Result: [$x set to "JRAPH"] and [$x =~ s/R//, and then print $x]
Note that it also causes remove() to actually perform the remove. |
In reply to Re^3: I put the J in JAPH
by liverpole
in thread I put the J in JAPH
by muba
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |