I tried that, it was actually lines that ended only with a carriage return that didn't increment the value of __LINE__.
It's probably what causes phramus's problem I guess. If not, I only know of two other ways to have __LINE__ (which is replaced at compile time, so should not be affected by runtime operations) corresponding to something else than what seems obvious: source filtering and the #line directive:
package Third;
use Filter::Util::Call;
$\ = $/; $, = ":";
print 4, __LINE__;
## Hello
BEGIN { filter_add ( sub { $status = filter_read(); $_ = "" if /^##/;
+return $status; } ); }
print 7, __LINE__;
## World;
print 9, __LINE__;
#line 42
print 11, __LINE__;
4:4
7:7
9:8
11:42
There the source filtering removes all lines starting with two #, but it has no effect on lines before the filter function is added, even though it's in a BEGIN block. So if the problem is source filtering, it has to be from a module included earlier (in the command used to run the script for example). And well, if phramus used #line 42 like comments in his script to keep track of the line number, that's tough luck. |