You've probably noticed how the following displays the number of lines read in from last read file handle is displayed along the program line number in a die.
while (<DATA>) { die "Error!" if $_ eq ".\n"; } __DATA__ a b c . d e
Error! at script.pl line 2, <DATA> line 4.
Further study shows this is not a property of the while.
<DATA>; die "Error!"; __DATA__ a b
Error! at script.pl line 2, <DATA> line 1.
The data line number appears as long as the file handle is still open.
<DATA>; close(DATA); die "Error!"; __DATA__ a b
Error! at script.pl line 3.
You can even play with the number!
<DATA>; $. = 100; die "Error!"; __DATA__ a b
Error! at script.pl line 3, <DATA> line 100.
Setting $. to 0 hides the message.
<DATA>; $. = 0; die "Error!"; __DATA__ a b
Error! at script.pl line 3.
Is it also possible to play with the filehandle name? For example, could perl be tricked (suing XS, surely) into displaying
Error! at script.pl line 3, filename.dat line 100.
In reply to Playing with "<FH> line 123" die messages by ikegami
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |