GDBM/MLDBM利用時のtie構文について

いつになっても覚えられない.覚えるほど頻繁に使わないし,忘れた頃に使う.昔使ったファイルを参考にする.要するにコピペ.そんなわけでテンプレートを用意することにした.折角なので大分時間が空いたけれどEmacs-lispを使ってインタラクティブ関数を作成する.

;;; GDBM_File用
(defun insert-gdbm-header ()
  (interactive)
  (insert "use GDBM_File;\n"))

(defun insert-gdbm-tie (hashname dbname)
  (interactive "sInput hashname: \nsInput dbname: ")
  (insert (concat "tie " hashname ", 'GDBM_File', " dbname
                  ", &GDBM_WRCREAT, 0644 or die \"Cannot tie " dbname "\";"))
  (insert "\nuntie " hashname ";\n"))

;;; MLDBM
(defun insert-mldbm-header ()
  (interactive)
  (insert "use MLDBM qw(GDBM_File);\nuse Fcntl;\n"))

(defun insert-mldbm-tie (hashname dbname)
  (interactive "sInput hashname: \nsInput dbname: ")
  (insert (concat "tie " hashname ", 'MLDBM', " dbname
                  ", O_CREAT|O_RDWR, 0644 or die \"Cannot tie " dbname "\";"))
  (insert "\nuntie " hashname ";\n"))

insert-gdbm-header, insert-mldbm-headerはuse文を挿入してくれる.GDBM_Fileは忘れないけれど,MLDBMはよく忘れるので.

M-x insert-gdbm-tie
Input hashname: %hoge
Input dbname: $DBNAME

すると,以下のコードが挿入される

tie %hoge, 'GDBM_File', $DBNAME, &GDBM_WRCREAT, 0644 or die "Cannot tie $DBNAME";
untie %hoge;

自分でカスタマイズすると(関数作ると)使ってやりたくなる.次はDBIまわりで何か作ってみよう.