こういうことをしていいのか分からないのだけど・・・

イメージ的には、rlibの下に適当な.pmファイルをおいておけば、それぞれの.pm内部に書かれた正規表現にマッチしているモジュールを使うような。例えばanimate.tvlantis-netで別々のクローラーを使いたいけど、メインのスクリプトをいじらずモジュールをフォルダーに入れるだけで使えるようにしたい的な。

use strict;
use warnings;

our %func_table;
my $url = shift or die;

require 'rlib/A.pm';

foreach my $k (keys %func_table){
  print "$k $func_table{$k}\n";
  if($url =~ /$func_table{$k}/){
    my $obj = $k->new;
    $obj->parse;
  }
}
# rlib/A.pm
use strict;
use warnings;
use Data::Dumper;
package rlib::A;

BEGIN{
  $main::func_table{+ __PACKAGE__ } = qr/animate.tv/;
}
sub new{
  my $class = shift;
  $class    = ref $class || $class;
  return bless({}, $class);
}
sub parse{
  print "dummy\n";
}
1;
$ perl a.pl 'http://www.animate.tv/radio/details.php?id=hibichika'
rlib::A (?-xism:animate.tv)
dummy

もうちょっとスマートなやり方がありそうな気がする。が、とりあえず欲しい機能は実装できそう。