Gla*_*ost 2 arrays perl hash loops perl-data-structures
如何将"哈希数组"元素作为数组传递给函数?
比方说,我想将所有$link->{text}
数组作为数组传递给sort()
函数.
#!/usr/bin/perl
use strict; use warnings;
my $field = <<EOS;
<a href="baboon.html">Baboon</a>
<a href="antelope.html">Antelope</a>
<a href="dog.html">dog</a>
<a href="cat.html">cat</a>
EOS
#/ this comment is to unconfuse the SO syntax highlighter.
my @array_of_links;
while ($field =~ m{<a.*?href="(.*?)".*?>(.*?)</a>}g) {
push @array_of_links, { url => $1, text => $2 };
}
for my $link (@array_of_links) {
print qq("$link->{text}" goes to -> "$link->{url}"\n);
}
Run Code Online (Sandbox Code Playgroud)
如果要按文本对链接进行排序,
my @sorted_links = sort { $a->{text} cmp $b->{text} } @array_of_links;
Run Code Online (Sandbox Code Playgroud)
如果你真的只想获取和排序文本,
my @text = sort map $_->{text}, @array_of_links;
Run Code Online (Sandbox Code Playgroud)