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

Arrays nach Hash: keine Peilung



<< |< 1 2 3 4 5 >| >> 48 Einträge, 5 Seiten
-Sven-
 2003-10-22 11:20
#66426 #66426
User since
2003-10-15
25 Artikel
BenutzerIn
[default_avatar]
Hi Leute und zwar hab ich ein grosses Problem.

Ich habe 3 mehrdimensionale Arrays die ich in ein einziges Hash umwandeln muss, dabei müssen doppelte Elemente berücksichtigt werden.

@Server(google,google,google,web,gmx);
@Pfad(start,start,test,mail,sms);
@Datei(index,start,login,test,send);

So das wichtigste: $server[0] und $pfad[0] und $Datei[0] bilden ein Datensatz, -> $server [n],$pfad[n] und $Datei[n] ebenso;

Nun muss dass alles in ein Hash rein, aber wie k.A., Ich hab zwar schon megalangen Code, aber so recht wills nicht funzen,

Hash muss dann diese Struktur haben.

Server->google->pfad->start->Datei->index
->start
->test-> Datei->login
->web->pfad -> mail -> Datei->test
->gmx->pfad -> sms -> Datei->send;

Ich hoffe ihr könnt mir helfen, vielen Dank im vorraus.
renee
 2003-10-22 12:01
#66427 #66427
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
probier's mal so (dabei müssen aber alle Arrays die gleiche Anzahl an Elementen haben):
Code (perl): (dl )
1
2
3
4
5
use Data::Dumper;
my %hash = ();
for(0..$#server){
  $hash{$_}->{$server[$_]}->{$pfad[$_]}->{$Datei[$_]} = 'start.html';
}
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/
[E|B]
 2003-10-22 12:13
#66428 #66428
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
[quote=-Sven-,22.10.2003, 09:20]Server->google->pfad->start->Datei->index
                                                ->start
                            ->test-> Datei->login
        ->web->pfad -> mail -> Datei->test
        ->gmx->pfad -> sms -> Datei->send;[/quote]
Wo ist denn da überhaupt die Struktur?! :o/
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
-Sven-
 2003-10-22 12:14
#66429 #66429
User since
2003-10-15
25 Artikel
BenutzerIn
[default_avatar]
Das funzt net. Es soll nur ein einziges Hash erschaffen werden. Du erzeugt mehrere. Aber trotzdem Danke
-Sven-
 2003-10-22 12:20
#66430 #66430
User since
2003-10-15
25 Artikel
BenutzerIn
[default_avatar]
Struktur:

var1 = 'google'=> {'start'=>{'index'},
{'start'}},
{'test'=>'start'},

Das muss dann irgenwie so aussehen. Wie eine Baumstruktur sozusagen.

Server
->Pfad1
->Files
->Pfad2
->Files
renee
 2003-10-22 12:23
#66431 #66431
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
So wie Du es aufge"malt" hast, sah es nach einem Hash mit mehreren Anonymen Hashs aus. Hier ein Vorschlag, bei dem Du ein Hash mit einem Anonymen Array hast:
Code (perl): (dl )
1
2
3
4
5
6
use Data::Dumper;
my %hash = ();
for(0..$#server){
  $hash{$_} = [$server[$_],$pfad[$_],$datei[$_]];
}
print Dumper[\%hash];

zugreifen kannst Du dann so:
Code (perl): (dl )
print $hash{1}->[0]; # und so weiter
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/
renee
 2003-10-22 12:26
#66432 #66432
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
So wie Du das in Deiner letzten Antwort geschrieben hast, brauchst Du doch mehrere Hashs! Allerdings darf das 'start' kein Key zu einem Hash sein, sondern zu einem Array (siehe meine letzte Antwort)...
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/
[E|B]
 2003-10-22 12:30
#66433 #66433
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Wieso legst du nicht eine XML Datei an und lässt Dumper drüber jagen? Das ist viel einfacher als anders und du kannst die Struktur leicht abändern.
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
-Sven-
 2003-10-22 12:33
#66434 #66434
User since
2003-10-15
25 Artikel
BenutzerIn
[default_avatar]
Muss ohne XML gehen.
Crian
 2003-10-22 13:11
#66435 #66435
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
[quote=-Sven-,22.10.2003, 09:20]@Server(google,google,google,web,gmx);
@Pfad(start,start,test,mail,sms);
@Datei(index,start,login,test,send);

So das wichtigste: $server[0] und $pfad[0] und $Datei[0] bilden ein Datensatz, -> $server [n],$pfad[n] und $Datei[n] ebenso;
[/quote]

Das sieht für mich danach aus, als würdest Du ein AoH brauchen, etwa so:

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
use strict;

my @Server = qw(google google google web  gmx );
my @Pfad   = qw(start  start  test   mail sms );
my @Datei  = qw(index  start  login  test send);

my @AoH    = ();

my $l      = scalar @Server;

die "unterschiedlich große Arrays" if $l != scalar @Server or
                                     $l != scalar @Pfad   or
                                     $l != scalar @Datei  ;

for my $index (0..$l-1) {
   push @AoH, {
                server => $Server[$index],
                pfad   => $Pfad  [$index],
                datei  => $Datei [$index],
              }
}

use Data::Dumper;

print Dumper \@AoH;


mit der Ausgabe

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
$VAR1 = [
         {
           'pfad' => 'start',
           'datei' => 'index',
           'server' => 'google'
         },
         {
           'pfad' => 'start',
           'datei' => 'start',
           'server' => 'google'
         },
         {
           'pfad' => 'test',
           'datei' => 'login',
           'server' => 'google'
         },
         {
           'pfad' => 'mail',
           'datei' => 'test',
           'server' => 'web'
         },
         {
           'pfad' => 'sms',
           'datei' => 'send',
           'server' => 'gmx'
         }
       ];


Ist es das, was Dir vorschwebt?\n\n

<!--EDIT|Crian|1066814908-->
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 3 4 5 >| >> 48 Einträge, 5 Seiten



View all threads created 2003-10-22 11:20.