我的 regex-fu 没有达到应有的水平,我提前道歉。
代码:
#!/usr/bin/perl -wT
use strict;
use warnings;
use Text::ParseWords;
my @AoH;
my $filename = 'metadata.txt';
open(my $fh, '<', $filename) or die "Could not open file '$filename' $!";
while (<$fh>) {
my $rec = {};
for my $field ( split ) {
(my $key, my $value) = quotewords('=', 0, $field);
$rec->{$key} = $value;
print "$key -> $value;\n";
}
push @AoH, $rec;
}
我想解析以下字符串(位于 metadata.txt 中):
video_info="这是一个视频描述" video_name="avideoname.mp4" video_thumb="avideothumbnail.jpg"
本质上,我想拆分上述字符串,以便引号中的任何内容都是一个值(包括空格),而 = 之前的任何内容都是一个键。
我想要的输出:
video_info -> This is a video description;
video_name -> avidenoname.mp4;
video_thumb -> avideothumbnail.jpg;
我使用它作为参考来创建我的哈希数组:http : //docstore.mik.ua/orelly/perl/prog3/ch09_03.htm,对代码稍作修改(例如,使用引号而不是拆分) . 我觉得这主要是一个正则表达式问题,但如果有任何问题或使用过时的代码,请随时纠正/解释任何不一致之处。
任何帮助,将不胜感激。提前致谢。