完全没有正当理由,我在一个 Bash 函数中嵌入了一个相当大的 Perl 脚本,该函数在autoenv .env
文件中被调用。
它看起来像这样:
perl='
$inverse = "\e[7m";
$invoff = "\e[27m";
$bold = "\e[1m";
⋮
'
perl -e "$perl" "$inputfile"
我知道独立的 Perl 脚本和PATH
变量是一个东西,我知道Term::ANSIColor是一个东西。这不是关于那个。
我的问题是,如果嵌入式 Perl 代码中存在语法错误,如何让 Perl 报告父 shell 脚本中的实际行号?
例如,假设perl=
赋值发生在该文件的第 120 行,但实际 Perl 代码的第 65 行存在语法错误。我明白了:
syntax error at -e line 65, near "s/(#.*)$/$comment\1$endcomment/"
Execution of -e aborted due to compilation errors.
…但我想看到这个(父脚本中的实际行号):
syntax error at -e line 185, near "s/(#.*)$/$comment\1$endcomment/"
我尝试过的事情(没有用):
- 分配给
__LINE__
- 甚至不知道为什么我认为这会起作用;它不是一个变量,它是一个常数,并且你得到一个错误说明
- 分配给
$.
($INPUT_LINE_NUMBER
withuse English
)- 我很确定这无论如何都行不通,因为这就像
NR
在 Awk 中一样,这显然不是它的用途
- 我很确定这无论如何都行不通,因为这就像