我有一个数组:
@all (
<side.effect signif="life.threat">myocardial infarction</side.effect>
<side.effect signif="life.threat">hypersensitivity reactions</side.effect>
<side.effect signif="life.threat">lactic acidosis</side.effect>
<side.effect signif="most.freq">vomiting</side.effect>
<side.effect signif="most.freq">diarrhea</side.effect>
);
字符串
我想根据打开的XML标签/属性(“>)之后的值对数组进行排序,以产生以下输出:
<side.effect signif="most.freq">diarrhea</side.effect>
<side.effect signif="life.threat">hypersensitivity reactions</side.effect>
<side.effect signif="life.threat">lactic acidosis</side.effect>
<side.effect signif="life.threat">myocardial infarction</side.effect>
<side.effect signif="most.freq">vomiting</side.effect>
型
我无法将其转换为哈希,因为这将消除由于复制而产生的标签。我试过这个,但它没有排序他们:
my @sorted_all = sort {
my ($aa, $bb) = map { (split)[1] } $a, $b;
$bb <=> $aa;
} @all;
型
1条答案
按热度按时间5cg8jx4n1#
使用Sort::Key
字符串
当需要时,库使用Schwartzian Transform,首先为所有项目构建比较模式(而不是在每个对比较时重新构建)。我复制了输入,错别字和所有。
使用正则表达式解析XML标记依赖于这种非常特定的输入格式。如果格式有变化,请使用适当的XML解析器,如XML::LibXML。比如说
型
有关此代码,请参见XML::LibXML::Parser和XML::LibXML::Node。还有更多的文档,请参阅第一次提到的顶部文档链接。还有其他一些很好的XML库。
sid.effect
,以便获得有效的XML。*