- 追加された行はこの色です。
- 削除された行はこの色です。
#topicpath
----
//ここにコンテンツを記述します。
***Perl覚え書き
初めてまじめにさわった言語はJavaだったもんで、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;}