hitode909の日記

以前はプログラミング日記でしたが、今は子育て日記です

Data::DumperではなくData::Printerを使うと日本語もいいかんじに表示できる

長らくPerlのオブジェクトをダンプするのにData::Dumperを使っていたけど,フラグの立った文字を見にくかったりして,なにかと困っていた.
日本語見れるDumperないんかな…という話をしていて,Data::Printerなら見れることが分かったので,EmacsでDDってDを2回押すとData::Printerでデバッグできるようにした.

(define-key
  cperl-mode-map
  (kbd "D")
  (smartchr
   '("D" "use DDP { show_unicode => 1, use_prototypes => 0, colored => 0 }; p `!!';")))

smartchr.elを使っていて,大文字のDを2回入力するとカーソル位置にこれが出る.

use DDP { show_unicode => 1, use_prototypes => 0, colored => 0 }; p (ここにカーソル)

追記,Atomだとこんなかんじ

smartchr:
    chrs: [
      {
        candidates: [
          "D"
          "use DDP { show_unicode => 1, use_prototypes => 0, colored => 0 }; p "
        ]
        chr: "D"
      }
  ]

説明

いろいろ指定している.

show_unicode=> 1

フラグが立ってるときに,"デコードされている" (U)みたいに,(U)をつけてくれる.

use_prototypes => 0

これをしないと,p "hi"とか書けなくて,いちど変数に入れないといけなくて不便.

colored => 0

Emacsから表示すると制御文字がそのまま表示されてしまったので,色なしにする.


ふつうの人はふだんからこういう便利モジュールを使ってそうなので,何を今更感ある話かもしれない.

Data::Printer - colored & full-featured pretty print of Perl data structures and objects - metacpan.org

追記

毎回書くのがめんどうな場合は.dataprinterというファイルでこれらのオプションを設定してしまうとよいです。
blog.sushi.money