perl 的ftp 模块的异常
Can't use an undefined value as a symbol reference at C:/Perl/lib/Net/FTP/dataconn.pm line 54 (#1)
(F) A value used as either a hard reference or a symbolic reference must be a defined value. This helps to delurk some insidious errors.
Uncaught exception from user code:
Can't use an undefined value as a symbol reference at C:/Perl/lib/Net/FTP/dataconn.pm line 54. at C:/Perl/lib/Net/FTP/dataconn.pm line 56
Net::FTP::dataconn::_close('Net::FTP::I=GLOB(0x1f5f33c)') called at C:/Perl/lib/Net/FTP/dataconn.pm line 70
Net::FTP::dataconn::close('Net::FTP::I=GLOB(0x1f5f33c)') called at C:/Perl/lib/IO/Socket/INET.pm line 118
IO::Socket::INET::_error('Net::FTP::I=GLOB(0x1f5f33c)', 'Bad file descriptor', 'Net::FTP::I: connect: A connection attempt failed because the...') called at C:/Perl/lib/IO/Socket/INET.pm line 237
IO::Socket::INET::configure('Net::FTP::I=GLOB(0x1f5f33c)', 'HASH(0x360cbf4)') called at C:/Perl/lib/IO/Socket.pm line 48
IO::Socket::new('Net::FTP::I', 'PeerAddr', 20.166.245.21, 'PeerPort', 6008, 'LocalAddr', undef, 'Proto', 'tcp', ...) called at C:/Perl/lib/IO/Socket/INET.pm line 37
IO::Socket::INET::new('Net::FTP::I', 'PeerAddr', 20.166.245.21, 'PeerPort', 6008, 'LocalAddr', undef, 'Proto', 'tcp', ...) called at C:/Perl/lib/Net/FTP.pm line 932
Net::FTP::_dataconn('Net::FTP=GLOB(0x1eb8b14)') called at C:/Perl/lib/Net/FTP.pm line 1014
Net::FTP::_data_cmd('Net::FTP=GLOB(0x1eb8b14)', 'RETR', 'GH1P.ASM') called at C:/Perl/lib/Net/FTP.pm line 678
Net::FTP::retr('Net::FTP=GLOB(0x1eb8b14)', 'GH1P.ASM') called at C:/Perl/lib/Net/FTP.pm line 458
Net::FTP::get('Net::FTP=GLOB(0x1eb8b14)', 'GH1P.ASM') called at C:\Program Files\map_files\AUL\AUL.pl line 130
main::getmap_FTP1 called at C:\Program Files\map_files\AUL\AUL.pl line 44
[解决办法]
delete ${*$ftp}{'net_ftp_dataconn'} if exists ${*$ftp}{'net_ftp_dataconn'} && $data == ${*$ftp}{'net_ftp_dataconn'};