Hallo,
also irgendwie geht das script einfach nicht
Das kann ich mir denken, sieht ziemlich abenteuerlich aus;-)
So wie ich sehe, hast Du Dir die Dokumentation des Moduls nicht gründlich genug angesehen.
Hier ein einfaches Beispiel, das überprüft, ob jemals der Apache-Server installiert wurde:
<sample>
#!c:/perl/bin/perl -w
use strict;
use Win32::TieRegistry( Delimiter=>'/');
print "Apache ist da\n" if($Registry->{'HKEY_LOCAL_MACHINE/Software/Apache Group/Apache'});
</sample>
Du siehst, eighentlich ist es recht einfach. Du bindest das Modul ein, hier mit dem Delimiter '/'. Danach steht Deinem Script die Registry über die Referenz $Registry zur Verfügung.
Du hast uns zwar den Inhalt der Datei 'data.txt' vorenthalten, aber wenn da irgendwas drinsteht, das wie 'HKEY_LOCAL_MACHINE/Software/Apache Group/Apache' aussieht, dann hast Du eigentlich schon gewonnen.
Du mußt jetzt nur noch die Datei einlesen, in jeder Zeile die Zeilenumbrüche entfernen, und nachsehen, ob $Registry->{$zeile} existiert, so wie ich es oben mit dem Schlüssel für Apache gemacht habe.
open (DATEI, "<data.txt"); # vorhandene TXT mit registry Einträgen
Zugriffe auf externe Resourcen, wie z.B. Dateien, sollten immer auf Erfolg überprüft werden. Also
open(...) or die 'ups, daneben gegangen: '.$!;
@datei = <DATEI>;
Ich weiß nicht woher es kommt, daß jeder immer gleich die ganze Datei einliest. Oft genügt ein
while(<DATEI>)
{
# mach was mit $_
}
close (DATEI);
close(DATEI) or die "verd... die Datei zumachen hat irgendwie nicht geklappt:'.$!;
foreach (@datei)
{
(@p1) = (//, $_); # liest den Pfad aus der data.txt
undef (@p1[@p1-2]);
$pfadname = join ("", @p1);
print "Pfadname: $pfadname\n";
chomp ($_);
}
Was da genau abläuft will ich, glaube ich, gar nicht wissen:-)
Was soll z.B. das chomp, wenn $_ sowieso gleich wieder überschrieben wird.
Außerdem solltest Du an Deiner Code-Formatierung arbeiten. Deine Einrückungen machen es (vor allem Dir) wirklich schwer, die Struktur des Codes zu erkennen.
$zaehler = 0; # setzt den zähler auf null
use strict und my hat noch nie geschadet...
foreach $k (keys %vals) {
... Dann hättest Du wahrscheinlich gleich festgestellt, daß es kein Hash namens %vals gibt.
Den Rest lasse ich einmal unkommentiert und komme lieber zu
(hoffe mein Denkansatz war richtig!)
'Das glaube ich nicht, Tim';-)
Grüße
Klaus