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