• ベストアンサー

perl 矢印演算子 -> の使い方

-> という矢印演算子が勉強しているスクリプト中に出てきて書籍などで調べたのですが、 よく分かりませんでした。 連想配列で便利な面がある?のでしょうか? 何かを省略できる書き方ということでしょうか。 my $cgi=CGI->new; if($anct>$articleperpage){ if($cgi -> param('offset')){ $offset=$cgi->param('offset'); という具合にまだまだ続きますが、 矢印演算子が使われています。 アドバイス宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • nightowl
  • ベストアンサー率44% (490/1101)
回答No.1

こんばんは、shevy さん。いつぞやは混乱させてしまったみたいで、ごめんなさい。 ハッシュ(連想配列)の解説はもっと丁寧に正確に行うべきでした。m(__)m さて、この矢印は Perl5 で導入された「オブジェクト指向」機能を使って オブジェクトとメソッドを関連づける表記です。 >my $cgi=CGI->new; new というメソッドで CGI クラスのオブジェクト(インスタンス)を 生成して局所変数 $cgi に格納します。 この new のことはコンストラクタ(オブジェクトを構築するものの意)といいます。 >$cgi->param('offset'); $cgi に格納されたオブジェクトに対して param メソッドで 'offset' パラメータの値を取り出します。 こう書くと難しく感じるでしょうが、オブジェクトは自分自身いろいろな属性を持っていて、 ただの変数よりずっとお利口さんなのです。オブジェクトは自分のやるべきことを 知っていて、メソッドという「メッセージ」を受け取ることで そのメッセージに応じた振る舞いをすることができます。 さっきの「$cgi->param('offset')」で言えば、こちらが $cgi の中のオブジェクトに対して「おい、'offset' パラメータの値は何だっけ」 と呼びかけると、オブジェクトはそのメッセージに応えて値を返すということです。 詳しくは参考 URL をご覧ください。

参考URL:
http://www.pure.ne.jp/~learner/program/Perl_oo.html,http://www3.vis.ne.jp/~asaki/java/wiki/wiki.cgi?page=CGI.pm%A4%F2%BB
shevy
質問者

お礼

nightowlさん、ご丁寧にありがとうございます。 いえいえ、こうしてcgiカテゴリーに 何度も質問してお助けいただいている、 私の名前まで覚えていただきまして、 こちらが恐縮してしまいます(^^;;; 本当に感謝しております。 ご回答の件ですが、 なるほど、オブジェクト指向の記述だったんですね。 早速、ご紹介のURLをじっくりと読み解こうと思います。 ただ、まだPerlでオブジェクト指向と聞くと、 想像ができないだけに、いまから楽しみです。 Perl5からそういえば、オブジェクト指向が導入されたような記述を書籍で観たことがありました。 もっとがんばってPerlの腕を磨きます。 本当にご丁寧にありがとうございました。

関連するQ&A