I was working on some obfuscated code, and came across a problem. Well, first what I was trying to do was to do something 12 times (i.e. for(1 .. 12)). I tried this:
for(++$....$.++.$.)
{print "$_\n"}
And to my surprise it printed 2 through 12. Before I move on, I'll explain what I think should happen. To do this, I'll clean up the formatting a bit:
for(++$. .. $.++ . $.) #note before I had used ... instead of ..
Now, let's examine those values:
++$. = 1
$.++ . $. = 12 #the concatenation of 1 and 2.
So, I tried to take it apart and see which individual element was causing the problem, and eventually I came up with this:
for(++$....$..$.) #note took out the second ++
Now it prints 1 through 11, exactly what I expect. What I think is happening is that the second ++ is effecting the value of
$. somehow, before it's supposed to.
This is really baffaling me, so any help is appreciated,
thanks
The 15 year old, freshman programmer,
Stephen Rawls
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.