Perl の my と local など

書店で何気に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

perl

— posted by giyu at 07:15 pm   pingTrackBack [0]

T: Y: ALL:
Created in 0.0103 sec.
prev
2012.2
next
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29