Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

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

by stonecolddevin (Parson)
on Sep 03, 2004 at 03:52 UTC ( [id://388201]=CUFP: print w/replies, xml ) Need Help??

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; }

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others scrutinizing the Monastery: (3)
As of 2024-03-29 06:06 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found