【发布时间】:2016-11-11 11:27:46
【问题描述】:
我正在尝试在以下代码中调试此警告。
在 /usr/local/bin/arsed 第 207 行的连接 (.) 或字符串中使用未启动的值 $aprs_position。
foreach my $ent ( @upd_q ) {
my $aprs_position = Ham::APRS::FAP::make_position(
$ent->{'latitude'},
$ent->{'longitude'},
-1, # speed
-1, # course
-10000, # altitude
( defined $ent->{'symbol'} ) ? $ent->{'symbol'} : '/[', # symbol
1, # compression
0 # no ambiguity
);
print "$aprs_position\n";
my $packet = sprintf( '%s>APTR01:!%s', $ent->{'callsign'}, $aprs_position );
print "$packet\n";
if ( $aprs_enable == 1 ) {
my $ok = $is->sendline( $packet );
if ( ! $ok ) {
$is->disconnect();
从Ham::APRS::FAP::make_position 返回的值似乎有错误,或者可能是语法错误?
请问开始调试的最佳方法是什么?
【问题讨论】:
-
207是哪一行?
-
@shawnhcorey:如果在代码示例中,它只能是
print "$aprs_position\n"。 -
@Borodin 不,它在上面的代码中出现了两次。不知道是哪一行报错,无法解决。
-
@shawnhcorey:第二次出现不是“在串联 (.) 或字符串中”。不管怎样,问题是
$aprs_position是undef,所以make_position返回的值是错误的。 -
@AndyK:顺便说一下,如果你运行的是 Perl v5.10 或更高版本,那么
( defined $ent->{'symbol'} ) ? $ent->{'symbol'} : '/['可以写成$ent->{symbol} // '/['
标签: perl