gpt4 book ai didi

perl - 使用 Keyword::Simple 恢复正确的行号

转载 作者:行者123 更新时间:2023-12-05 03:14:27 26 4
gpt4 key购买 nike

我正在使用 Keyword::Simple与 Perl 关键字 API 交互以注入(inject)一些自定义代码。问题是,如果我的自定义代码中有换行符,代码中的任何错误都将从原始文件中的错误行报告。例如:

# 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 指令来更改报告的行号,但是为了在生成的代码中注入(inject)这些,我需要知道预首先修改行号。

我想我也可以通过确保我生成的代码不包含换行符来做到这一点,但这似乎没那么有趣。

最佳答案

诀窍是当你解析代码时,计算你跳过了多少换行符,然后当你注入(inject)代码时,注入(inject)相同数量的换行符,并且不要注入(inject)任何不必要的换行符。这有点工作,但它 can be done .

关于perl - 使用 Keyword::Simple 恢复正确的行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24498000/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com