#topicpath ---- //ここにコンテンツを記述します。 ***Perl覚え書き 私は初めてまともににさわった言語はJavaだったので、他の言語のことはほとんど知りません。でもMovableTypeとかPerlだし、知ってて損はないかなぁってことでPerlの学習を始めてみました。((でもまだPerlのような軽いタッチ(?)の言語になじめませんっ)) で、とりあえず、こんな書き方ありなんだーってのをメモしてます。 (人に見せるもんじゃないですね) ***いろいろ1 #!/usr/bin/perl -w //mainパッケージの宣言 package main; $bar = '$bar is in main package'; { //これによって、この括弧内はhogeパッケージとなる? package hoge; $bar = '$bar is in hoge spackage'; print $bar, "\n"; <-自分のパッケージ内の変数へのアクセス print $hoge::bar,"\n"; これと同じ意味。 print $hoo::bar,"\n"; <- これはエラーになっちゃう } { package hoo; $bar = '$bar is in hoo package'; print $bar, "\n"; print $hoge::bar,"\n"; <-これはエラーにならない } print $bar ,"\n"; <-これはmainパッケージのbarへのアクセス ***いろいろ2 #!/usr/bin/perl -w package hoge; { $bar = '$bar is in hoge spackage'; print $hoge::bar,"\n"; } ***いろいろ3(これはよくわからん) #!/usr/bin/perl -w package hoge; { $bar = '$bar is in hoge spackage'; print $hoge::bar, "\n"; sub new { my $pkg = shift; my $hash = { name => shift, weight => shift }; bless $hash, $pkg; } } ***moduleってなんなの Perlって *.plとか*.pmとかあって、どうもmoduleってのは*.pmってやつなんでしょうか。 どうも*.pmってやつ(=module?)がクラスの様なものに見えます。[[とあるサイト:http://www.pure.co.jp/~learner/program/Perl_oo.html]]にあるサンプルの中身を見てみると、たとえば (HelloModuleWorld.pm) package HelloModuleWorld; sub new { my $pkg = shift; bless {},$pkg; } sub Japanese{ return 'こんにちは、モジュールの世界へ!'; } sub English{ return 'Hello, Module World!'; } 1; こんなんなってるし。 これをカレントに保存して、 (Hoge.pl) #!/usr/bin/perl package main; use HelloModuleWorld; my $obj = HelloModuleWorld->new; print $obj->Japanese; print "\n"; print $obj->English; とコーディングしてプロンプトから perl Hoge.pl とすると、オブジェクトっぽく呼び出すことが出来ました! どうも、Perlの世界のパッケージってのは、Javaでいうところのpackageではなく完全修飾のクラス名のことなのかなぁ。。。でもコンストラクタ(new関数)の my $pkg = shift; bless {},$pkg; ってなに??なんか、奥が深いですねぇ。 ---- この記事は #vote(おもしろかった,そうでもない) #comment #topicpath SIZE(10){現在のアクセス:&counter;}