電子書籍の厳選無料作品が豊富!

Perl学習通算5日目くらいです。
既存プログラムに
$status = aa::bb(cc,dd);

aa::bb cc::dd;
のような記述があり
ここでの::の意味を知りたいのですが、
この::の名称または、この使い方の名前を教えていただけますか?

A 回答 (2件)

::はWコロン 又は パッケージセパレータと呼ばれているようです。

(正確な名称はわかりません)
https://perldoc.jp/docs/perl/5.10.0/perlmod.pod
https://tutorial.perlzemi.com/blog/2010041912708 …

aa::bb(cc,dd);での
aaがパッケージ名(名前空間)
bbがパッケージ内のサブルーチン名
cc,ddがそのサブルーチンの引数
になります。

bbをaa::で修飾することにより、aa内のサブルーチンであることを示しています。

サンプルですが、以下の2ファイルを作成します。
ファイル名:MyPack.pm
-------------------------------------
package MyPack;
sub Hello{
print "MyPack hello\n";
return 100;
}
1;
---------------------------------------

ファイル名:sample.pl
-----------------------------------
use MyPack;
sub Hello{
print "main hello\n";
return 10;
}
$status = Hello();
print "status = $status\n";
$status = MyPack::Hello();
print "status = $status\n";
--------------------------------

コマンドプロンプトで
perl -I. sample.pl
と入力すると、以下のように結果が表示されます。
D:\goo\perl\test_package>perl -I. sample.pl
main hello  ・・・・①
status = 10  ・・・②
MyPack hello  ・・・③
status = 100  ・・・④
---------------------------------
①はsample.pl内のHelloが出力した結果
②はsample.pl内のHelloの戻り値
③はMyPack.pm内のHelloが出力した結果
④はMyPack.pm内のHelloの戻り値
    • good
    • 0
この回答へのお礼

大変助かりました。確かにsub の前の行に、useが使われています。
これが名前空間であれば、、理解できそうです。

お礼日時:2019/12/13 13:47

ちょっと状況がわからないのですが、


1:学習教材の中にそのプログラムがある ⇒ それ以前の部分で説明があるはず
2:学習教材でない、とあるプログラムのこと ⇒ そのうち学びますので、慌てないで
    • good
    • 0
この回答へのお礼

学習教材でなく、仕事で読んでいるプログラムです。
社会経験は長いですが、PERLは、初めてなもので。一般的なプログラムの用語で説明されれば理解できると思います。

お礼日時:2019/12/13 10:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!