sub { my $arg = shift; } のshift
- 2010年03月23日
- category:Perl
- Comment(0)
- Trackback(0)
songmuさんのエントリー見て僕がperlを始めた頃、以下のコードでなんで引数をとれるか超絶意味不明だったのを思い出した。
sub foo {
my $arg = shift;
print "Hello $arg";
}
foo('hokaccha'); #=> Hello hokaccha
shiftというのは配列の最初の要素を一個だけとりだして元の配列をひとつシフトさせるperlの組み込み関数です。perlで引数は@_という配列に格納されていて、shift関数の引数を省略すると@_が引数として処理されるので上記のように書けるわけです。つまり上記の例と以下は等価になります。
sub foo {
my $arg = shift(@_);
print "Hello $arg";
}
もともとPHPだったのでまず引数を配列で受け取るというのがわからなかったし、関数の引数とか()を省略できるというのも知らなかったので本当に意味不明だったなあ。
- Prev Entry
- javascriptでArray.prototype.push.applyとかを使う理由
- Next Entry
- perlのワンライナーで使えそうなのをいくつか
コメントフォーム
スパムがひどいので一時的にコメントフォーム閉じます。ゴメンナサイ。
