Hi guys! I have a problem.
I get the error: can't call method "do" on an undefined value
#!/usr/bin/perl -w
use strict;
package SF;
use base "HTML::Parser";
use DBI;
my $f_header = 0;
my $f_name = 0;
my $f_description = 0;
sub start {
my ($self, $tag, $attr, $attrseq, $origtext) = @_ ;
if ($tag eq 'header') { $f_header = 1 };
if ($tag eq 'span' && $attr->{'itemprop'} eq 'name') { $f_name = 1
+ };
if ($tag eq 'a' and $f_header = 1) {my $href = $attr->{'href'} };
if ($tag eq 'p' && $attr->{'itemprop'} eq 'description') { $f_desc
+ription = 1};
}
sub text {
my ($self, $text) = @_ ;
my $name;
my $href;
if ($f_name = 1) {my $name = $text}
if ($f_description = 1) {
my $description = $text;
############## here the error #############
my $dbh->do("INSERT INTO names VALUES('$name', '$href', '$descri
+ption')");
############################################
}
}
sub end {
my ($self, $tag, $origtext) = @_ ;
if ($tag eq 'header') { $f_header = 0 }
if ($tag eq 'span') { $f_name = 0 }
if ($tag eq 'p') { $f_description = 0 }
}
package main;
use strict;
use DBI;
use LWP::Simple;
my $parcer = SF->new;
my $dbh = DBI->connect("dbi:SQLite:dbname=/media/DOOMGL/perl/db.sql
+t","","");
$dbh->do("DROP TABLE names");
$dbh->do("CREATE TABLE names (name, href, description)");
my $page;
for ($page = 1, $page < 3, $page++) {
my $url = "http://sourceforge.net/directory/os%3Alinux/freshnes
+s%3Arecently-updated/?page="
. "$page";
my $content = get($url);
$parcer -> parse($content);
}