読者です 読者をやめる 読者になる 読者になる

その手の平は尻もつかめるさ

ギジュツ的な事をメーンで書く予定です

Perl の Package 書くときにめちゃめちゃ便利な Vim スクリプト書いた

perl

世の中の Perl の Package の末尾には大体 `1;` って書いてあって、これが何か言うと「このモジュールは真値を返していますよー」という表明で、まああけすけに言うとこれが記述されていなければ、そのモジュールは use とかされた時に不正なモジュールとして扱われてしまい、読み込みが 失敗してしまう訳です。


さっきも言ったように、返す値は真値であれば何でも良いので、`42;` って書いたり `"HELLO";` って書いたりしても別に良い。

で、世の中には `!!1;` っていう面妖な記述をしているモジュールがあって、人が泣いている。
`!!1;` は、1 という真値を ! によって偽値にして、さらにそれを ! する事によって真値にすることによって、真値であることを表明している。
これでも問題なく動くけれど、`!!1;` って初見の人はびっくりしてしまうし、そもそも2回も否定演算しているからパフォーマンスに問題が出てきてしまうかも知れない。
[2013/08/21 22:55 訂正]
パフォーマンスに差が出るという事は無いとのことです。以下をご参照ください。
[perl] !!1 と 1 ではパフォーマンスに差がでるのか - blog.64p.org
[訂正ここまで]


という訳でこのVim スクリプトの出番です。

これを.vimrc とかに書いておくと、pm ファイル (Perl のモジュールを表現するファイル) を編集している最中、保存時にフックして自動的に `!!1;` という記述を `1;` に置き換えてくれる。

これは便利。皆さん使って下さい。