私は、さまざまなソースから入力を取得できるスクリプトを維持しており、行ごとに動作します。使用される実際のソースに応じて、改行は Unix スタイル、Windows スタイル、または集約された入力の場合は混合 (!) である場合もあります。
ファイルから読み取るときは、次のようになります。
@lines = <IN>;
process(\@lines);
...
sub process {
@lines = shift;
foreach my $line (@{$lines}) {
chomp $line;
#Handle line by line
}
}
したがって、必要なことは、chomp を、Unix スタイルまたは Windows スタイルの改行を削除するものに置き換えることです。私はこれを解決する方法が多すぎると考えています.Perlの通常の欠点の1つです:)
一般的な改行をむさぼり食う最も巧妙な方法についてどう思いますか? 何が最も効率的でしょうか?
編集: ちょっとした説明 - メソッド 'process' は、必ずしもファイルから読み取るのではなく、どこかから行のリストを取得します。各行には
- 末尾の改行なし
- Unix スタイルの改行
- Windows スタイルの改行
- Just Carriage-Return (元のデータに Windows スタイルの改行があり、$/ = '\n' で読み取られる場合)
- 線のスタイルが異なる集合セット