splitのクセ・落とし穴(split)
CSVのような分割を想定した文字列の場合、カンマなどの分割文字が決まっているので、その文字をあてれば分割することができるが、分割文字列はケースによって変わることついて考えてみる。
ケース1
Perlのsplitは分割文字を文字列の文字として評価していないため実行すると分割文字は削除される。
結果
もしこのような場合、分割文字に何らかの代替文字(例えばタブ文字とか)に予め置換してからsplitを実行する。
結果
ケース2
分割文字が対象文字列の先頭に含まれていた場合は次のようになる。
結果
ケース3
分割文字が対象文字列の最後に含まれていた場合は次のようになる。
結果
ケース4
分割文字が対象文字列に含まれなかった場合、ケース3に似た結果になる。
結果
ケース3とケース4の明らかな違いは結果の文字数で、ケース3では分割文字を削除して結果を出力するのに対し、ケース4では分割文字が対象文字列に含まれなかったので、対象文字列はary[0]にそのままコピーされた形になる。
結果を注意深く見ていないと、splitが成功していたのか失敗していたのか判別しにくく、defindの結果や1番目の要素の文字列がヌルか否かを分岐条件にすると、潜在的なエラーを生じることになる。