Chapter 6. Working with Configuration Files

Let us consider the lowly config file. For better or worse, config files are omnipresent not just in the lives of sysadmins, but in the lives of anyone who ever has to configure software before using it. Yes, GUIs and web-based point-and-click festivals are becoming more prevalent for configuration, but even in those cases there’s often some piece of configuration information that has to be twiddled before you get to the nifty GUI installer.

From the Perl programmer’s point of view, the evolutionary stages of a program usually go like this. First, the programmer writes the roughest and simplest of scripts. Take for example the following script, which reads a file and adds some text to lines that begin with the string hostname: before writing the data out to a second file:

open my $DATA_FILE_H, '<', '/var/adm/data'
    or die "unable to open datafile: $!\n";
open my $OUTPUT_FILE_H, '>', '/var/adm/output'
    or die "unable to write to outputfile: $!\n";

while ( my $dataline = <$DATA_FILE_H> ) {
    chomp($dataline);
    if ( $dataline =~ /^hostname: / ) {
         $dataline .= '.example.edu';
    }
    print $OUTPUT_FILE_H $dataline . "\n";
}
close $DATA_FILE_H;
close $OUTPUT_FILE_H;

That’s quickly replaced by the next stage, the arrival of variables to represent parts of the program’s configuration:

my $datafile = '/var/adm/data'; # input data filename my $outputfile = '/var/adm/output'; # output data filename my $change_tag = 'hostname: '; # append data to these lines my ...

Get Automating System Administration with Perl, 2nd Edition now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.