#!/usr/bin/perl use strict; use warnings; use BerkeleyDB; my $db_file = '/path/to/lib/myapp.db'; unlink $db_file if -f $db_file; my $bdb = tie my %tree, 'BerkeleyDB::Btree', -Filename => $db_file, -Flags => DB_CREATE, or die $!; my raw_file = '/path/to/raw.dat'; open my $fin, $raw_file or die "can not open $raw_file for reading: $!"; while(<$fin>) { my ($key, $value) = split/\t/; next if not fit_condition($key); $bdb->db_put($key, $value); } sub fit_condition { #.skip.# }