第25回 別のパッケージの関数を呼び出す「さらに」もう1つの方法
前回は、blessを用いた別パッケージにある関数を呼び出す方法をみた。
パッケージ名::関数名
と
blessされた変数->関数名
の違いを探る旅にでよう。
だが、ちょっとまった!!!!
実は、もうひとつ別パッケージを呼び出す方法があるのだ!!!!!!!
それが、これだ!!!
use strict; package Hoge; sub h { print 'Hogeの関数', "\n"; } package main; 'Hoge'->h(); # 呼び出し! 文字列->関数名
結果:
Hogeの関数
ななんと、
文字列->関数名
の形で、関数を呼びだせてしまったではないか!!!!!!!!
おっと失礼!
おっとっと、
実は、次のようにも書けますよ。
use strict; package Hoge; sub h { print 'Hogeの関数', "\n"; } package main; Hoge->h(); # 呼び出し!
結果:
Hogeの関数
つまり、
Hoge->h();
と、Hogeをシングルクォートで囲わなくても呼べます!!!!
なにが何やら!?
いったい全体なにがなんなんだ!
パッケージ名::関数名
と
パッケージ名->関数名
の違いは何なんだ!!!!!
ちがいは次のソースを書けば明らかとなる
use strict; package Hoge; sub h { my $z = shift; print "$z", "\n"; # 関数に与えられた第1引数を表示 } package main; Hoge::h(); # 呼び出し! :: バージョン print '--------------', "\n"; Hoge->h(); # 呼び出し! -> バージョン
結果
結果は、次回に持ち越します。
それでは、また〜
ご自身で実行なさってみてくださいね。