in reply to Config file default options?
I think that if you store your values in a hash rather than individual variables then you'll find your system will be much easier to extend.
Here's a first draft of how I'd do it. It creates a hash called %cnf and the way the hash is built is controlled by another (potentially confusingly named) has called %config. In this example, 'to' and 'from' are set in the user input (simulated with the DATA filehandle) and the 'subject' is set from a default.
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
"The first rule of Perl club is you do not talk about
Perl club."
-- Chip Salzenberg
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Config file default options?
by sanjay nayak (Sexton) on Oct 04, 2006 at 13:28 UTC | |
by davorg (Chancellor) on Oct 05, 2006 at 08:54 UTC | |
|
Re^2: Config file default options?
by sanjay nayak (Sexton) on Sep 08, 2006 at 07:28 UTC | |
by davorg (Chancellor) on Sep 08, 2006 at 08:37 UTC | |
by sanjay nayak (Sexton) on Sep 08, 2006 at 09:08 UTC | |
by davorg (Chancellor) on Sep 08, 2006 at 09:42 UTC | |
by sanjay nayak (Sexton) on Sep 08, 2006 at 12:20 UTC |