gdbm_to_berkeley.pl 818 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #!/usr/bin/perl
  2. # Author: Trizen
  3. # Date: 03 April 2023
  4. # https://github.com/trizen
  5. # Convert a GDBM database to a Berkeley database.
  6. use 5.036;
  7. use DB_File;
  8. use GDBM_File;
  9. scalar(@ARGV) == 2 or die "usage: $0 [input.dbm] [output.dbm]";
  10. my $input_file = $ARGV[0];
  11. my $output_file = $ARGV[1];
  12. if (not -f $input_file) {
  13. die "Input file <<$input_file>> does not exist!\n";
  14. }
  15. if (-e $output_file) {
  16. die "Output file <<$output_file>> already exists!\n";
  17. }
  18. tie(my %input, 'GDBM_File', $input_file, &GDBM_READER, 0555)
  19. or die "Can't access database <<$input_file>>: $!";
  20. tie(my %output, 'DB_File', $output_file, O_CREAT | O_RDWR, 0666, $DB_HASH)
  21. or die "Can't create database <<$output_file>>: $!";
  22. while (my ($key, $value) = each %input) {
  23. $output{$key} = $value;
  24. }
  25. untie(%input);
  26. untie(%output);