
340
|
第
17
章
my $filename = ...;
my $csv-data = $filename.IO.slurp;
my $csv-parser = Grammar::CSV.new but DoubledQuote;
使用这个对象解析你的数据:
my $match = $csv-parser.parse: $csv-data;
say $match // 'Failed!';
这样做并不能修正数据中的双引号,
""
仍然是
""
,不过可以在一个动作类中修正。
练习
17.6
调整
CSV
示例,这一次使用角色而不是继承。创建一个动作类,遇到转义双引
号时进行调整。如果愿意,可以从本书网站(
https://www.learningperl6.com/
)
的
downloads
部分下载
Grammars/test.csv
来测试。
17.8
小结
文法是
Perl 6
语言的一大亮点。你可以定义模式之间的复杂关系,并使用动作类在匹
配时运行任意复杂的代码。你会发现最终你的整个程序就是一个很大的文法。