my (%foos, %bars); while( my $line = ) { chomp $line; if ( $line =~ /^foo ([^:]*):([^:]*)$/ ) { push( @{ $foos{ $1 } }, $2 ); } elsif ( $line =~ /^bar ([^:]*):([^:]*)$/ ) { push( @{ $bars{ $1 } }, $2 ); } else { # warn qq( "$line" is the wrong format.\n ); } } #### my (%foos, %bars); while( my $line = ) { chomp $line; if ( line =~ /^foo (?[^:]*):(?[^:]*)$/ ) { push( @{ $foos{ $+{KEY} } }, $+{VAL} ); } elsif ( $line =~ /^bar (?[^:]*):(?[^:]*)$/ ) { push( @{ $bars{ $+{KEY} } }, $+{VAL} ); } else { # warn qq( "$line" is the wrong format.\n ); } }