perl - 在 Perl 中从括号中获取键值对

标签 perl grep

如果我有一个由方括号中的元组组成的字符串,并且我想在 Perl 中从元组中获取最大值怎么办?示例:

输入:[everyday,32][hoho,16][toodledum,128][echigo,4]

输出:128

最佳答案

如果你想要所有的数据,你可以先把它放入一个散列中。

my %data = $str =~ /\[([^,]+),([^\]]+)\]/g;
use List::Util qw'max';
my($max) = max(values %data);
print "max: $max\n";

如果你想知道哪个键有那个数字,你可以使用 grep

print "key: $_\n" for grep { $data{$_} == $max } keys %data;

如果你真的只需要最大值:

use List::Util qw'max';
print max $str =~ /\[[^,]+,([^\]]+)\]/g;

关于perl - 在 Perl 中从括号中获取键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1456973/

相关文章:

perl - Perl 的 Slurp 模块如何工作?

perl - 如何将 Perl 输出发送到 STDOUT 和变量?

perl - 如何通过套接字共享 Perl 数据结构?

正则表达式仅使用 egrep 捕获整个单词

linux - 递归查找文件名中包含 'string.txt'的所有文件

perl - 如何使用一条语句读取 Perl 中的目录?

xml - 查找单个标签内n个相同的内部标签内容

grep - 使用 grep 和正则表达式来过滤匹配项

regex - GNU grep 的基本/扩展和 PCRE (`-P` ) 正则表达式之间有什么区别?

variables - 获取变量的第一个字符