むかしのperlプログラムをうごかす

ヒマなのでサブスク見直しをしておりまして、Flickr → Amazon PhotosDropbox Plus → Sync、GitHub Pages → GitLab Pages などを決行しきった。flickrは17年お世話になりました。これで15年以上使い続けているのはGmailとrememberthemilkくらいかな。

その一環で、10年くらい使ってたレンタルサーバーとかVPSも整理することにした。

まず自分用バッチがわんさかあって、ルー語変換をはじめとする謎アプリもわんさかあるww 捨ててしまうのもアレなので生かす。最近書いたのはgoが多く移動楽なのだけど、むかーし書いたperlはcpanfileもなかったりperl 5.8で動いてたり、CGI.pmのやつもあるのでそのへんなんとかする。

とりあえず使ってる全依存モジュールをつっこんだcpanfileを用意して、最強のdocker imageを作る作戦。しかも最新のperl 5.32をベースにdocker buildしてみる。これはきっと何か入らないモジュールがあったりするんじゃないか〜と構えていたけど、なんとすんなり入って!!感動した。

perlエコシステム整えしてくれてる人ありがとうですわ。

何も考えずbusterベースにしておけば問題なし。ただ変換系で多用してたmecabはさすがに入ってないので(笑)そこだけ調整しこんなかんじ。PERL_TEXT_MECAB_ENCODINGは完全に忘れていたのでこっちにも書いておいた。utf-8じゃなくutf8を指定しているのはネタモジュールがほとんどutf-8-strictじゃないの前提としてたから。それはOK。

バッチはこんなかんじで全部動作してるし、

docker run --rm --init -v `pwd`:/app $(DOCKER_IMAGE) perl slack2email.pl --from...

謎アプリ群は、(CGI.pm 利用のやつはPSGIに書き換えるのは簡単なのでそれはやった)そんで docker-compose で言うとこういうノリですんなり全稼働した。

services:

  samurai.koneta.org:
    volumes:
      - ./samurai.koneta.org/:/app
    image: $(DOCKER_IMAGE)
    command: [ "plackup", "-E", "production", "-a", "app.psgi" ]
    init: true
    ports:
      - "8081:5000"

  bakumatsu.koneta.org:
  ...

これでどこでも持っていける! まだまだうごくぞ。

ただ1個、ぼくTwitterを「BitlBeeっていうtwitterなどをIRCサーバーにみたててくれるやつをxinetdで立てつつ、そこにTiarra(なつかしいww)で接続、tiarraのログモジュールで出したファイルを1時間ごとにgrepしてメールに送りつける」っていうなんともマニアックな読み方を10年間やってまして。それは素直にtwitter apiを使うやつに書き直した。