誰か解説求む。
では、解説します。perldocの日本語訳を読んでみました。まず、この一文がジュウヨウです。
LIMIT を指定しない場合は、 余分なヌルフィールドが除かれる
うわ・・・この仕様知らなかった。LIMITとはsplitの第3引数のことです。例えば、以下のようなコードを実行してみます。
my $csv_string = 'A/B//D/'; print '[', join(', ', split(qr(/), $csv_string) ), "]\n";
すると、末尾の空文字列が除かれて、[A, B, , D]が出力されると言うことです。で、もう一つperldocから抜き出してみます。
リストに代入する時に LIMIT が省略されていると、 perl はリスト中の変数の数より 1 多い数を LIMIT とする。
これがリストを指定したときと配列をしたときの違いです。リストを指定するとLIMIT、つまり第三引数を指定するのと同等の効果があるってことです。
よって、この二つの事実から、
my @arr_s = split(/=/, '='); # ↑第3引数を省略しているので、末尾の空文字列は返って来ない。 my ($s1, $s2, $s3) = split(/=/, '='); # ↑第3引数を4に指定するのと同等なので、末尾の空文字列も省略されず返って来る
と言うことになるのです。あー、すっきりした。
*1:自作自演