Perlの謎(その1):変数等の頭文字って何を意味するの

Perl初心者のためのPerlノートです!

HTML/ CSS/ CGI-Perl/ JavaScript/ JavaApplet/ AccessUp/ Internet/ EnglishLearn/ ちゃいちゃん天使/ 天使メッセージ/ 飯田ワールド/ 結城ワールド/ プロフィール/ WEB相談室/ WEBアンテナ/ WEBリーダー/ 燈明日記/ yahoo

◆ はじめに

本ページは、私がPerlを習得した時(いや習得中)のノートです。

ごく普通の言語(COBOL,C,Java,VB等)を知っている人が、Perlをやり始めるといろいろと悩むことがあります。

それは、

です。

本ページは、そのようなハードルを一つ一つクリアにしていけたらと思います。

そして、本ページが何かのお役に立てれば幸いです。では、ごゆっくりご覧ください。

尚、ご感想、ご意見、誤字、脱字、間違い等がありましたら遠慮なくPerlノート掲示板へご指摘ください。

◆ サイト最新情報

◆ コンテンツ

2009-06-17 Perlの謎(その1):変数等の頭文字って何を意味するの?

他言語、特にオーソドックスなcobol,c,java,vb等の人がPerlをやり始めると謎だらけで悩むことになりますね。

そんな人のために、僭越ながら私が謎を解き明かしていきますよ! Perlerの方は温かく見守ってくださいね(^o^)


◆変数等の頭文字って何を意味するの?

Perlをやり始めると変数等の頭文字($,@,%,&,*,何も無し)が気になります。


『$』が付くシンボルは、スカラー変数で、数値や文字列など何でも入る・・・VBで言えば、variant型のような変数です。

『$』はScalarの『S』に似ているので、スカラー変数を表します。


『@』が付くシンボルは、配列変数で、配列の要素はスカラー変数と同じで、何でも入る。

『@』はarrayの『a』に似ているので、配列変数を表します。


『%』が付くシンボルは、ハッシュ変数で、ハッシュはkeyとvalueを対で持っていて、valueはスカラー変数と同じで、何でも入る。

『%』はkeyとvalueの対を表していて、ハッシュ変数を表します。


『&』が付くシンボルは、サブルーチンで、実は『&』を頭に付けるより、尾に『()』をつけてサブルーチンを明示する方が多いです。

『&』はSubの『S』に似ているので、サブルーチン(これは自信がない)を表します。

(モダンPerlでは、『&』は付けないとのことです。右を参照のこと『第124回 サブルーチンの頭に&は普通つけない』)

『*』が付くシンボルは、型グロブで、頭文字以外同名のシンボルすべてを表します。

『*』と言えば、ワイルドカードですね。


何もつかないシンボルは、ベアワードで、ファイルハンドル、引数のない組み込み関数、ヒアドキュメントの終端値、ラベル、単なる文字列などなど・・・。


◆ファニー文字

ちなみに、これらの頭文字のことをPerl では「ファニー文字(funny character)」とよんでいます。

実はファニー文字を使うことにより、将来使われるであろう予約語やキーワードとかぶることがありません。

他の言語では、かぶる可能性があり、かぶった時に過去の資産が使えなくなるのです。

つまり、Perlでは、ファニー文字を使うことにより、過去の資産が使えなくなることが無いのです。


◆サンプル
$hoge = 123;                      # スカラー変数
@hoge = (1, 2, 3);                # 配列変数
%hoge = (a => 1, b => 2, c => 3); # ハッシュ変数

print "-----&hoge------------\n";              
&hoge;                            # サブルーチン
print "-----&foox(*hoge)------\n";              
&foox(*hoge);

sub hoge {
   print "$hoge", "\n";                   # スカラー変数
   print "$hoge[0]$hoge[1]$hoge[2]", "\n";# 配列変数
   print "$hoge{a}$hoge{b}$hoge{c}", "\n";# ハッシュ変数
}                                         
sub foox {
   (*foo) = @_;
   print "$foo", "\n";                 # スカラー変数
   print "$foo[0]$foo[1]$foo[2]", "\n";# 配列変数
   print "$foo{a}$foo{b}$foo{c}", "\n";# ハッシュ変数
   print "-----&foo--------------\n";              
   &foo;                               # サブルーチン
}

◆実行結果
C:\perltest>perl sysbol.pl
-----&hoge------------
123
123
123
-----&foo(*hoge)------
123
123
123
-----&foo--------------
123
123
123

上記サンプルは、型グロブと各変数の関係を示すため、すべてグローバル変数になっています。

しかし、モダンPerlではなるべくグローバル変数は使わず、myでローカル変数にして処理するのが推奨です。

また、サブルーチンの『&foo;』も『foo();』の記述の方が推奨です。


◆謎シリーズ(予告)

◆ おすすめ Perl本

■ 続・初めてのPerl 改訂版

『初めてのPerl』の次ぎに読むと吉です。

結構いいですが・・・、初心者にはちょっと難しいかもです。

■ 結城浩のPerlクイズ

この本には、ちゃいちゃんパパの小話しが載っています(謎)。

ある程度、Perlを理解している人には、たまらない内容になっています。さすが結城先生だな!

結城浩のPerlクイズ

■ 新版Perl言語プログラミングレッスン入門編

実は、私はまだ読んでいませんが、結城先生の本なので良くないはずがありません。

新版Perl言語プログラミングレッスン入門編

■ CGI&Perlポケットリファレンス (Pocket reference)

この本は、非常に役に立ちます。ちょっと調べるのに最適です。サンプルも説明も的を射ています。

CGI&Perlポケットリファレンス (Pocket reference)

■ Perlベストプラクティス

一読の価値有りだと思います。

Perlベストプラクティス

■ プログラミングPerl〈VOLUME1〉

ご存知、Perl本の聖書、ラクダ本(上)です。

■ プログラミングPerl〈VOLUME2〉

ご存知、Perl本の聖書、ラクダ本(下)です。

◆ おわりに

最後に、本ページが、何かのお役に立てれば幸いです。

尚、ご感想、ご意見、誤字、脱字、間違い等がありましたら遠慮なくPerlノート掲示板へご指摘ください。

HTML/ CSS/ CGI-Perl/ JavaScript/ JavaApplet/ AccessUp/ Internet/ EnglishLearn/ ちゃいちゃん天使/ 天使メッセージ/ 飯田ワールド/ 結城ワールド/ プロフィール/ WEB相談室/ WEBアンテナ/ WEBリーダー/ 燈明日記/ yahoo