とりあえずやってミタ

とりあえず技術的っぽいことをいろいろやってみるブログ

perlの間接オブジェクト記法によるnewでハマった

      2015/07/19

Perlのコードでデータをgunzipしたくて、IO::Uncompress::GunzipのReadMeを見ていて見慣れない記法に気付いた

IO::Uncompress:Gunzipモジュール

IO::Uncompress:Gunzipモジュールではgunzipをエクスポートできるので、そのまま関数を呼び出して使うと良いらしい。

とりあえず上記で要件は足りたのだが、
IO::Uncompress:Gunzipオブジェクトを生成してそいつでデコードできたりするのかなーと思って調べてみた。 (結局よく分からず。。。orz_)

CPANのReadMe中盤のConstructorの項

ん?
$z = new IO::Uncompress::Gunzip“?

え? perlで”new”演算子が使えるの??

もともと私はC++からプログラムを覚えて、perlで見せかけのオブジェクト指向を見て逆に面白いと感じていた。
な・の・に、Perlでnew演算子だと!!
ハゲル!!」とテンパり、悩むこと数時間

結論から言うと「間接オブジェクト記法」または「間接オブジェクト構文」というものらしい。Perlでは昔から存在するらしいが、最近では非推奨との記述もちらほら。
個人的には存在意義が分からないし、Perlとしてのソースコードの整合性を乱している気がするので使いたくはないなーと思った



参考サイト

http://perldoc.jp/docs/perl/5.8.8/perlobj.pod#Indirect32Object32Syntax

 - メモ

  関連記事