第4章 サブルーチン サブルーチン
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
chomp 、 、 などの組み込みシステム関数はすでに見てきたし、使ってきただろう。しかし、他の言語と同様に、Perlにもユーザ定義関数であるreverse printサブルーチンを作成する機能がある。 これによって、1つのプログラムの中で1つのコードの塊を何度も再利用することができる。サブルーチンの名前は、Perlの識別子(アルファベット、数字、アンダースコア、ただし数字で始まることはできない)の前にアンパサンド( )を付けることができる。アンパサンドを省略できるときとできないときの規則がある。この章の終わりにはその規則がわかるだろう。今のところ、禁止されていないときは常にアンパサンドを使うようにしよう。もちろん、アンパサンドが禁止されている場所については、その都度説明する。&
サブルーチン名は別の名前空間から来るので、同じプログラミングの中に&fred というサブルーチンと$fred というスカラーがあってもPerlが混乱することはない-ただし、通常の状況でそうする理由はない。
サブルーチンの定義
独自のサブルーチンを定義するには、キーワードsub 、サブルーチンの名前(アンパサンドなし)、そしてサブルーチン本体を構成する波括弧内のコード・ブロックを使用する。こんな感じだ:
sub marine {
$n += 1; # Global variable $n
print "Hello, sailor number $n!\n";
}サブルーチン定義はプログラム・テキストのどこに書いてもよいが、CやPascalのようなプログラミング言語出身のプログラマは、ファイルの先頭に書くことを好む。また、サブルーチン定義をファイルの末尾に置いて、プログラムの主要部分が最初に来るようにすることを好む人もいるだろう。それはあなた次第だ。いずれにせよ、通常は前方宣言は必要ない。同じ名前の2つのサブルーチン定義がある場合、後のものが前のものを上書きする。ただし、警告を有効にしている場合は、Perlがそれを教えてくれる。一般化すると、これは悪い形式、あるいは混乱したメンテナンス・プログラマのサインとみなされる。
注
Perl中級者までは、異なるパッケージの同じ名前のサブルーチンについて話すことはない。
前の例でお気づきかもしれないが、サブルーチン本体内でグローバル変数を使用することができる。実際、これまで見てきた変数はすべてグローバル変数である。これは言語純粋主義者にとっては恐ろしいことだが、Perl開発チームは数年前に松明を持った怒れる暴徒を結成し、街から追い出した。プライベート変数の作り方は、「サブルーチンにおけるプライベート変数」のセクションで説明する。
サブルーチンを呼び出す
式の中からサブルーチンを呼び出すには、サブルーチン名(アンパサンド付き)を使う:
&marine; # says Hello, sailor number 1! &marine; # says Hello, sailor number 2! &marine; # says Hello, sailor number 3! &marine; # says Hello, sailor number 4!
ほとんどの場合、呼び出しのことを単にサブルーチンの呼び出しと呼ぶ。この章を読んでいくと、サブルーチンを呼び出す他の方法も出てくるだろう。
戻り値
式の結果を使用しない場合でも、サブルーチンは常に式の一部として呼び出される。先ほど ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access