Thanks, Dave.
I was aware that OPs do kind of gotos to next-OPs (the ->label at the end of each line).
But it didn't seem logical that the -src option could be offered if B::Concise wasn't respecting the order.*
The solution is that the source lines they are not in order, but the line numbers are still reliable:
D:\tmp>type tst_b_xref3.pl
unless ($var1) {
$var2++;
}
else {
$var3++;
}
(Win Activestate 5.24)
D:\tmp>perl -MO=Concise,-src tst_b_xref3.pl|find "var"
tst_b_xref3.pl syntax OK
# 1: unless ($var1) {
3 <#> gvsv[*var1] s ->4
# 5: $var3++;
7 <#> gvsv[*var3] s ->8
# 2: $var2++;
d <#> gvsv[*var2] s ->e
So strictly speaking it's still possible to use B::Concise to emulate B::Xref on line number level.
*) Interestingly this also depends on the Perl version. Here the vars appear in order: (Ubuntu 5.18)
$ perl -MO=Concise,-src tst_b_xref3.pl|grep var
tst_b_xref3.pl syntax OK
# 1: unless ($var1) {
3 <#> gvsv[*var1] s ->4
# 2: $var2++;
8 <#> gvsv[*var2] s ->9
# 5: $var3++;
e <#> gvsv[*var3] s ->f
update
and that's the reason why, 5.24 is optimizing the negation away by swapping the branches:
D:\tmp>perl -MO=Deparse tst_b_xref3.pl
tst_b_xref3.pl syntax OK
if ($var1) {
++$var3;
}
else {
++$var2;
}
|