我需要将 csv 行拆分为变量
# sample data
"100-001","Bla Bla, Bla, Bla","","",0.00000,"W1",6.000,0.000
我试过了,但数字字段没有“”,所以它不起作用......
($var0,$var1,$var2,$var3,$var4,$var5,$var6,$var7,$var8) = split(/\","/);
谢谢...
对于 CSV,您应该使用解析器。显而易见的是 Text::CSV。如果如您所说,安装模块很困难,您可以使用 Pure Perl 实现,称为Text::CSV_PP
. 将其粘贴到文件中并使用它。问题解决了。
解决这个问题的另一种方法是使用核心模块Text::ParseWords
,它可以在紧要关头进行体面的 CSV 解析。
#!/usr/bin/env perl
use strict;
use warnings;
use Text::ParseWords;
print "$_\n" for parse_line( ',', 0, '"100-001","Bla Bla, Bla, Bla","","",0.00000,"W1",6.000,0.000');
这将起作用:
($var0,$var1,$var2,$var3,$var4,$var5,$var6,$var7,$var8) =
split(/(?<="|[0-9]),(?="|[0-9])/);
?<=
是一个后向断言?=
是一个前瞻断言