The following code is well running. It is mean for if there are user defined values then it put it in the hash if the user defined values are not present, then it access the default values by calling the sub routines. I am facing little problem. By using this program i got the header values which is either default values or user defined values.But the problem is that from the same program suppose i got the values for a INVITE request, during the running of the program i suppose use this program for getting the header values of a ACK request and use this hash for it, then the values of the hash (%cnf) are not changed. It takes the previous value which is stored during the procesing of the INVITE request. How the hash values are refreshed for different requests during the execution of a program?
use strict;
use warnings;
sub subject {
'Subject: default subject';
}
sub to {
'To: default_to@example.com';
}
sub from {
'From: default_from@example.com';
}
my %config = (
to => { regex => '^To:\s', sub => \&to },
from => { regex => '^From:\s', sub => \&from },
subject => { regex => '^Subject:\s', sub => \&subject },
);
my %cnf;
# Load user data
foreach (<DATA>) {
chomp;
foreach my $c (keys %config) {
if (/$config{$c}{regex}/) {
$cnf{$c} = $_;
last;
}
}
}
# Look for missing values and fill in defaults
foreach (keys %config) {
unless (exists $cnf{$_}) {
$cnf{$_} = $config{$_}{sub}->();
}
}
use Data::Dumper;
print Dumper \%cnf;
__DATA__
To: foo@example.com
From: bar@example.com
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.