我需要将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(/\","/);
感谢...
答案 0 :(得分:4)
对于CSV,您应该使用解析器。显而易见的是Text :: CSV。如果您说,安装模块很困难,您可以使用名为Text::CSV_PP
的Pure Perl实现。将其粘贴到文件中并使用它。问题解决了。
攻击它的另一种方法是使用核心模块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');
答案 1 :(得分:0)
这将有效:
($var0,$var1,$var2,$var3,$var4,$var5,$var6,$var7,$var8) =
split(/(?<="|[0-9]),(?="|[0-9])/);
?<=
是一个外观断言?=
是一个先行断言