我可以在 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 处理的完整多行记录,但是我收到错误
- 使用?模式?在第 10 行不推荐使用无显式运算符。
- 全局符号“$patstring”在第 10 行需要明确的包名。
- 搜索模式未在第 10 行终止。
我试图只获取看起来像这样的分隔文本进行记录,不包括开头和结尾的引号我希望这是有道理的:
“描述”“Star-Lite 2-Person w/Fly Aluminum, Rust
规格:
- 包装尺寸:13"" X 5""
- 1 门
- 室内面积:41.25 平方英尺
- 峰高:44""
- 地板材质:190T涤纶,2000mm PU涂层
- 网格:没看到-嗯
- 极数:2 根 8.5 毫米的防震铝线。
- 极部分:12"" 长度。
- 包括雨蝇。
- 90"" X 66"" X 44"""
排除我只想要的第一行
Star-Lite 2 人带飞铝,生锈
规格:
- 包装尺寸:13"" X 5""
- 1 门
- 室内面积:41.25 平方英尺
- 峰高:44""
- 地板材质:190T涤纶,2000mm PU涂层
- 网格:没看到-嗯
- 极数:2 根 8.5 毫米的防震铝线。
- 极部分:12"" 长度。
- 包括雨蝇。
- 90"" X 66"" X 44""
我需要做什么来修复这个模块的模式?
编辑:粘贴了错误的脚本