Perl 未初始化值的使用

Perl 未初始化值的使用,perl,Perl,我试图在下面的代码段中调试此警告 在串联(.)中使用未初始化值$aprs_位置或在/usr/local/bin/arsed行207处使用字符串 从Ham::APRS::FAP::make_position返回的值中似乎存在错误,或者可能存在语法错误 开始调试这个的最佳方法是什么?这不是语法错误(如果是,代码根本不会运行),因此您没有从调用Ham::APRS::FAP::make_position()中得到您期望的结果,这是对的 看看,我看到一些东西会导致它返回undef,但是作者显然不相信显示一

我试图在下面的代码段中调试此警告

在串联(.)中使用未初始化值$aprs_位置或在/usr/local/bin/arsed行207处使用字符串

Ham::APRS::FAP::make_position
返回的值中似乎存在错误,或者可能存在语法错误

开始调试这个的最佳方法是什么?

这不是语法错误(如果是,代码根本不会运行),因此您没有从调用
Ham::APRS::FAP::make_position()
中得到您期望的结果,这是对的

看看,我看到一些东西会导致它返回
undef
,但是作者显然不相信显示一个警告来确切地告诉您出了什么错

如果是我,我会使用调试器跟踪该子例程的执行情况,看看哪里出错。我怀疑这是代码中处理
$symbols
的内容,但我不知道您在传递什么值

我还要在设置变量的那行后面加上这样的东西

die 'Undefined value for $aprs_position' unless defined $aprs_position;
这不是一个语法错误(如果是的话,代码根本不会运行),因此调用
Ham::APRS::FAP::make_position()
,没有得到预期的结果,这是对的

看看,我看到一些东西会导致它返回
undef
,但是作者显然不相信显示一个警告来确切地告诉您出了什么错

如果是我,我会使用调试器跟踪该子例程的执行情况,看看哪里出错。我怀疑这是代码中处理
$symbols
的内容,但我不知道您在传递什么值

我还要在设置变量的那行后面加上这样的东西

die 'Undefined value for $aprs_position' unless defined $aprs_position;

@安迪克:是的。本质上,函数调用的一个参数是越界的,并且没有简单的方法来区分哪个参数。(这是一个非常奇怪的模块。)如果您不熟悉调试器,那么您可以尝试添加一系列
print
语句来显示传递给
make_position
@AndyK:Yes的值。本质上,函数调用的一个参数是越界的,并且没有简单的方法来区分哪个参数。(这是一个非常奇怪的模块。)如果你不熟悉调试器,那么你可以尝试添加一系列
print
语句来显示传递给
make\u position
的值。哪一行是207?@shawnhcorey:它只能是
print“$aprs\u position\n”
如果它在代码示例中。@Borodin否,它在上述代码中出现两次。如果不知道哪一行报告错误,则无法解决该错误。@shawnhcorey:第二次出现不是“在串联(.)或字符串中”。不管怎样,问题是
$aprs\u position
unde
,所以
make\u position
返回的值是错误的。@AndyK:顺便说一下,如果您运行的是Perl v5.10或更高版本,那么
(定义为$ent->{'symbol'})$ent->{symbol}:'/['
可以写成
$ent->{symbol}/'/['
哪一行是207?@shawnhcorey:它只能
打印“$aprs\u position\n”
如果它在代码示例中。@Borodin否,它在上述代码中出现两次。如果不知道哪一行报告错误,则无法解决该问题。@shawnhcorey:第二次出现不是“在串联(.)或字符串中”。无论如何,问题是
$aprs\u position
unde
,因此
make\u position
返回的值是错误的。@AndyK:顺便说一句,如果您运行的是Perl v5.10或更高版本,那么
(定义为$ent->{'symbol'})?$ent->{'symbol'}:'/['
可以写为
$ent->{symbol}/'/['