my @columns= qw( name branch code timestamp info1 info2 id); $line=~ /^(A)::(B):(123-456) ([012]\d:[0-6]\d):(C)::(D):(789)/ or die "Malformed input [$line] in line $."; my %info; @info{ @columns }= ($1,$2,$3,$4,$5,$6);