[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: