Thread array in hash erweitern (23 answers)
Opened by jan99 at 2010-09-03 12:59

renee
 2010-09-07 10:34
#141238 #141238
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
2010-09-07T06:55:16 jan99
Code (perl): (dl )
1
2
3
4
5
6
7
8
        for my $data ($key_id_list{$key})
        {
          print Dumper($data);
                print "--> ".scalar($data)."\n";
                
                # als nächstes werde ich dann eine schleife einbauen mit welcher
                # die daten des arrays ausgelesen werden können.
        }


kann mir einer sagen warum dennoch ebei der scalar-ausgabe folgendes kommt:

--> ARRAY(0x3d1f194)

Gruß Jan :-)


In $data steckt eine Arrayreferenz. Wenn Du auf eine Arrayreferenz ein scalar verwendest, bekommst Du wieder die Referenz zurück. Also ist Deine print Zeile äquivalent zu print "--> " . $data . "\n".

Durch die String-Konkatenation wird die Arrayreferenz "stringifiziert". Bei der Stringifizierung einer Referenz bekommst Du immer den Typ der Referenz (das was Du auch bei ref() bekommen würdest) und die Adresse in Hex zurück.

Probier mal:
Code (perl): (dl )
1
2
3
4
5
my $hashref = {};
my $arref = [];
my $scalarref = \'';

print "$hashref $arref $scalarref";


Dann bekommst Du so etwas in der Art:

Quote
HASH(0x8153c28) ARRAY(0x81545f4) SCALAR(0x8154660)


Die "" bewirken auch eine Stringifizierung.
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/

View full thread array in hash erweitern