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.
In reply to Re^2: caller() returns wrong line on multi-line function call (blocks)
by LanX
in thread caller() returns wrong line on multi-line function call
by jh
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |