Schrift
[thread]8832[/thread]

Hash von Hashes einstiegsprobleme (Seite 2)

Leser: 3


<< |< 1 2 >| >> 20 Einträge, 2 Seiten
v0id
 2007-03-13 13:18
#74964 #74964
User since
2005-07-06
33 Artikel
BenutzerIn
[default_avatar]
mein code schaut nun so aus

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/opt/perl5.8.6/bin/perl -w

use strict;
use Time::Local;
use Data::Dumper;

my $dir = "/pfad/";
my $oldname = 0;
my @info = ();
my %dif_hash = ();

opendir(DIR, "$dir");
#@files = readdir(DIR);
my @files = grep{
$_ !~ /\.\.?$/ # filter . und ..
and
-f $dir.'/'.$_ # \374berpr\374fe, ob es eine datei ist
}readdir(DIR);
closedir(DIR);

print "Inhalt von $dir:\n";

foreach my $file (@files) {
#dateiname.20070117.001124.log

@info = $file =~ m/(.*)\.(\d{4})(\d{2})(\d{2})\.(\d{2})(\d{2})(\d{2})\.log/;

if ( $info[0] ne $oldname )
{
my %subhash = ();
@subhash{ qw/name year month day hour minute second/ } = @info;

$dif_hash{ $info[0] } = {
begin => { %subhash }
};
}
else
{
my %subhash = ();
@subhash{ qw/name year month day hour minute second/ } = @info;

$dif_hash{ $info[0] } = {
end => { %subhash }
};
}

$oldname = $1;

}

#print Dumper(\%dif_hash);


mittlerweile kommt als fehlermeldung "nur noch" das hier:

Use of uninitialized value at dir_4.pl line 28.
Use of uninitialized value at dir_4.pl line 33.
Use of uninitialized value at dir_4.pl line 33.
renee
 2007-03-13 13:36
#74965 #74965
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wer weiß, was da noch so für Dateien in dem Verzeichnis sind. Mach mal:
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
foreach my $file (@files) {
       #dateiname.20070117.001124.log

      if( my @info = $file =~ m/(.*)\.(\d{4})(\d{2})(\d{2})\.(\d{2})(\d{2})(\d{2})\.log/ ){
         
          my %subhash = ();
          @subhash{ qw/name year month day hour minute second/ } = @info;

my $key = 'end';

          if ( $info[0] ne $oldname )
          {
$key = 'begin';
          }

$dif_hash{ $info[0] } = {
$key => { %subhash }
};

          $oldname = $1;

      }

}


Und das my @info = () weiter oben raus...\n\n

<!--EDIT|renee|1173785897-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
v0id
 2007-03-13 14:06
#74966 #74966
User since
2005-07-06
33 Artikel
BenutzerIn
[default_avatar]
juhu!!! keine fehlermeldungen mehr, jetzt muss ich nur noch rausfinden wie ich mit den einzelnen werten arbeiten kann..

Danke Sehr für die weitreichende hilfe! ;)
nepos
 2007-03-13 23:42
#74967 #74967
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Wenn du öfter mal sowas verschachteltes brauchst kann ich dir nur das CPAN:Data::Dumper-Modul empfehlen. Damit kann man verschachtelte Strukturen z.B. fürs Debuggen sehr schön ausgeben lassen.
ptk
 2007-03-14 00:22
#74968 #74968
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Theoretisch kann man auch YAML zum Debuggen von Datenstrukturen verwendet. Ich habe das eine Zeit lang gemacht, bin aber wieder zu Data::Dumper zurückgekehrt.\n\n

<!--EDIT|ptk|1173824552-->
pktm
 2007-03-14 01:55
#74969 #74969
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Ganz praktisch ist auch, sich in den Schleifen auszugeben, was man gerade verarbeiten möchte. So hättest du hier z.B. bei einem print "verarbeite '$file'...\"; die .. & den . schnell als Fehlerquelle gefunden.
http://www.intergastro-service.de (mein erstes CMS :) )
v0id
 2007-03-14 08:16
#74970 #74970
User since
2005-07-06
33 Artikel
BenutzerIn
[default_avatar]
danke sehr für die tips, perl muss ich noch ne ganze weile weiter lernen um wieder ein wenig fitter zu sein.

zurzeit suche ich noch die möglichkeit die hashes mit einer schleife ausgeben zu lassen..
da die einzelnen werte, (anfangs und endwert) noch verarbeitet werden müssen um später in eine datei gespeichert zu werden.

ich habe mir das ganze mit dumper nochmal ausgeben lassen. leider sind da keine werte bei dem unterschlüssel "end" enthalten :(
renee
 2007-03-14 09:00
#74971 #74971
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Nenne mal ein paar Dateinamen...

Was meinst Du mit "Hashes mit einer Schleife ausgeben lassen"? Wie soll die Ausgabe aussehen?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
v0id
 2007-03-14 14:14
#74972 #74972
User since
2005-07-06
33 Artikel
BenutzerIn
[default_avatar]
so hier ein beispiel wie die namen aussehen, davon gibts eine menge.
der text am anfang soll unterschieden werden und im prinzip brauche ich immer nur in einem hash die erste und die letzte gleiche datei, da ich aus den daten die differenz ermitteln möchte.

text_der_als_name_gespeichert_werden.soll.20060914.001256.log
text_der_als_name_gespeichert_werden.soll.20060915.000918.log
text_der_als_name_gespeichert_werden.soll.20060916.000947.log
text_der_als_name_gespeichert_werden.soll.20070314.000931.log
anderer_text_der_gespeichert_werden.soll.20070112.014653.log
anderer_text_der_gespeichert_werden.soll.20070115.015054.log
anderer_text_der_gespeichert_werden.soll.20070115.153410.log
anderer_text_der_gespeichert_werden.soll.20070216.015747.log
anderer_text_der_gespeichert_werden.soll.20070308.015051.log
anderer_text_der_gespeichert_werden.soll.20070314.015147.log

und mit hashes mit einer schleife ausgeben meine ich sowas in der art :blush:

foreach (%AdressDaten){
print $dif_hash{$dername}{'begin'}{'minute'};
print $dif_hash{$dername}{'begin'}{'minute'};
}

mir is im moment unklar wieso nix bei 'end' drinsteht
pktm
 2007-03-14 20:33
#74973 #74973
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Wie man die Werte eines Hashes ausgibt habe ich in meinem ersten Beitrag hier geschildert. Das ist die Sache mt der foreach und der while-Schleife.
http://www.intergastro-service.de (mein erstes CMS :) )
<< |< 1 2 >| >> 20 Einträge, 2 Seiten



View all threads created 2007-03-12 18:01.