アクトレAPIでデータ取ってきてSQLite入れてFTPで静的HTML送るサイトは一応完成した。
データ不足でリストの2ページ目がまだ送信できてないから、そこらまだ怪しい。
データ取ってきてDB入れるのと投稿を一緒にやるから、通信する時はDB閉じたいからwhileやらforやらのループ処理を分ける必要があって、
配列に無名配列のリファレンス入れたりしてどこに何が入ってるかわかりにくくなって結構めんどかったし、ちと怪しい・・・
FTPはバックアップスクリプトとかで何度か使ったことのあるNet::FTPを使ったが、
これってファイルの送受信はスカラ変数じゃなくて実ファイルじゃなきゃできないんだね。
と思ったが、IO::Stringってもんを知った。Perl標準モジュールかな?
$io=IO::String->new($var);
ってすると$ioをファイルハンドルとして$varを利用できる。
他にも圧縮系とかファイルハンドルしか扱えないモジュールに心当たりあるから、そういうの使うときにも使えそう。
今回は同一ファイルを複数送信する箇所もあったんだが、
ファイルハンドルはNet::FTPでputするとファイルポインタが末尾に行っちゃうから、
$ftp->put(IO::String->new($var),'index.html');
みたいに、$ioとか作らずにファイルハンドルを必要とする関数に直接渡しちゃったほうが良さそう。
あと、普通はPASVのFTP鯖でもオプション無しでNet::FTP使えると思うんだが、忍者のFTP鯖は、
$ftp=Net::FTP->new($sv,'Passive'=>1);
ってPASVのオプション付けないと繋がらんぽい。