Não tenho experiência com Perl ou BerkelyDB. Eu tenho um enorme BerleleyDB com uma lista de e-mail e um carimbo de data/hora unix. Preciso de ajuda para remover e-mail com carimbo de data/hora mais antigo, com mais de 100 dias.
Eu tenho esta seção do código Perl
#!/usr/local/perls/perl-5.26.1/bin/perl
use BerkeleyDB;
my $filename = '/usr/local/assp/whitelist.bdb';
my $dbh = new BerkeleyDB::Hash(
-Filename => $filename)
or die "Error opening $filename : $! $BerkeleyDB::Error\n";
my $cursor = $dbh->db_cursor() ;
while ($cursor->c_get($k, $v, DB_NEXT) == 0) {
print "Key: " . $k . ", value: " . $v . "\n";
}
### Close the Berkeley DB
untie $filename;
exit;
que mostra todas as linhas com uma chave ($k) e um valor ($v)
O resultado é algo assim
Key: [email protected], value: 1578560300
Key: [email protected],[email protected], value: 1578643050
Key: [email protected], value: 1578643050
Alguém pode me ajudar a adicionar o código Perl para remover durante a execução while acima, todas as linhas de chave com valor de carimbo de data / hora unix com mais de 100 dias?
Basta usar
c_del
conforme documentado , ou seja,