Сабж. Эвристический анализатор, очень хороший :) Несмотря на то, что был написан полтора года назад, до сих пор исправно и качественно работает.
Понимает все кодировки, в том числе двойной quoted-printable, utf16-be и т.п. Если бы данные кодировки не юзались где-то, я бы не стал делать их поддержку :) При разработке через анализатор было пропущено 1.5 ляма реальных рефов, далее он был доработан, чтобы понимать те рефы, которые он не понимал.
За давностью лет его КПД я, к сожалению, не помню, но точно больше 99.9%, что для эвристики - очень и очень гуд. Плюс, он работает довольно быстро.
Модуль экспортирует единственную функцию analyze()
Использование:
my ($se, $kw) = analyze($ref);
$ref - исходный реферрер (без эскейпа, т.е. в том виде как он пришел из заголовка)
$se - поисковик (hardcoded в @cfg_se, для незнакомых возвращает 'other')
$kw - распознанный кейворд (в кодировке cp1251).
Также может вернуть undef, если реферрер битый (нельзя выпарсить домен, или протокол отличен от http(s)