in reply to How do I write data in SQLite

while(@links) { $dbh->do( "INSERT INTO webpages_data VALUES('$a', '$_', '$text[$v +]', NULL)"); $a++; $v++; }

This loop will never stop unless @links is empty, so somewhere $text[$v] will be undefined - when $v exceeds the highest index number in @text (NOT @links, @links is never even used in the loop).

update: really, use strict.

Replies are listed 'Best First'.
Re^2: How do I write data in SQLite
by lampros21_7 (Scribe) on Feb 03, 2006 at 23:42 UTC
    Well, @links has around 30 elements and the same goes for @text. I thought @links would stop when it has processed all of the elements in @links(in this case it would mean making 30 iterations).
        Right, thanks for that it was pretty daft. I think i ve sorted it out:
        $v = 0; my $dbh = DBI->connect( "dbi:SQLite:dbname=mydatabase.db", "", "" )|| + die "Cannot connect: DBI"; # If the file exists delete the information in it eval { local $dbh->{PrintError} = 0; $dbh->do("DROP TABLE webpages_data"); }; # Create a table $dbh->do( "CREATE TABLE webpages_data (id INTEGER PRIMARY KEY, page, +text, bigr)"); my $a = 1; my $s = scalar(@links); while($s >= $a) { $dbh->do( "INSERT INTO webpages_data VALUES('$a', '$_', '$text[$v +]', NULL)"); $a++; $v++; } # Disconnect when finished using the database $dbh->disconnect();
        I still get the "Use of uninitialized value in concatenation (.) or string" error though when i try to add data to the table.