my $statement1 = "SELECT files FROM catalog WHERE words LIKE %".$word."%"; $sth1 = $dbh -> prepare($statement1); $sth1 -> execute(); #### my $find_files = $dbh->prepare(q{ SELECT files FROM catalog WHERE words LIKE ? }); for my $w (@words) { $find_files->execute("%$w%"); while (my ($file) = $find_files->fetchrow_array) { ... } } #### $sth2 = $dbh ->prepare("select filename, type from library where filename = $file_index and".$rule_append); #### my %search_library = ( email => $dbh->prepare(q{ SELECT filename, type FROM library WHERE filename = ? AND filetype = 'email' }), article => $dbh->prepare(q{ SELECT filename, type FROM library WHERE filename = ? AND filetype = 'article' }), both => $dbh->prepare(q{ SELECT filename, type FROM library WHERE filename = ? AND (filetype = 'email' OR filetype = 'article') }), ); #### for my $w (@words) { $find_files->execute("%$w%"); while (my ($file) = $find_files->fetchrow_array) { for my $f (split /:/, $file) { $search_library{$type}->execute($f); if (my @rec = $search_library{$type}->fetchrow_array) { $match{$rec[0]} = $rec[1]; } } } }