while (1) { warn "Waiting for PDU"; $pdu = $smpp->read_pdu() or die "$$: PDU not read. Closing connection"; print "Received #$pdu->{seq} $pdu->{cmd}:". Net::SMPP::pdu_tab->{$pdu->{cmd}}{cmd} ."\n" ; warn Dumper($pdu) if $trace; if (defined reply_tab->{$pdu->{cmd}}) { &{reply_tab->{$pdu->{cmd}}{reply}}($c, $pdu); warn "Replied"; } else { warn "Don't know to reply to $pdu->{cmd}"; sleep 1; } } #### 0x00000015 => { cmd => 'enquire_link', reply => sub { my ($me, $pdu) = @_; $me->enquire_link_resp(seq => $pdu->{seq}) }, }, #### Received #2 21:enquire_link $VAR1 = bless( { 'known_pdu' => 1, 'cmd' => 21, 'status' => 0, 'data' => '', 'reserved' => undef, 'seq' => 2 }, 'Net::SMPP::PDU' ); Can't call method "enquire_link_resp" on an undefined value at .....esme-re.pl line 89.