hotti: tied hash Config::IniFiles

Beitrag lesen

hi,

vermutlich funktioniert das Locken der Datei nicht richtig, so dass es Race-Conditions gibt. Mein Workaround sieht so aus:

  
sub wri{  
	untie(%cont) || return(); # Content in DB_File  
	  
	# Kopie der public.ini anlegen  
	open (OUT, ">$$cfg{path}{dbdir}/public.tmp") || return;  
	foreach my $url(keys %{$pub}){  
		print OUT "[$url]\n";  
		foreach my $p(keys %{$$pub{$url}}){  
			print OUT "$p=$$pub{$url}{$p}\n";  
		}  
		print OUT "\n";  
	}  
	close OUT;  
	untie(%{$pub}) || return;  
	  
	# Kopie zurückschreiben  
	require File::Copy;  
	File::Copy::copy("$$cfg{path}{dbdir}/public.tmp", "$$cfg{path}{dbdir}/public.ini");  
	  
	return "Written";  
  
	# fehlerhaft, manche Parameter fehlen  
	# tied( %{$pub} )->WriteConfig( "$$cfg{path}{dbdir}/public.ini" ) || return;  
	  
}