我的正則表達式不如它應該的那麼好,我提前道歉。正則表達式來分割鍵值對,忽略雙引號中的空格
代碼:
#!/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」
本質上,我想分割上述的字符串,以便任何引號是一個值(包括whitespaces)和wh atever在=之前是一個關鍵。
我所需的輸出:
video_info -> This is a video description;
video_name -> avidenoname.mp4;
video_thumb -> avideothumbnail.jpg;
我使用此作爲參考,以創建我哈希值的陣列:(例如,使用代替分裂quotewords)http://docstore.mik.ua/orelly/perl/prog3/ch09_03.htm,稍作修改的代碼。我覺得這主要是一個正則表達式的問題,但是如果有任何問題或被棄用的代碼被使用,請隨時糾正/解釋任何不一致的地方。
任何幫助,將不勝感激。提前致謝。
詳細的解釋和簡潔的答案。謝謝。 – s37syed