Re: perl + Konfigurationsdatei
Hallo Kai,
Kai Wilke schrieb:
Use of uninitialized value $lease_file in stat at ./djb_update line 174.
Use of uninitialized value in numeric gt (>) at ./djb_update line 175.
Use of uninitialized value $update_freq in sleep at ./djb_update line
191.)
er liest also doch nicht ein *ODER* er liest nicht das ein, was es einlesen soll.
1. bezugnehmend auf die Mail von David:
ändere "read_conf_file" so ab:
### reads the configuration file & makes a hash of what's in there.
sub read_conf_file {
my %data = ();
unless (open(CONFFILE,$conf_file)) {
#`logger -t dns_update.pl error opening configuration file`;
print STDERR "Can't open configuration file\n";
exit 1;
}
while (<CONFFILE>) {
chomp;
s/#.*//;
s/^\s+//;
s/\s+$//;
# next unless length;
my ($var, $value) = split(/\s*=\s*/, $_, 2);
$data{$var} = $value;
}
close CONFFILE;
return %data;
}
2. das Format der conf-Datei sollte dann so sein:
# Domain name
domain_name = netzworkk.de
# DHCPD lease file
lease_file = /var/lib/dhcp3/dhcpd.leases
# where does tinydns stuff live?
tinydnspath = /etc/tinydns
und nicht so:
# Domain name
domain_name = "netzworkk.de"
# DHCPD lease file
lease_file = "/var/lib/dhcp3/dhcpd.leases"
# where does tinydns stuff live?
tinydnspath = "/etc/tinydns"
also *OHNE* Anführungszeichen!!!
3. Nach der Zeile
my %meine_daten = &read_conf_file;
ergänzt du folgende foreach-Schleife:
foreach my $key qw(domain_name lease_file tinydnspath
dhcp_dnsfile static_dnsfile update_freq debug) {
if ($meine_daten{$key} eq undef) {
print "Der Value von $key ist nicht definiert -> Abbruch!\n";
exit(1);
}
}
Dann wird abgebrochen, wenn er einen der Werte nicht kennt und gibt dir
den Key aus.
Mit freundlichen Grüßen
Hans-Dietrich
Reply to: