in reply to
Getting file and line number where a subroutine is declared
In case it helps, warn gets its info from the most recently executed nextstate op.
$ perl -e'
if ($false) { # This is line 2
}
elsif (warn) { # This is line 4
}
'
Warning: something's wrong at -e line 2.
$ perl -MO=Concise -e'
if ($false) { # This is line 2
}
elsif (warn) { # This is line 4
}
'
6 <@> leave[1 ref] vKP/REFC ->(end)
1 <0> enter ->2
2 <;> nextstate(main 4 -e:2) v ->3
- <1> null vKP/1 ->6
4 <|> cond_expr(other->5) vK/1 ->7
- <1> ex-rv2sv sK/1 ->4
3 <#> gvsv[*false] s ->4
- <@> scope vK ->-
5 <0> stub v ->6
- <1> null vK/1 ->-
9 <|> and(other->a) vK/1 ->6
8 <@> warn[t2] sK ->9
7 <0> pushmark s ->8
- <@> scope vK ->-
a <0> stub v ->6
-e syntax OK