#!/usr/bin/perl -w
# DB_File 與 GDBM_File 的範例

use strict;
my (%dict, $key);

# 選一個 package 來用
use DB_File;
#use GDBM_File;

# 建立檔案, 並讓 %dict 這個 hash 的內容變化立即反應到檔案內.
tie %dict, 'DB_File', "dict.db", O_CREAT|O_TRUNC|O_RDWR, 0666;
#tie %dict, 'GDBM_File', "dict.db", GDBM_NEWDB, 0666;

# 新增資料
$dict{"blue"} = '藍色';
$dict{"penguin"} = '企鵝';
$dict{"swim"} = '游泳';

# 替 %dict 鬆綁, 其實也有關閉檔案的效果
untie %dict ;

#-----------------------------------------------------------------
#!/usr/bin/perl -w
# 其實這是另一個程式, 只是我偷懶把兩個程式放在同一個檔案之中。
# 請將它拆開, 先執行後半, 應該印不出東西; 再執行前半,
# 應該會多出一個 dict.db 檔; 最後再執行一次後半, 就會印出
# hash 裡面的資料。

use strict;
my (%dict, $key, $value);

# 選一個 package 來用
use DB_File;
#use GDBM_File;

tie %dict, 'DB_File', "dict.db", O_RDONLY;
#tie %dict, 'GDBM_File', "dict.db", GDBM_READER, 0666;

# 印出先前存的內容
while (($key, $value) = each %dict) {
    print "$key: $value\n";
}

# 替 %dict 鬆綁, 其實也有關閉檔案的效果
untie %dict;

