Top / Perl / 覚え書き

Perl覚え書き

私は初めてまともににさわった言語はJavaだったので、他の言語のことはほとんど知りません。でもMovableType?とかPerlだし、知ってて損はないかなぁってことでPerlの学習を始めてみました。*1

で、とりあえず、こんな書き方ありなんだーってのをメモしてます。 (人に見せるもんじゃないですね)

いろいろ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?)がクラスの様なものに見えます。とあるサイトにあるサンプルの中身を見てみると、たとえば

(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;

ってなに??なんか、奥が深いですねぇ。


この記事は

選択肢 投票
おもしろかった 0  
そうでもない 0  

Top / Perl / 覚え書き

現在のアクセス:4750


*1 でもまだPerlのような軽いタッチ(?)の言語になじめませんっ

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS