代入の左辺に変数のリストを指定すると、右辺で指定したリストの各要素を一度に代入できます。
my ($one, $two, $three) = (1, 2, 3);
これは、サブルーチンのパラメータをスカラ変数に展開するときによく使われます。
sub do_something {
my ($param1, $param2, $param3) = @_;
...
}
左辺の変数の数の方が、代入元のリストより多い場合は、残りの変数の値は undef
となります。
my ($one, $two, $three) = qw/ AAA BBB /; # $three は undef
逆に、左辺の変数の数が少ない場合は、残りのリストの要素は捨てられます。
my ($one, $two) = (1, 2, 3, 4, 5); # 3, 4, 5 は捨てられる
左辺のリストの最終要素として配列変数を指定すれば、残りのリストの要素をすべて代入できます。
my ($first, @rest) = 1..5; # @rest の値は (2, 3, 4, 5) になる
リスト代入は、変数の値のスワップにも使えます。
($a, $b) = ($b, $a);