I believe your problem may be here:
sub get_name_and_lookup {
my $dbh = shift;
my ($sth, $stmt, $hostname, $id, $addr, $ipaddr);
$stmt = qq {SELECT * from nt_machines ORDER BY name};
$sth = $dbh->prepare ($stmt);
$sth->execute();
while (my $row = $sth->fetchrow_hashref()) {
$row->{name} = $hostname;
$row->{id} = $id;
$addr = (gethostbyname($hostname))[4];
if ($addr) {
$ipaddr = join(".", unpack("C4", $addr));
update_item($ipaddr,$id)
}
$sth->finish();
}
}
Note the $sth->finish() call inside the while loop.. That kills (so to speak) the $sth object. Thus, you execute(), call fetchrow_() once, then kill the object, then call fetchrow_ again, and it complains.
Only call finish() if you want to discard the remaining results of an execute(). Since you while() through all the results, you have no need of the call at all in this code.
Hope that helps
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|