When i change the code from $cnf{$c}=$_; to push @{$cnf{$c} }, $_; It doesn't work.
Suggest me some suitable code.
What I suggested you seems suitable enough, as the following minimal adaptation of your code shows:
#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my @fields=split /\n/, <<'.END'; "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>"; .END my %config = ( URI => { regex => qr/^INVITE\ssip:/}, To => { regex => '^To:'}, From => { regex => '^From:'}, Via => { regex => '^Via:'}, Call_ID => { regex => '^Call-ID:'}, CSeq => { regex => '^CSeq:'}, MaxForwards => { regex => '^Max-Forwards:'}, Contact => { regex => '^Contact:'}, ); my %cnf; foreach (@fields) { foreach my $c (keys %config) { if (/$config{$c}{regex}/) { push @{ $cnf{$c} }, $_; } } } print Dumper $cnf{Via}; __END__
Please note that I've never suggested you to blindily make that simple substitution and expect your code to work, but to change its logic in agreement with that change instead, nor am I claiming now that this is the best way to parse those headers or that I would do it like that. I hope to have given you a clue instead. Of course it won't be of much use unless you make the minimum effort to get acquainted with some basic perl first.
In reply to Re^3: How can I store two values with the same key in a hash?
by blazar
in thread How can I store two values with the same key in a hash?
by sanjay nayak
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |