14.3 異なるDBMファイルに変換する

  • DBMファイルからキーと値を読み取り、それらを異なるDBMフォーマットの新しいファイルに書き込む
#!/usr/bin/perl -w
# db2gdbm: DBをGDBMに変換する

use strict;
use DB_File;
use GDBM_File;

unless (@ARGV == 2) {
  die "Usage: db2gdbm infile outfile\n";
}

my ($infile, $outfile) = @ARGV;
my (%db_in, %db_out);

# 2つのファイルを開く
tie(%db_in, 'DB_File', $infile) or die "Can't tie $infile: $!";
tie(%db_out, 'GDBM_File', $outfile, GDBM_WRCREAT, 0666) 
  or die "Can't tie $outfile: $!";

# コピーする(ただし、%db_out = %db_in は低速なので、使用しない)
while (my($k, $v) = each %db_in) {
  $db_out{$k} = $v;
}

# 以下のuntieはプログラム終了時に自動的に実行される。
untie %db_in;
untie %db_out;