在 Windows 上批量输出 Perl 脚本的正确行号?

Output correct line number for Perl script wrapped in batch on Windows?

是否有任何说明符告诉 Perl 解释器真正的 Perl 脚本从某行开始,然后输出将具有来自解释器的正确行号,如解释错误消息?例如,下面脚本中的行号信息不正确。

@perl -x "%~f0" %*
@exit /b %errorlevel%

#!perl  

use strict;

printxxx "Perl Script\n"; # interpreter will output error for this line with **incorrect line number**

您可以使用 line directive,它是一种特殊形式的注释,看起来像 # line 99,并指示 perl 将分配给下一行的行号。

例如

#!/usr/bin/perl
use strict;
use warnings;
use 5.010;

STDOUT->autoflush;

# line 100
say "line ". __LINE__;
die;

输出

line 100
Died at E:\Perl\source\line.pl line 101.

也可以在行号后添加文件名,这同样指示 perl 将报告的源文件名。