ところで、本題は。

HTML::ContentExtractorが使いたかったんだけど、移植するとなると大仕事なので標準入出力経由でPerlを叩くという暴挙。
まず準備。

$ sudo cpan
(省略)
cpan> install HTML::ContentExtractor
(省略)
cpan> exit
$ 

続いてPerl側を準備。

(content_extractor.pl)
#!/usr/bin/env perl
use strict;
use warnings;

use HTML::ContentExtractor;
my $ext = HTML::ContentExtractor->new;

my $uri = <>;
my $content = <>;

$ext -> extract($uri, $content);

print $ext->as_text;

そしてRuby側。

(content_extractor.rb)
#!/usr/bin/env ruby

def execute(uri, src)
  ret = nil
  
  IO.popen('./content_extractor.pl', 'r+'){|io|
    io.puts uri
    io.puts src.gsub("\n", '').gsub("\r", '')
    io.close_write
    ret=io.readlines
  }
  
  puts ret
end

uri = 記事のURI
src = <<EOS
(記事のソース)
EOS

execute(uri, src)

これでruby content_extractor.rbをやるとRubyからPerlを叩いて、本文領域だけ抽出した物が返ってくる。なんだけど、Railsアプリケーションでこれを使おうとすると戻り値がnilになってしまう。Perlが標準出力に返した結果がどこかあらぬところに行ってしまってるらしい。*1

*1:ただのtypoでした!