Привет, я генерирую числа внутри тегов на основе стиля
Например
<list-bull>
<P_list-bull>Use Microsoft Windows accessibility </P_list-bull>
<P_list-bull> Magnify the display </P_list-bull>
<P_list-simple> Change the size of text and icons </P_list-simple>
<P_list-simple> Convert the text displayed </P_list-simple>
<P_list-num> Change the contrast </P_list-num>
<P_list-simple>text and icons </P_list-simple>
<P_list-bull>Microsoft accessibility </P_list-bull>
</list-bull>
В приведенном выше примере мой ввод.Я хочу сгенерировать числа на основе стиля (бык, простой, num), в первом случае (любой тип) я должен сгенерировать один (1) внутри тега, затем 2 для второго стиля и так далее ....
Я хочу вывод в следующем формате
<list-bull>
<P_list-bull(1)>Use Microsoft Windows accessibility </P_list-bull(1)>
<P_list-bull(1)> Magnify the display </P_list-bull(1)>
<P_list-simple(2)> Change the size of text and icons </P_list-simple(2)>
<P_list-simple(2)> Convert the text displayed </P_list-simple(2)>
<P_list-num(3)> Change the contrast </P_list-num(3)>
<P_list-simple(2)>text and icons </P_list-simple(2)>
<P_list-bull(1)>Microsoft accessibility </P_list-bull(1)>
</list-bull>
Я пробую этот код ниже, но я не знаю, где исправить условие
while($str =~ /<list-(bull|num|alpha|roman|simple)(?:(?:(?!<\/list-\1>).)*)<\/list-\1>/sgi){
$str =~ s#<list-(bull|num|alpha|roman|simple)(?:(?:(?!<\/list-\1>).)*)<\/list-\1>#&List_find($&,$1)#sgei;
}
sub List_find
{
my ($line,$type) = @_;
my $currentlevel = 0;
my $line1;
while($line =~ s/<P_list-(bull|num|alpha|roman|simple)(?:(?:(?!<\/P_list-\1>).)*) <\/P_list-\1>/&Listnum($&)/sgie){}
sub Listnum
{
my $line2 = @_[0];
my ($style,$cont);
if($line2 =~ /<P_list-(.*?)>(.*?)<\/P_list-\1>/sgi)
{
$style = $1;
$cont = $2;
my $id =1;
if($type eq $style){
$line2 = "<P_list-$style($id)>$cont</P_list-$style($id)>";
}
else{
$line2 =~ /<P_list-(.*?)>(.*?)<\/P_list-\1>/s;
my $temp = $1;
if($style eq $temp)
{
$id++;
$line2 = "<P_list-$style($id)>$cont</P_list-$style($id)>";
}
else
{
$id = $id+2;
$line2 = "<P_list-$style($id)>$cont</P_list-$style($id)>";
}
}
return "$line2";
}
}
Я сравниваю первыйтег элемента списка с первым типом списка (бык), если он правильный, он сгенерирует один, иначе два, в другой части я хочу проверить второй и третий тип
плз дать некоторые предложения