in reply to Re: caller() returns wrong line on multi-line function call
in thread caller() returns wrong line on multi-line function call
I had problems to see why dereferencing should be implemented with a block syntax, but indeed one is free to include any statement inside %{...} as long as it can't be confused with a variable
for instance
DB<2> print %{ ( do{ {A=>1} } ) } A1
Actually the problem is not restricted to dereferencing. other block syntax is having the same impact of messing up "nextstate".
Like this
print_calling_line( __LINE__, do { A => 1, B => 2, C => 3 } );
will report the line of the do statement.
Cheers Rolf
(addicted to the Perl Programming Language and ☆☆☆☆ :)
Je suis Charlie!
actually the line of the last block will be reported
print_calling_line( __LINE__, do { A => 1, B => 2, C => 3 }, do { A => 1, B => 2, C => 3 }, do { A => 1, B => 2, C => 3 } ); ... Called from line 27; caller() reports line 30
looks like the line number is stored inside a localized variable in C and overwritten while parsing following blocks.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: caller() returns wrong line on multi-line function call (blocks)
by jh (Beadle) on Sep 14, 2017 at 14:54 UTC | |
by LanX (Saint) on Sep 14, 2017 at 15:03 UTC |