Учитывая произвольно вложенную структуру данных, как я могу создать новую структуру данных, чтобы все ее элементы были стандартизированы путем применения функции ко всем элементам в зависимости от типа элемента. Например, у меня может быть
$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.
Я читаю ответы на выполнение функции для каждого элемента структуры данных и чувствую, что Data :: Rmap может сработать, но не могу понять, как. Похоже, что Rmap работает на всех клавишах , а не только на значениях .