Формат данных:
attribname: data
Пример данных:
cheese: good
pizza: good
bagel: good
fire: bad
Код:
my $subFilter='(.+?): (.+)';
my @attrib = ($dataSet=~/$subFilter/g);
for (@attrib)
{
print "$_\n";
}
Код выплевывает:
cheese
good
pizza
good
[etc...]
Мне было интересно, что это за легкий способ Перли?Я анализирую данные из журнала, данные выше - мусор для простоты.Я новичок в Perl, я подозреваю, что мог бы сделать это через фанатские индексы, но мне было интересно, есть ли короткий способ реализации этого?Есть ли способ поместить группы захвата в две разные переменные вместо последовательного добавления в список вместе со всеми совпадениями?
Редактировать: Я хочу, чтобы атрибут и его связанное значение были вместе, такЯ могу делать то, что мне нужно для них.Например, если в моем цикле for я мог получить доступ как к имени атрибута, так и к значению атрибута.
Редактировать:
Я пытался
my %attribs;
while (my $line = <$data>)
{
my ($attrib, $value) = ($line=~m/$subFilter/);
print $attribs{$attrib}," : ", $value,"\n";
}
ине повезло :( Я не получаю никакого вывода с этим. Мои данные находятся в переменной, а не в файле, потому что они анализируются из набора родительских данных, которые находятся в файле. Было бы удобно, если бы моя переменная работала такчто my (@attrib, @value) = ($line=~/$subFilter/g);
заполнил списки соответствующим образом несколькими совпадениями.
Решение:
my @line = ($7 =~/(.+?)\n/g);
for (@line)
{
my ($attrib, $value) = ($_=~m/$subFilter/);
if ($attrib ne "")
{
print $attrib," : ", $value,"\n";
}
}