Thread Probleme mit MLDBM (4 answers)
Opened by adler1860 at 2005-05-23 14:00

adler1860
 2005-05-23 14:00
#55092 #55092
User since
2005-05-23
2 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi,

ich möchte eine MLDBM eine Berkley-DB aufbauen, deren value widerum ein Hash ist. D.h. ich habe eine Textdatei mit folgendem inhalt (Suchbegriff, Anzahl)
reisen 302
google 393
ebay 3909
sport 9383
routenplaner 10
flirten 3921
usw.


Mit folgendem Code wird nun die Berkley-DB erzeugt und das funktioniert auch soweit.

Code: (dl )
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
#!c:\perl\bin\perl.exe

use MLDBM qw(DB_File Storable);
use Data::Dumper;

my $dbfile = "test.db";
my $txtfile = "kw2005-02.txt";
my $zeile;
my $zeitraum;
my $suchbegriff;
my $anzahl;
my @spalten;
my %hash;
my %uniq;

tie %hash, 'MLDBM', $dbfile or die "Can&´t open $dbfile: $!\n";

open(INPUT, "< $txtfile") or die "Kann $txtfile nicht öffnen $!\n";
while(<INPUT>){
chomp;
$zeile = $_;
($suchbegriff,$anzahl) = split("\t",$zeile);

$zeitraum = $txtfile;
$zeitraum =~ s/kw//;
$zeitraum =~ s/.txt//;

$uniq{ $zeitraum } = $anzahl;
$hash{ $suchbegriff } = \%uniq;

}

print Dumper(\%hash);

untie %hash;


Mein Problem ist nun, dass ich immer nur eine TXT-Datei einlesen kann und die Daten wieder überschrieben werden. Ich möchte aber, dass das Skript die erste TXT-Datei einliest, dann die zweite,... und die Werte aufsummiert werden.

Probiert hab ich das so, funktioniert aber leider nicht.
Code: (dl )
1
2
3
$href = exists $uniq{ $begriff } ? $uniq{ $begriff } : [];
push(@$href,$anzahl);
$hash{ $suchbegriff } = $href;


Kann mir jemand weiterhelfen, ich hab leider mit Perl nicht viel Erfahrung.

Vielen Dank im voraus

Johannes

View full thread Probleme mit MLDBM