Plack::Middleware::Static::Range が使えない問題の解決方法

Plackを用いてHTTP pseudo-streamingを行いたい場合には、Plack::Middleware::Static::Range を用いれば良いという情報がよく書かれています。 しかしながらPerl 5.22.1のような新しいバージョンを利用している場合、依存している PerlIO::subfile というモジュールのインストールに失敗するため、インストールすることができません。

Plackとhtmlのvideoタグを一緒に使う場合に気をつける事 - Qiita

上記記事では開発版のPerlを用いていないことが原因とされていますが、本当の原因は、Perl 5.20あたりからusesfioというビルドオプションが無くなってしまったためです。

forkして修正しようかと思ったんですが、すでに作られていた方がいたのでそちらを利用しましょう。

nqounet/PerlIO-subfile

$ cpanm https://github.com/nqounet/PerlIO-subfile/archive/master.tar.gz

こんな感じでインストールしてから、もう一度Plack::Middleware::Static::Rangeをインストールすると上手くいきます。