>>185
それは split によって空文字列のフィールドが生成された場合、
後ろのものは捨てられると言っているだけだ。

print map "[$_]\n", split /\t/ for (
  "foo\tbar\tbaz\n", # foo, bar, baz\n
  "\t\thoge\t\tfuga\t\t", # '', '', hoge, '', fuga
);

chomp が要らないのは split のパターンが /\s+/ なので改行も
デリミタとして扱われる為。パターンを /\s/ にすれば分かる。

print map "[$_]\n", split /\s+/ for (
  "foo\tbar\tbaz\n", # foo, bar, baz
  "\t\thoge\t\tfuga\t\t", # '', hoge, fuga
);
print map "[$_]\n", split /\s/ for (
  "foo\tbar\tbaz\n", # foo, bar, baz
  "\t\thoge\t\tfuga\t\t", # '', '', hoge, '', fuga
);

fail safe や fool proof の為、常に chomp を入れておくのは
悪い選択では無いが、chomp を省くとこういうつまらん部分で
ハマる事もあるのでお勧めできない。