Problem
You want to use libcurl, driven through Perl.
Solution
Beautiful for parse HTML and either extracted (screen scraping) content or performing actions based on results.
See the examples tab for this simple script, demonstrating the libcurl API for Perl.
Example
#!/usr/bin/perl
$url="http://perl.coding-school.com/"; # set your url here
$|++;
use Curl::easy;
# Init the curl session
my $curl= Curl::easy::init() or die "curl init failed!n err: $!n";
sub body_callback {
my ($chunk,$context)[email protected]_;
push @{$context}, $chunk;
return length($chunk);
}
Curl::easy::setopt
($curl, CURLOPT_PROXY, $proxy) if($proxy);
Curl::easy::setopt
($curl, CURLOPT_PROXYPORT, $proxyport) if($proxyport);
Curl::easy::setopt
($curl, CURLOPT_SSL_VERIFYHOST, 0);
Curl::easy::setopt
($curl, CURLOPT_SSL_VERIFYPEER, 0);
Curl::easy::setopt
($curl, CURLOPT_URL, $url);
Curl::easy::setopt
($curl, CURLOPT_WRITEFUNCTION, &body_callback);
my @body;
Curl::easy::setopt
($curl, CURLOPT_FILE, @body);
Curl::easy::setopt
($curl, CURLOPT_ERRORBUFFER, "errbuf");
if (Curl::easy::perform
($curl) != 0) { print "Failed : $errbufn"; };
Curl::easy::cleanup($curl);
# Separate each line into one element in array
@lines=();
foreach (@body) { push(@lines,split('n', $_, 9999)); }
foreach (@lines) {
# just to demonstrate it works!
if(/icons/) { print("$_n"); }
}
exit(0);
Here is a demo screen shot of this code using perl and libcurl.
Reference
[tags]Perl libcurl demo, Perl libcurl, Perl, libcurl, curl, Perl Coding School[/tags]