diff options
Diffstat (limited to 'NPTest.pm')
-rw-r--r-- | NPTest.pm | 36 |
1 files changed, 19 insertions, 17 deletions
@@ -422,6 +422,7 @@ sub LoadCache { return if exists( $CACHE{'_cache_loaded_'} ); + my $fileContents = ""; if ( -f $CACHEFILENAME ) { my( $fileHandle ) = new IO::File; @@ -432,44 +433,45 @@ sub LoadCache return; } - my( $fileContents ) = join( "\n", <$fileHandle> ); - + $fileContents = join("", <$fileHandle>); $fileHandle->close(); + chomp($fileContents); my( $contentsRef ) = eval $fileContents; %CACHE = %{$contentsRef}; } - $CACHE{'_cache_loaded_'} = 1; + $CACHE{'_cache_loaded_'} = 1; + $CACHE{'_original_cache'} = $fileContents; } sub SaveCache { delete $CACHE{'_cache_loaded_'}; + my $oldFileContents = delete $CACHE{'_original_cache'}; - my( $fileHandle ) = new IO::File; - - if ( ! $fileHandle->open( "> ${CACHEFILENAME}" ) ) - { - print STDERR "NPTest::LoadCache() : Problem saving ${CACHEFILENAME} : $!\n"; - return; - } - - my( $dataDumper ) = new Data::Dumper( [ \%CACHE ] ); - + my($dataDumper) = new Data::Dumper([\%CACHE]); $dataDumper->Terse(1); $dataDumper->Sortkeys(1); - my $data = $dataDumper->Dump(); $data =~ s/^\s+/ /gmx; # make sure all systems use same amount of whitespace $data =~ s/^\s+}/}/gmx; - print $fileHandle $data; + chomp($data); - $fileHandle->close(); + if($oldFileContents ne $data) { + my($fileHandle) = new IO::File; + if (!$fileHandle->open( "> ${CACHEFILENAME}")) { + print STDERR "NPTest::LoadCache() : Problem saving ${CACHEFILENAME} : $!\n"; + return; + } + print $fileHandle $data; + $fileHandle->close(); + } - $CACHE{'_cache_loaded_'} = 1; + $CACHE{'_cache_loaded_'} = 1; + $CACHE{'_original_cache'} = $data; } # |