Net::FTPでnlist

Net::FTP - FTP Client class - metacpan.org
lsは配列でファイル一覧を返してくれるけど、nlstとかlistはNet::FTP::dataconnを返すらしい。OS依存のデータを返すから*1しょうがないのだろうけど。

use strict;
use warnings;
use Net::FTP;

my ($ftp, $datacon, $buf);

$ftp = Net::FTP->new("host.name", Debug => 1);
$ftp->login("anonymous", 'kkobayashi@somewhere');
unless($datacon = $ftp->nlst('-l /')){
  $ftp->quit;
  exit;
}
print $buf while($datacon->read($buf, 256));
$datacon->close;
$ftp->quit;

こんなもんかな。dataconnの方を先にcloseしておかないとquitでハングすることがあります。困ったもんだ。

*1:内部でネイティブなlsとかが実行される