Perlについての質問箱 12箱目
■ このスレッドは過去ログ倉庫に格納されています
0186デフォルトの名無しさん
NGNGそれは 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 を省くとこういうつまらん部分で
ハマる事もあるのでお勧めできない。
■ このスレッドは過去ログ倉庫に格納されています