The URL you provided does not provide valid JSON, so you'll have trouble feeding it to any of the standard Perl JSON modules.
Ingy's recent work on JSONY seems to be able to handle it though:
use 5.010;
use HTTP::Tiny;
use JSONY v0.0.3 qw(decode_jsony);
my $in_currency = 'GBP';
my $out_currency = 'USD';
# Construct URL from currency codes
my $url = sprintf(
'http://www.google.com/ig/calculator?hl=en&q=1%s=?%s',
$in_currency,
$out_currency,
);
# Fetch URL and deal with HTTP errors
my $results = HTTP::Tiny->new->get($url);
die $results->{reason} unless $results->{success};
# Decode cruddy broken JSON and deal with decoding errors
my $data = decode_jsony($results->{content});
die $data->{error} if $data->{error};
# Print the result
say $data->{rhs};
perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'
|