サブルーチン
|
Perlサブルーチン
サブルーチンについて,説明します.
目次
サブルーチン
- main関数 perlにはメイン関数がありません.
- コマンドライン引数 @ARGVにセットされます.例えば,「foo.pl hoge fuga」と実行すると,$ARGV[0]は'hoge',$ARGV[1]は'fuga'となる.
#!/usr/bin/perl
print "$ARGV[0]\n";
print "$ARGV[1]\n";
もし,コマンドライン引数に,ワイルドカードを使ったファイル名を指定すると,$ARGV[0], $ARGV[1], $ARGV[2],
に展開されたファイル名が格納さます.ファイルは,foreach文を使って処理するのがセオリーでしょう.
foreach $file(@ARGV){
}
- ユーザー定義関数
- 関数の呼び出しは,&関数名 とする.
- 引数があるときは,&関数名(実引数リスト) とする.
- ユーザー定義関数は,sub 関数名{処理の内容}とする.
- 引数の値は,配列 @_ に格納される.
- 戻り値は,関数で最後に評価された式の値となる.
- Perlの変数はグローバルなので,引数や戻り値を使わなくても,ユーザー定義関数と呼び出し側でデータの受け渡しができる.
#!/usr/bin/perl
$var=&average(3,6);
print "$var\n";
sub average{
$sum=$_[0]+$_[1];
$ave=$sum/2;
}
sub hogehoge{
my($arg1,$arg2,$arg3)=@_;
}
- 変数のスコープ @_を除いて,Perlの変数はグローバル変数です.@_ をグローバルにすると,関数の中で関数を呼び出すときに不便が生じます.なぜならば,@_ に実引数の値が格納されるからです.
- ローカル変数 my あるいは local を使って,ローカル変数にすることができる.myが普通の言語(例えばC言語)のローカル変数に対応する.詳細は,こちら.
- my で宣言すると,新たにメモリーが割り当てられ,そのブロック内{}でのみ参照や変更ができる.普通に言うローカル変数なので,できるだけこちらを使う.
- local で宣言すると,宣言した関数から呼び出した関数でも参照や変更ができる.
#!/usr/bin/perl
$var="main_var";
&my_sub1;
&local_sub1;
sub my_sub1{
my $var="my_var";
print "$var\n";
&my_sub2;
}
sub my_sub2{
print "$var\n"; 重要
}
sub local_sub1{
local $var="local_var";
print "$var\n";
&local_sub2;
}
sub local_sub2{
print "$var\n"; 重要
}
ページ作成情報
参考資料
更新履歴
|