in reply to Re: Misreading m// documentation
in thread Misreading m// documentation
hmm, strange in 5.10 this uncommon feature seems to be buggy:
$ perl if ( '_$x_' =~ '$x') { print "match 1" } if ( '_$x_' =~ /\$x/){ print "match 2" } __DATA__ match 2
while B::Deparse claims both lines to be identical ...
perl -MO=Deparse if ( '_$x_' =~ '$x') { print "match 1" } if ( '_$x_' =~ /\$x/){ print "match 2" } __DATA__ if ('_$x_' =~ /\$x/) { print 'match 1'; } if ('_$x_' =~ /\$x/) { print 'match 2'; } __DATA__ - syntax OK
... does B::Concise show that the interpolation is not inhibited
perl -MO=Concise if ( '_$x_' =~ '$x') { print "match 1" } if ( '_$x_' =~ /\$x/){ print "match 2" } __DATA__ g <@> leave[1 ref] vKP/REFC ->(end) 1 <0> enter ->2 2 <;> nextstate(main 3 -:1) v:{ ->3 - <1> null vKP/1 ->9 5 <|> and(other->6) vK/1 ->9 4 </> match(/"$x"/) sKS/RTIME ->5 <-- INTERPOLA +TED 3 <$> const[PV "_$x_"] s ->4 - <@> scope vK ->- - <0> ex-nextstate v ->6 8 <@> print vK ->9 6 <0> pushmark s ->7 7 <$> const[PV "match 1"] s ->8 9 <;> nextstate(main 5 -:2) v:{ ->a - <1> null vKP/1 ->g c <|> and(other->d) vK/1 ->g b </> match(/"\\$x"/) sKS/RTIME ->c <-- NO INTERP +OLATION a <$> const[PV "_$x_"] s ->b - <@> scope vK ->- - <0> ex-nextstate v ->d f <@> print vK ->g d <0> pushmark s ->e e <$> const[PV "match 2"] s ->f - syntax OK
added marks to highlight differences.
Can someone please check for other perl versions?
Cheers Rolf
( addicted to the Perl Programming Language)
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Misreading m// documentation (BUG?)
by ikegami (Patriarch) on Mar 12, 2014 at 15:06 UTC | |
|
Re^3: Misreading m// documentation (BUG?)
by Anonymous Monk on Mar 12, 2014 at 12:16 UTC | |
by LanX (Saint) on Mar 12, 2014 at 13:48 UTC | |
|
Re^3: Misreading m// documentation (BUG?)
by Anonymous Monk on Mar 12, 2014 at 12:00 UTC | |
by LanX (Saint) on Mar 12, 2014 at 12:03 UTC | |
by Anonymous Monk on Mar 12, 2014 at 12:07 UTC |