Hi everyone,

 

Thanks to those who responded.  I tried all the helpful ideas, and well,
I guess it's better to get a different error than living in the same
error, hehe.

 

 

If I don't use strict, I get the following errors:

Database error: DBI::st=HASH(0x239094)->bind_param(...): attribute
parameter 'SQL_VARCHAR' is not a hash ref at ./snmp.pl line 38, <INFILE>
line 7867.

 

If I do use strict, I get the following errors:

Bareword "SQL_VARCHAR" not allowed while "strict subs" in use at
./snmp.pl line 38.

Bareword "SQL_VARCHAR" not allowed while "strict subs" in use at
./snmp.pl line 39.

Bareword "SQL_VARCHAR" not allowed while "strict subs" in use at
./snmp.pl line 40.

Bareword "SQL_VARCHAR" not allowed while "strict subs" in use at
./snmp.pl line 41.

 

 

 

Here is my modified code:

 

#!/usr/bin/perl

 

use strict;

use DBI;

 

my $db = DBI->connect('dbi:Oracle:NelOraDB', 'system', 'bell', {
AutoCommit => 0 }) || die "Database connection not made: $DBI::errstr";

my $sql = qq{ INSERT INTO SNMP_DATA_TABLE VALUES ( ?, ?, ?, ? ) };

my $sth = $db->prepare( $sql );

my ($mib, $var, $vartype, $varvalue, $line, $m, $type, $v, $value);

 

use Fcntl;

open (INFILE, "/home/nyik/snmp_poller_data.txt") or die"Couldn't open
snmp_poller_data.txt";

open (FD, "+>/usr/local/apache2/htdocs/snmp.html") or die"Couldn't open
snmp.html";

 

# read in each line from the input and print to output

print FD "<table border=1>";

print FD "<tr><td><b>MIB</b></td><td><b>Var</b></td><td><b>Var
Type</b></td><td><b>Var Value</b></td></tr>";

while(<INFILE>)

{

            $line = $_ ;

            # print FD "<tr><td>$line</td></tr>";

            if ($line =~
/((\w*|-|\d*)*)MIB::(\w*(\.(\d*))*)\s*=\s*((\w*|-|\d*)*):*\s*(.*)/)

            {

                        $mib = $1."MIB";

                        $var = $3;

                        $vartype = $6;

                        $varvalue = $8;

            } else {

                        print FD "<tr><td colspan=4>$line</td></tr>";

                        $mib = "<b>WRONG!!!</b>";

                        $var = "<b>WRONG!!!</b>";

                        $vartype = "<b>WRONG!!!</b>";

                        $varvalue = "<b>WRONG!!!</b>";

            }

 

            eval {

                        $sth->bind_param( 1, $db->quote($mib),
SQL_VARCHAR );

                        $sth->bind_param( 2, $db->quote($var),
SQL_VARCHAR );

                        $sth->bind_param( 3, $db->quote($vartype),
SQL_VARCHAR );

                        $sth->bind_param( 4, $db->quote($varvalue),
SQL_VARCHAR );

                        $sth->execute();

            };

 

            if ( $@ ) {

                        warn "Database error: [EMAIL PROTECTED]";

                        $db->rollback();

            }

 

            print FD "<tr>";

            print FD "<td><font face=arial
size=1>$mib&nbsp</font></td>";

            print FD "<td><font face=arial
size=1>$var&nbsp</font></td>";

            print FD "<td><font face=arial
size=1>$vartype&nbsp</font></td>";

            print FD "<td><font face=arial
size=1>$varvalue&nbsp</font></td>";

            print FD "</tr>";

}

 

close(INFILE);

close(FD);

$db->commit();

 

$sql = qq{ SELECT * FROM SNMP_DATA_TABLE };

$sth = $db->prepare( $sql );

$sth->execute();

$sth->bind_columns(undef,\$m, \$v, \$type, \$value);

 

while( $sth->fetch() ) {

            print "$m, $v, $type, $value\n";

}

 

$sth->finish();

$db->disconnect();

 

 

Nelson Yik

Business Systems Analyst Co-op

New Technology Integration

Bell Canada

76 Adelaide St. W., Floor 15

* [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> 

* (416) 353-9159

 

Reply via email to