my $line= q{info::gmdate:2013-06-07 05:57:tccat_cico::r}; my @columns= qw( type tstype timestamp info1 info2 rest); $line=~ /^(\w+)::(gmdate):(20\d\d-[01]\d-[0123]\d [012]\d:[0-6]\d):(\w+):(\w*):(.*)/ or die "Malformed input [$line] in line $."; my %info; @info{ @columns }= ($1,$2,$3,$4,$5,$6);