{{tag> note:perl unshift shift push pop}} ---json { "title":"配列操作を考える(ドラフト)", "description":"関数の引数を得る際の配列操作について考えてみます" } --- \\ ===== 配列操作を考える ===== \\ Perlに限らず、関数(またはメソッド)が呼び出されるとき、引数が渡されるのですが、 Perlの場合、常套手段として、 sub routine { my $one = shift; my $two = shift; : } のように、shift() を使うことがあるのですが、 上記のように、引数から数個ずつ要素を一度に受け取る場合について考えてみました。\\ で、 routine( 'one', 'two' ); のように呼び出した場合を想定し、まず、 shift() を使う前提で考えると、 map() を使う方法はどうか?ということで、 sub routine { my ( $one, $two ) = map { shift } ( 1, 2 ); } または、shift() を使わない方法で何かないかと考え、splice() を使う方法で sub routine { my ( $one, $two ) = splice( @_, 0 ,2 ); } のように考えてみたのですが、やっぱり見た目も可読性も sub routine { my $one = shift; my $two = shift; : } が勝るなって思って、無駄な時間を過ごしました。