Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

(TIMTOWDI) Breaking a config file into name/value pairs

by stonecolddevin (Vicar)
on Sep 03, 2004 at 03:52 UTC ( #388201=snippet: print w/ replies, xml ) Need Help??

Description: This script simply takes a file in the "name=value" format, and breaks it into a hash for one to use as they please.

UPDATE: Due to my blindness and ignorance to search CPAN, I have discovered just now there is a module that does this EXACT thing. Damn.

Some links to CPAN mods of the same nature:
Config::Ini
Config::Tiny
### returns the requested setting
### Used like so: my $name = getSetting('name');
### Config file: name=Devin
sub getSetting {
    my ($attr_to_get) = shift;  # the attribute to get
    
    # opens and reads the config file,
    # returns a hash
    my %attrs = openCfgFile()
                           ('your/path/to/config.file');
                           
    # return the requested attribute if it exists
    # otherwise, give them a big fat null
    return $attrs{$attr_to_get}
         ? $attrs{$attr_to_get}
         : "NULL";
    
}


### open, read, and return the hash.
sub openCfgFile {
    my ($cfg) = shift;            # the file parameter
    # open and read
    open CFG, "<", $cfg or die  "File not found: $!";  
        my @settings = <CFG>;
    close CFG;
    
    my %values;                  # create the values hash
    foreach (@settings) {       # loop through the file
        chomp;                     # remove endline characters (\n, \r
+....)
        s|#.+||;                # remove comments
        s|"(.+?)"|$1|g;            # (not working) allow whitespace fo
+r strings
        s|\s||;                    # remove whitespace
        my( $key, $val) = split /=/; #  begin creating the hash, split
+ the file on the "=" sign
        $values{$key}=$val;             #  create the hash key/values 
+pairs
    }
    return %values;
}
Comment on (TIMTOWDI) Breaking a config file into name/value pairs
Download Code

Back to Snippets Section

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: snippet [id://388201]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (7)
As of 2015-07-05 18:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (67 votes), past polls