The Code
Save the following script as net_googly.pl.
Replace insert key here with your Google
API key as you type in the code.
TIP
Mind you, you'll still need
SOAP::Lite and a couple of other prerequisites
to use Net::Google.
#!/usr/local/bin/perl
# net_googly.pl
# A typical Google API script using the Net::Google Perl module.
# Usage: perl net_googly.pl <query>
use strict;
# Use the Net::Google Perl module.
use Net::Google;
# Your Google API developer's key.
use constant GOOGLE_API_KEY => 'insert key here';
# Take the query from the command line.
my $query = shift @ARGV or die "Usage: perl net_googly.pl <query>\n";
# Create a new Net::Google instance.
my $google = Net::Google->new(key => GOOGLE_API_KEY);# And create a new Net::Google search instance.
my $search = $google->search( );# Build a Google query.
$search->query($query);$search->starts_at(0);$search->max_results(10);$search->filter(0);
# Query Google.
$search->results( );
# Loop through the results.
foreach my $result ( @{$search->results( )} ) {
# Print out the main bits of each result.
print
join "\n",
$result->title( ) || "no title",
$result->URL( ),
$result->snippet( ) || 'no snippet',
"\n";
}
Notice that the code is all but identical to that of
googly.pl . The only
real changes (called out in bold) are cleaner object-oriented method
calls for setting query parameters and dealing with the results. So,
rather than passing a set of parameters to a
SOAP::Lite service call like this:
doGoogleSearch(
$google_key, $query, 0, 10, "false", "", "false",
"", "latin1", "latin1"
);
Set these parameters individually like this:
$search->query($query);
$search->starts_at(0);
$search->max_results(10);
$search->filter(0);
Not much difference, but definitely cleaner.