while () { my $line = $_; my @bucket = $bucket->based_on($line); # Data::Bucket my @acct_vals; for (@bucket) { # %hash = calculate based on input and bucket value push @acct_vals, \%hash; } next unless @acct_vals; @acct_vals = map { $_->[0] } sort { $a->[1] <=> $b->[1] } map { [ $_, $_->{dist} ] } @acct_vals; # write $acct_vals[0] and $line out to file # ** Help needed ** # write out to SQLite but without holding up # next loop iteration my @dump ; for my $acct_val (@acct_vals) { last if $acct_val->{dist} > $match_threshold * 1.5 ; push @dump, $acct_val; } my $d = Data::Dumper->new([\@dump], ['dump']) ; $d->Purity(1)->Terse(1)->Deepcopy(1); # DBIx::Simple by Juerd Waalboer $dbs->query('INSERT INTO addresses VALUES (??)', $acct_name, $clean_acct_name, $d->Dump); # *** end Help Needed unless (++$counter % $report_very) { warn "$counter in $now"; # Time::Lapse by Scott Godin } }