1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# ----------8<-------- schipp
##############################
#
# 2.) Persitentes Hash
# * einlesen
# * ueberschreiben
#
# f_rw_FileMd5Sum_PerlDB
#
my $PerlDB = $bin_root . "/.File_Md5Sum_PerlDB";
my $PfadFile_PDB ; my $Md5_PDB ; # my %h_FileMd5Sum_PerlDB; <<< siehe: f_exit
#
sub f_rw_FileMd5Sum_PerlDB
{
dbmopen( %h_FileMd5Sum_PerlDB, $PerlDB , 0660 ) || f_die( $ScriptName . "::FATAL: Konnte die persistente Hash-Datei nicht oeffnen: '" . $PerlDB . "'\n" );
#
#print "\n\nDEVELOPERTEST 07::h_FileMd5Sum_PerlDB\n" ; foreach my $z ( sort( keys( %h_FileMd5Sum_PerlDB ) ) ) { print $z . " :: " . $h_FileMd5Sum_PerlDB{ $z } . "\n"; };
} #EO f_rw_FileMd5Sum_PerlDB
###
#
###############
# f_copy_hash
#
sub f_copy_hash
{
for ( keys( %h_FileMd5Sum_PerlDB ) ) { delete $h_FileMd5Sum_PerlDB{$_}; }; # Alt-Hash-Daten loeschen.
%h_FileMd5Sum_PerlDB = (); # Loeschen 2.te
%h_FileMd5Sum_PerlDB = %h_File_Md5Sum_dat; # Ab jetzt befinden sich die neuen Daten auf der Festplatte.
} #EO f_copy_hash
###
# ----------8<-------- schipp
########################################################################
#
# f_search_Alarm
#
# Alle Dateien, bei denen sich die Md5Sum geaendert hat, werden in
# eine Alram-Liste ueberfuert.
#
# Vorgehen:
# 1.) Alle Files aus '%h_File_Md5Sum_dat' mit Eintraegen aus
# '%h_FileMd5Sum_PerlDB' (Kein Ober- Untermengen-Vergleich)
# auf 'Md5Sum' vergleichen.
# 1.1) Ist ein Unterschied in der Md5Sum zu erkennen, wird die
# Datei in die Alram-Liste eingetragen.
#
my %h_Md5Sum_Alarm;
#
sub f_search_Alarm
{
foreach $Key_FileMd5 ( keys( %h_File_Md5Sum_dat ) )
{
foreach $Key_PerlDB ( keys( %h_FileMd5Sum_PerlDB ) )
{
$run_through++;
if( $Key_FileMd5 eq $Key_PerlDB )
{
#print "1:1 Key_PerlDB = " . $Key_PerlDB . "\t\tMd5Sum = " . $h_FileMd5Sum_PerlDB{ $Key_PerlDB } . "\n";
#print "1:1 Key_FileMd5 = " . $Key_FileMd5 . "\t\tMd5Sum = " . $h_File_Md5Sum_dat{ $Key_FileMd5 } . "\n\n";
##################
# Md5Sum-Vergleich
if( $h_File_Md5Sum_dat{ $Key_FileMd5 } ne $h_FileMd5Sum_PerlDB{ $Key_PerlDB } )
{
print LOG "DEVELOPERTEST::h_File_Md5Sum_dat{ Key_FileMd5 } = '" . $h_File_Md5Sum_dat{ $Key_FileMd5 } . "' = '" . $Key_FileMd5 . "'\n";
print LOG "DEVELOPERTEST::h_FileMd5Sum_PerlDB{ Key_PerlDB } = '" . $h_FileMd5Sum_PerlDB{ $Key_PerlDB } . "' = '" . $Key_PerlDB . "'\n\n---\n\n";
$h_Md5Sum_Alarm{ $Key_FileMd5 } = $h_File_Md5Sum_dat{ $Key_FileMd5 }
}
} #EO if Key_PerlDB = Key_FileMd5
} #EO foreach h_File_Md5Sum_dat
} #EO foreach h_FileMd5Sum_PerlDB
#print "\n\nDEVELOPERTEST 10::h_Md5Sum_Alarm\n" ; foreach my $z ( sort( keys( %h_Md5Sum_Alarm ) ) ) { print $z . " :: " . $h_Md5Sum_Alarm{ $z } . "\n"; };
} #EO f_search_Alarm
###
# ----------8<-------- schipp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
use strict; use warnings; use Data::Dumper; dbmopen(my %h_FileMd5Sum_PerlDB, "test.dbm", 0660 ); print "Aktuell drin:\n"; print Dumper \%h_FileMd5Sum_PerlDB; if ($ARGV[0] && $ARGV[0] eq 'clean') { print "Leere Hash.\n"; %h_FileMd5Sum_PerlDB = (); } else { print "Fuege Wert hinzu.\n"; $h_FileMd5Sum_PerlDB{rand()} = rand(); } dbmclose %h_FileMd5Sum_PerlDB;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[17:19:18] ~/test$ perl dbm1.pl
Aktuell drin:
$VAR1 = {};
Fuege Wert hinzu.
[17:19:21] ~/test$ perl dbm1.pl
Aktuell drin:
$VAR1 = {
'0.0638814420412643' => '0.945874316458688'
};
Fuege Wert hinzu.
[17:19:22] ~/test$ perl dbm1.pl
Aktuell drin:
$VAR1 = {
'0.499142777963669' => '0.14024860186419',
'0.0638814420412643' => '0.945874316458688'
};
Fuege Wert hinzu.
[17:19:23] ~/test$ perl dbm1.pl clean
Aktuell drin:
$VAR1 = {
'0.499142777963669' => '0.14024860186419',
'0.0638814420412643' => '0.945874316458688',
'0.516201025431172' => '0.596852673524157'
};
Leere Hash.
[17:19:25] ~/test$ perl dbm1.pl
Aktuell drin:
$VAR1 = {};
Fuege Wert hinzu.
[17:19:28] ~/test$ perl dbm1.pl
Aktuell drin:
$VAR1 = {
'0.217905852102803' => '0.371467244652198'
};
Fuege Wert hinzu.