我正在使用Keyword::Simple与Perl关键字API进行交互以注入一些自定义代码。问题是,如果我的自定义代码中包含换行符,代码中的任何错误都将从原始文件中的错误行报告。例如:
# KWTest.pm
package KWTest;
use strict;
use warnings;
use Keyword::Simple;
sub import {
my $class = shift;
Keyword::Simple::define mydie => sub {
my $ref = shift;
substr $$ref, 0, 0, qq{\n\n\n\n\n die "oh noes!!!!"};
};
}
1;
然后
perl -MKWTest -E 'mydie'
oh noes!!!! at -e line 6.
我知道perl
将尊重#line
指令来更改报告的行号,但为了在生成的代码中注入这些,我需要先知道预先存在的行号。
我想我也可以通过确保生成的代码不包含换行符来实现,但这似乎不那么有趣。