書店で何気にPerlの本を見てみると、知らなかったことがちらほら。
PHPが主流でPerlはさっぱり使わなくなりましたが、気になったので調べてみたりする。
- ○my と local の違い
-
my と local で変数を宣言したときのスコープの違いを覚えよう。
サブルーチン内での宣言で違いが確認できるようだ。$var = 'グローバル'; sub localTest { local $var = 'ローカル'; #このブロック内で呼び出したサブルーチンでも有効 &printTest(); } sub myTest { my $var = 'マイ'; #このブロックだけ &printTest(); } sub printTest { return $var; } print localTest()."¥n"; #ローカル print myTest()."¥n"; #グローバル print printTest()."¥n"; #グローバル- my [ レキシカルスコープ (字句解析)]
- 中カッコ{}で括られたブロック内で宣言したときは、そのブロック内のみで有効で、そのブロック内で読み出したサブルーチン内では無効。
- local [ ダイナミックスコープ (動的)]
- 中カッコ{}で括られたブロック内で宣言したときは、そのブロック内のみで有効で、そのブロック内で読み出したサブルーチン内でも参照される。
仮で値を入れているだけってこと?
- ○サブルーチンの戻り値
-
サブルーチンの戻り値は、"return $var;"と記述しても良いが、省略すると最後に式の値が戻り値となる。
sub printTest { 123 + 456 } print printTest(); #579 - ○多次元配列
-
perl4では多次元配列サポートされていないので、区切り文字"$;"を使ったハッシュが使われたりするようだが、Perl5では普通につくれるようだ。
my @myarray = ( ['0A','0B','0C','0D','0E'], ['1A','1B','1C','1D','1E'] ); print $myarray[1][2]; #1C my %myhash = ( 'key1' => {'A' => 1, 'B' => 2, 'C' => 3}, 'key2' => {'X' => 10, 'Y' => 20, 'X' => 30} ); print $myhash{'key2'}{'Y'}; #20













