【发布时间】:2012-04-03 02:22:30
【问题描述】:
给定一个任意嵌套的数据结构,我如何创建一个新的数据结构,以便通过根据元素的类型对所有元素应用函数来标准化其中的所有元素.例如,我可能有
$data = {
name => 'some one',
date => '2010-10-10 12:23:45',
sale => [34, 22, 65],
cust => {
name => 'Jimmy',
addr => '1 Foobar Way',
amnt => 452.024,
item => ['books', 'pens', 'post-it notes']
}
}
我想将所有文本值转换为大写,将所有日期转换为 UTC 日期时间,求所有整数的平方,将所有实数四舍五入并加 1,依此类推。因此,实际上,我想根据元素的类型对每个元素应用不同的函数。
实际上,数据可能通过数据库查询到达,在这种情况下它们已经是 Perl 数据结构,或者它们可能以 JSON 对象的形式开始存在,在这种情况下,我可以使用 JSON::from_json 将其转换为 Perl数据结构。思路是根据值类型标准化数据结构中的所有值,然后再将Perl数据结构作为JSON对象吐回来。
我阅读了the answers to executing a function on every element of a data structure 并认为 Data::Rmap 可能会解决问题,但不知道如何解决。 似乎 Rmap 也适用于所有 键,而不仅仅是 值。
【问题讨论】: