ikegami has asked for the wisdom of the Perl Monks concerning the following question:
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.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Playing with "<FH> line 123" die messages
by Anonymous Monk on Aug 15, 2006 at 09:37 UTC | |
by xdg (Monsignor) on Aug 15, 2006 at 10:24 UTC | |
|
Re: Playing with "<FH> line 123" die messages
by syphilis (Archbishop) on Aug 15, 2006 at 10:43 UTC |