ファイルから区切られたテキストを取得するために、csvファイルで次を実行できます。
#!/usr/bin/perl
use strict;
use warnings;
use Text::Balanced q/extract_delimited/;
my $filecontents = do { local $/; <> };
while (my $item = extract_delimited($filecontents, '"')) {
print "Item: $item\n";
}
しかし、結果には常に引用符が含まれていますが、これは私が望まないものであるため、複数行のレコードを完全に分離するために次のことを試みました
#!/usr/bin/perl
use strict;
use warnings;
use Text::Balanced qw/gen_delimited_pat/;
my $filecontents = do { local $/; <> };
$patstring = gen_delimited_patq(\G(?:[^"]|""|""")* ]))
while (my $item = extract_delimited($filecontents, '"')) {
print "Item: $item\n";
}
私はこの正規表現を知っているので
\G(?:[^"]|""|""")*
Text :: Markdownで処理したい完全な複数行のレコードを見つけましたが、次のようなエラーが発生します
- 「PATTERN」の使用 明示的な演算子がない場合は、10行目で非推奨になります。
- グローバルシンボル「$patstring」には、10行目に明示的なパッケージ名が必要です。
- 検索パターンが10行目で終了していません。
最初と最後の引用符を除いて、次のようなレコードの区切りテキストのみを取得しようとしています。これが理にかなっていることを願っています。
「説明」「Star-Lite2人用フライアルミニウム、錆
仕様:
- 梱包サイズ:13 "" X 5 ""
- 1ドア
- 内部面積:41.25平方フィート
- ピーク高さ:44 ""
- 床材:190Tポリエステル、2000mmPUコーティング
- メッシュ:ヌカカ
- 極数:ショックコード付きアルミ2個8.5mm。
- ポールセクション:12""の長さ。
- レインフライが含まれています。
- 90 "" X 66 "" X 44 "" "
私が欲しい最初の行を除いて
Star-Lite 2-Person w / Fly Aluminium、Rust
仕様:
- 梱包サイズ:13 "" X 5 ""
- 1ドア
- 内部面積:41.25平方フィート
- ピーク高さ:44 ""
- 床材:190Tポリエステル、2000mmPUコーティング
- メッシュ:ヌカカ
- 極数:ショックコード付きアルミ2個8.5mm。
- ポールセクション:12""の長さ。
- レインフライが含まれています。
- 90 "" X 66 "" X 44 ""
このモジュールのパターンを修正するにはどうすればよいですか?
編集:機能した間違ったスクリプトを貼り付けました