Perlのsplitで、デリミタのないセパレート
普通、split関数は、スカラー変数の文字列をデリミタで区切って、その値を配列変数に格納します。
では、デリミタを指定しない場合『//』は、どうなるでしょうか…。
#!/usr/bin/perl -w use strict; $_ = "11 22 33"; my @aaa = split //; print $aaa[0]; #1 print $aaa[1]; #1 print $aaa[2]; #スペース print $aaa[3]; #2 print $aaa[4]; #2
1バイトづつセパレートされる。
つまり、1バイトづつのデリミタがNULLとみなされる。
ちなみに、『//』を省略するとデリミタはスペース(\t\n含む)とみなされる。
#!/usr/bin/perl -w use strict; $_ = "11 22 33"; my @aaa = split; print $aaa[0]; #11 print $aaa[1]; #22 print $aaa[2]; #33