This was actually my first instinct too, here was the output I got from testing with B::Concise.
stvn% perl -MO=Concise -e '$x++'
5 <@> leave[1 ref] vKP/REFC ->(end)
1 <0> enter ->2
2 <;> nextstate(main 1 -e:1) v ->3
4 <1> preinc[t2] vK/1 ->5
- <1> ex-rv2sv sKRM/1 ->4
3 <#> gvsv[*x] s ->4
-e syntax OK
stvn% perl -MO=Concise -e '$x += 1'
6 <@> leave[1 ref] vKP/REFC ->(end)
1 <0> enter ->2
2 <;> nextstate(main 1 -e:1) v ->3
5 <2> add[t2] vKS/2 ->6
- <1> ex-rv2sv sKRM/1 ->4
3 <#> gvsv[*x] s ->4
4 <$> const[IV 1] s ->5
-e syntax OK
stvn% perl -MO=Concise -e '$x = $x + 1'
8 <@> leave[1 ref] vKP/REFC ->(end)
1 <0> enter ->2
2 <;> nextstate(main 1 -e:1) v ->3
7 <2> sassign vKS/2 ->8
5 <2> add[t3] sK/2 ->6
- <1> ex-rv2sv sK/1 ->4
3 <#> gvsv[*x] s ->4
4 <$> const[IV 1] s ->5
- <1> ex-rv2sv sKRM*/1 ->7
6 <#> gvsv[*x] s ->7
-e syntax OK
You can see that the x += 1 and x = x + 1 are similar, but not enough to call equivalent. Besides I am not sure that opcode equivalence would actually work since perl performs optimizations on the opcode tree during compilation which you would not want to include in your comparisons.
-
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.
|