如何用逗号分割字符串而不在perl的引号内包含逗号?

qui*_*kxi 1 perl split comma

我有以下代码:

my $file = 'c:\test.log';
open (FILE, "<", $file) or die $!;
my @list = grep /\bAdobe\b/, <FILE>;
my $days;
foreach (@list) {
$days = $_;
print "$days\n";
}
Run Code Online (Sandbox Code Playgroud)

预期结果是:

"Adobe","10:10:10, 11/10/2011","Ready"
Run Code Online (Sandbox Code Playgroud)

我想用以下代码用逗号分割结果:

my @sample = split(',', $days);
Run Code Online (Sandbox Code Playgroud)

预期结果是:

"Adobe"
"10:10:10
11/10/2011"
"Ready"
Run Code Online (Sandbox Code Playgroud)

但它不是我想要做的:

我想打印输出如下:

"Adobe"
"10:10:10, 11/10/2011"
"Ready"
Run Code Online (Sandbox Code Playgroud)

如何在不使用/安装任何模块(如Text :: CSV)的情况下实现此目的.

请指教,谢谢.

a'r*_*a'r 6

理想情况下,您将使用CSV解析器,请参阅Text :: CSV.或者只要所有字段都是双引号,那么您可以使用具有稍微复杂的正则表达式的拆分,它会检查分隔符:

split /(?<="),(?=")/, $days;
Run Code Online (Sandbox Code Playgroud)