in reply to How can I store two values with the same key in a hash?

First, I'll answer the question directly:
#!/usr/bin/perl use strict; use Data::Dumper; my $msg= "INVITE sip:paka@36.212.176.92 SIP/2.0 To:samir <sip:paka@36.212.176.92> Via: SIP/2.0/udp 36.212.176.90:5060;branch=z9hG4bk_Vn Via: SIP/2.0/udp 36.212.176.66:5060;branch=z9hG4bk_oo From: sanjay<sip:sanjay@36.212.176.90> Call-ID: _Vn8TZTk2H@36.212.176.90 CSeq: 215 INVITE Max-Forwards: 70 Contact: sanjay<sip:sanjay@36.212.176.90:5060>"; my @fields = split /\n/, $msg; my %config = ( URI => { regex => qr/^INVITE\ssip:/}, To => { regex => '^To:'}, From => { regex => '^From:'}, Via => { regex => '^Via:'}, Via1 => { regex => '^Via:'}, Call_ID => { regex => '^Call-ID:'}, CSeq => { regex => '^CSeq:'}, MaxForwards => { regex => '^Max-Forwards:'}, Contact => { regex => '^Contact:'}, ); my %cnf; foreach (@fields) { chomp; foreach my $c (sort keys %config) { if (/$config{$c}{regex}/) { next if exists $cnf{$c}; $cnf{$c} = $_; last; } } } print Dumper \%cnf;

That will give you what you asked for. The only change was in the for loop.

Now, there are a lot of very helpful people here. They tried to give you what is a more appropriate solution. This is not a place to come if you want people to solve all of your problems for you. If you would like someone to write all of your code for you, I recommend you hire a competent contractor. Demanding working code from people is not likely to go over well. I'm upvoting the people that tried to steer you in the right direction, and giving my rare downvote to the node where you demanded a different solution.