if (/$_[0] =~ /^([^:]+):([^|]+)(?:\|(.*))?$/ || $_[0] =~ /^([^|)+)\|(.*)$/) { @key{qw /name definition altdefinition/} = ($1, $2, defined $3 ? $3 : "") } #### if ($_[0] =~ /\|/) { @key{qw /name definition altdefinition/} = split /\|/, $_[0]; $key{altdefinition} = "" unless defined $key{altdefinition}; }