JSON で 困った

WebService::Simple で Google Ajax Search API を叩いてるんですが、なんか JSON のパースでエラーがでまくり。


具体的に以下のコードで再現します。

#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use WebService::Simple;
use WebService::Simple::Parser::JSON;
use Data::Dumper;

my $q = 'ケーキ www.bob-an.com/recipe/OutputMain.asp?KeyNo=15711';

my $parser = WebService::Simple::Parser::JSON->new;
$parser->{json}->utf8(1);

my $google = WebService::Simple->new(
    base_url        => 'http://ajax.googleapis.com/ajax/services/search/web',
    response_parser => $parser,
    params          => {
        q     => $q,
        v     => '1.0',
        rsz   => 'large',
        lr    => 'lang_ja',
    },
);

my $req = $google->get;
my $res = $req->parse_response;

print Dumper($res);


エラーはこんなの。

illegal backslash escape sequence in string, at character offset 383 (before "\\\x{30af}\x{30ea}\x{30b9}...") at /usr/lib/perl5/site_perl/5.8.6/WebService/Simple/Parser/JSON.pm line 27.


illegal backslash escape sequence...


んで、以下のようにクエリー文字列を変えると、エラーにならない。

my $q = 'www.bob-an.com/recipe/OutputMain.asp?KeyNo=15711';


なんとなく、検索結果に含まれる 「</b>(」とかあたりの文字列が怪しいってとこまではわかったけど、そこから先に進めなくなった。
あやしい文字列を抜き出して、WebService::Simple 使わずに JSON.pm で直接パースしてみるんだけど、なかなかエラーが再現しないんですよね。


なんなんだろいったい。。。