Если у вас есть контроль над файлом данных, подумайте о переключении с пользовательского формата на что-то вроде YAML. Это дает вам много возможностей из коробки без необходимости взламывать ваш пользовательский формат все больше и больше. В частности, множественные ключи, создающие список, неочевидны. Способ YAML сделать это гораздо яснее.
name: Wally Jones
department: [foo, bar]
location: [baz, biff]
Обратите внимание, что YAML позволяет создавать пары ключ / значение, чтобы они выстраивались в ряд для удобства чтения.
И код для его анализа выполняется модулем, YAML :: XS - лучший из всех.
use File::Slurp;
use YAML::XS;
use Data::Dumper;
print Dumper Load scalar read_file(shift);
И структура данных выглядит так:
$VAR1 = {
'department' => [
'foo',
'bar'
],
'location' => [
'baz',
'biff'
],
'name' => 'Wally Jones'
};