mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Sa 27.04.2024 02:54 Benutzername: Passwort: Auto-Login

Thema: perl array screwup vom 02.08.2011


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> perl array screwup
Autor Nachricht
DEKONSTRUKTIV
Threadersteller

Dabei seit: 22.06.2009
Ort: bln
Alter: -
Geschlecht: -
Verfasst Di 02.08.2011 18:31
Titel

perl array screwup

Antworten mit Zitat Zum Seitenanfang

hallo kids,

ich hab hier ein problem mit perl, bei dem ich mir gerade die karten lege. ich reproduziere das problem mal mit folgenden horstscript:

Code:
#!perl
use Data::Dumper;

my $products=[
            {
               "CategoryString"=> "bar5787",
               "DepartmentKey"=> "skfgjhsfukghsfghfhdghr",
               "ProductGroup"=> "group1",
               "ProductShortName"=> "s.fjghskfjghksjfhgkjsfhgkjh46tga46u74"
            },
            {
               "CategoryString"=> "bar5787",
               "DepartmentKey"=> "skfgjhsfukghsfghfhdghr",
               "ProductGroup"=> "group2",
               "ProductShortName"=> "s.fjghskfjghksjfhgkjsfhgkjhw4635zwrhw"
            },
            {
               "CategoryString"=> "bar5787",
               "DepartmentKey"=> "skfgjhsfukghsfghfhdghr",
               "ProductGroup"=> "group3",
               "ProductShortName"=> "s.fjghskfjghksjfhgkjsfhgkjhsdtz46zuzhtgdh"
            },
            {
               "CategoryString"=> "bar5787",
               "DepartmentKey"=> "skfgjhsfukghsfghfhdghr",
               "ProductGroup"=> "group4",
               "ProductShortName"=> "s.fjghskfjghksjfhgkjsfhgkjhsagsrtz5zt"
            }
            
         ];

my %return;   
      
foreach $product (@$products){
   my $temp_id= $product->{CategoryString}."_".$product->{DepartmentKey};
   %return->{$temp_id}->{Department}= $product->{DepartmentKey};
   %return->{$temp_id}->{Category}= $product->{CategoryString};

   my @dummy= (%return->{$temp_id}->{Group}) || ();
   if(! grep ($_ eq $product->{ProductGroup}, @dummy)){
      push(@dummy, $product->{ProductGroup});
   }
   
   %return->{$temp_id}->{Group}= \@dummy;
}

@return= values(%return);
print Dumper(\@return);


das snippet produziert folgenden output:

Code:
$VAR1 = [
          {
            'Department' => 'skfgjhsfukghsfghfhdghr',
            'Category' => 'bar5787',
            'Group' => [
                         [
                           [
                             [
                               'group1'
                             ],
                             'group2'
                           ],
                           'group3'
                         ],
                         'group4'
                       ]
          }
        ];


euch wird das verschachtelte array Group als letztes hashelement auffallen. ich hätte das aber gerne dergestalt:

Code:
$VAR1 = [
          {
            'Department' => 'skfgjhsfukghsfghfhdghr',
            'Category' => 'bar5787',
            'Group' => [
                         'group1', 'group2', 'group3', 'group4'
                       ]
          }
        ];


ich komm nich dahinter gerade. any hints?


Zuletzt bearbeitet von DEKONSTRUKTIV am Di 02.08.2011 18:33, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
DEKONSTRUKTIV
Threadersteller

Dabei seit: 22.06.2009
Ort: bln
Alter: -
Geschlecht: -
Verfasst Do 04.08.2011 17:41
Titel

Antworten mit Zitat Zum Seitenanfang

ich habs geregelt bekommen. das problem war die zuweisung eines arrays ans hashelemnt im skalarkontext. der einfachheit halber poste ich mal den relevanten teil:


Code:
my $return= {};   
my $product;
      
foreach $product (@$products){
   my $temp_id= $product->{CategoryString}."_".$product->{DepartmentKey};

   my @dummy;
   if($return->{$temp_id}->{Group}){
      @dummy= @{$return->{$temp_id}->{Group}};
   }
   if(! grep ($_ eq $product->{ProductGroup}, @dummy)){
      push @dummy, $product->{ProductGroup};
   }
   @{$return->{$temp_id}->{Group}}= @dummy;

}

my @return= values(%$return);
print Dumper(\@return);
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
 
Ähnliche Themen Fieses PHP/MySQL-Skript gibt nur "Array Array Array..." aus
ASP, Perl, JSP Ping
perl - bildabmessungen rausbekommen
perl - seitenzahlen zusammenfassen.
Wie starte ich ein PERL Script?
[Perl] Kalender für Buchungsformular
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.