If a key doesn't exist in the database, output a newline. (Forced on
when --include-key set)
+=item B<--reverse,-r>
+
+Reverse the database (value looks up keys instead); only useful during
+creation/update
+
=item B<--debug, -d>
Debug verbosity. (Default 0)
dump => 0,
# include_key => 0,
missing_newline => 1,
+ reverse => 0,
);
GetOptions(\%options,
'create|c','update|u',
'dump|D',
'include_key|include-key|k!',
+ 'reverse|r!',
'missing_newline|missing-newline|n!',
'debug|d+','help|h|?','man|m');
}
-if ($options{update}) {
+if ($options{update} or $options{create}) {
my %fast_db;
while (<STDIN>) {
chomp;
my ($key,@val) = split /\t/;
- $fast_db{$key} = [make_list($fast_db{$key} // [],@val)];
- }
- for my $key (keys %fast_db) {
- $t_db{$key} = $fast_db{$key};
- }
-}
-elsif ($options{create}) {
- my %fast_db;
- while (<STDIN>) {
- chomp;
- my ($key,@val) = split /\t/;
- $fast_db{$key} = [make_list($fast_db{$key} // [],@val)];
+ if ($options{reverse}) {
+ for my $val_key (@val) {
+ $fast_db{$val_key} = [make_list($fast_db{$val_key})//[],$key];
+ }
+ }
+ else {
+ $fast_db{$key} = [make_list($fast_db{$key} // [],@val)];
+ }
}
for my $key (keys %fast_db) {
$t_db{$key} = $fast_db{$key};
}
elsif ($options{dump}) {
for my $key (keys %t_db) {
- print "$key:".join("\t",make_list($t_db{$key}))."\n";
+ print "$key\t".join("\t",make_list($t_db{$key}))."\n";
}
}
else {