ファイルを解析したいとします
$ cat toParse.txt 1 2 3 4 5 1 "2 3" 4 5 1 2 "3" 4 5
最初の2行は解析が簡単です: Text::CSV
それを処理できます。たとえば、私は試しました:
厳密に使用します。 Text::CSVを使用します。 その間() { チョップ$_; my $ csv = Text :: CSV-> new({sep_char =>''、quote_char =>'"'、binary => 1}); $ csv-> parse($ _); 私の@fields=$ csv-> fields(); 私の$badArg= $ csv-> error_input(); print "fields [1] = $ fields [1] \ n"; print "不正な引数:$ badArg \ n \ n"; }
ただし、トークン化されたフィールドに引用文字が含まれていると、CSVは非常に混乱します。
上記のプログラムは次のように出力します。
fields [1] = 2 悪い議論: fields [1] = 2 3 悪い議論: fields [1] = 悪い議論:1 2 "3" 4 5
誰か提案はありますか?ファイナルfields[1]
に...を入力し2" 3 "
たいのですが、言い換えると、引用符で囲まれた文字列に含まれていない空白の行を分割したいと思います。