Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7623[/thread]

Frage zu Hash (Seite 2)



<< |< 1 2 >| >> 16 Einträge, 2 Seiten
jason-duff
 2006-01-16 14:59
#61939 #61939
User since
2005-10-11
23 Artikel
BenutzerIn
[default_avatar]
hallo crian,

$dir sollte aber drin bleiben, da er bei der Dateisuche automatisch ins Hash als key geschrieben wird.weil ich muss ja später wenn ich die Funktion zb. traffic () aufrufe,zu dem Verzeichnis rein und die Dateien die deren Namen im array sind einlesen.
Ich glaube jetzt hab ich euch total durcheinandergebracht.;-)

Ich versuche mal deinen Code einzubringen.

gruss. Jason\n\n

<!--EDIT|jason-duff|1137416445-->
jason-duff
 2006-01-16 15:20
#61940 #61940
User since
2005-10-11
23 Artikel
BenutzerIn
[default_avatar]
hallo nochmal,

Dein hash sieht gut aus, aber da ich mein Hash %dirs nicht nachträglich modifizieren kann, ist es jetzt bissle blöd.

oben im Code sieht man wie man den Hash zusammenstellt.


'./cisco-items/smfdsdn4/fe0/traffic'
'./cisco-items/smfdsdn2/l0/traffic'
'./cisco-items/smfdsdn4/packetlossout'
./cisco-items/smfdsdn4/jittermaxpossd'
'./cisco-items/smfdsdn4/jittermaxnegsd'
.
.
.

so sehen die Orginalpfade aus. ./cisco-items ist in dem Fall immer gleich...
renee
 2006-01-17 05:58
#61941 #61941
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
nimm einfach noch einen zweiten Hash - wenn Du den anderen Hash wirklich nicht aendern kannst...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
my $path = './space/dir/';
my %codes = (
'traffic' => \&traffic ,
'packetloss' => \&packetloss,
'JitterIN' => \&jitter_in,
'jitterOUT' => \&jitter_out ,
'PacketLossIN' => \&packet_loss_in ,
'PacketLossOUT' => \&packet_loss_out ,
);

foreach my $path(keys(%dir)){
(my $pathforcode = $path) =~ /\/(.*?)\/[^\/]*$/;
$codes{$pathforcode}->($path,$dir{$path});
}


(in Deinen Code einzufuegen)...
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/
jason-duff
 2006-01-17 10:40
#61942 #61942
User since
2005-10-11
23 Artikel
BenutzerIn
[default_avatar]
hallo,

der code sieht gut aus, doch das Problem dabei ist daß,
JitterIn und JitterOut zusammen an eine Funktion übergeben werden müssen.

Denn es ist so. bei traffic rufe ich eine Funktion traffic() auf,die eine Referenz auf das array(mit den Dateien) übergeben bekommt und einen Pfad dorthin. Dann zeichnet die funktion mit hilfe der .rrd Dteien den traffic -graph.

Der Jitter Graph besteht aber aus JitterIn und JitterOut.D.h wenn beim typ JitterIn oder JitterOut vorkommt soll ne Funktion Jitter() aufgerufen werden , die die arrays und Pfade von jitterIn und JitterOut mitbekommt(also 4 parameter). Danach kann der gemeinsame Graph gezeichnet werden.
PacketLossIN u.  PacketLossOut werden ebenfalls in einem Graph gezeichnet.

hoffe ihr habt verstanden warum es mit dem vorherigen Code nicht ganz klappt.

hoffe euch fällt noch was ein. Ich bemühe mich gerade ebenfalls um ne lösung....\n\n

<!--EDIT|jason-duff|1137487313-->
jason-duff
 2006-01-17 14:10
#61943 #61943
User since
2005-10-11
23 Artikel
BenutzerIn
[default_avatar]
hallo Leute habe dass problem jetzt so gelöst. Ist vielleicht nicht wirklich schön aber es funzt. genau so wollte ich es haben. man kann es mit sicherheit auch besser machen.
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
my %relationen = (
 'jittermaxnegsd'=>{'rel'=>'jittermaxpossd','func'=>\&jitter_out},
 'jittermaxpossd'=>{'rel'=>'jittermaxnegsd','func'=>\&jitter_out},
 'packetlossin'  =>{'rel'=>'packetlossout' ,'func'=>\&packet_loss},
 'packetlossout' =>{'rel'=>'packetlossin'  ,'func'=>\&packet_loss},

);

my %nonrelation = (
 'traffic' => \&traffic,
 'cpu' => \&cpu,
);

foreach my $path(keys(%dirs)){

 my @pathitems =(split (/\//,$path));
 my $typ =$pathitems[-1];

 if (exists $relation{$typ})
  {
    $pathitems[-1]=$relation{$typ}{'rel'};
    my $path2 = join('/',@pathitems);
       
    $relation{$typ}{'func'}($path,$dirs{$path},$path2,$dirs{$path2});
 
  }else{ $nonrelation{$typ}($path,$dirs{$path});}

}


%dirs ist ein Hash der Form

%dirs =( './cisco-items/smfdsdn4/packetlossout' =>\@array,
         ./cisco-items/smfdsdn4/packetlossin'=> \@array,
         ./cisco-items/smfdsdn3/s0/traffic'=> \@array;
         usw...
      )\n\n

<!--EDIT|jason-duff|1137500800-->
Crian
 2006-01-17 16:54
#61944 #61944
User since
2003-08-04
5875 Artikel
ModeratorIn
[Homepage]
user image
gut :) ... optimieren kannst du das ja, wenn Zeit ist.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2006-01-16 12:13.