Avatar billede kernelx Juniormester
16. september 2005 - 12:44 Der er 7 kommentarer og
1 løsning

Array og hash

hi,
jeg har et script
---
$hash1{'a'}='a1';
$hash1{'b'}='b1';

$hash2{'a'}='a2';
$hash2{'b'}='b2';

$array[0] = %hash1;
$array[1] = %hash2;

foreach $attr (@array)
{
    print $attr{'a'}."\n";
    print $attr{'b'}."\n";
}

---
mit problem er, at man ikke må skrive
    foreach %attr (@array) <- med procent-tegn

mit spørgsmål er hvordan jeg inde i foreach-sløjfen kan få fat i værdierne fra hash'erne?


med venlig hilsen
KernelX
Avatar billede erikjacobsen Ekspert
16. september 2005 - 13:20 #1
Jeg går ud fra at du vil opnå noget i denne retning:

$hash1{'a'}='a1';
$hash1{'b'}='b1';

$hash2{'a'}='a2';
$hash2{'b'}='b2';

$array[0] = \%hash1;
$array[1] = \%hash2;

foreach $attr (@array)
{
    print $$attr{'a'}."\n";
    print $$attr{'b'}."\n";
}


Du kan med fordel læse: http://www.webreference.com/programming/perl/nested/2.html
Avatar billede kernelx Juniormester
16. september 2005 - 13:35 #2
mange tak, du glemte at skrive det som svar.
Avatar billede kernelx Juniormester
16. september 2005 - 13:36 #3
betyder et "\"-tegn at der bliver lavet en form for pointer?
Avatar billede erikjacobsen Ekspert
16. september 2005 - 13:39 #4
Ja, pointer - eller som de siger: reference.
Ingen fejl, jeg samler slet ikke på point.
Avatar billede kernelx Juniormester
16. september 2005 - 13:48 #5
ok
Avatar billede kernelx Juniormester
19. september 2005 - 08:13 #6
$hash{'a'}='a1';
$hash{'b'}='b1';
$array[0] = \%hash;

$hash{'a'}='a2';
$hash{'b'}='b2';
$array[0] = \%hash;

Den virker ikke.
Findes der en løsning, hvor man siger at %hash skal referencere til en anden (ny) adresse?
Avatar billede kernelx Juniormester
19. september 2005 - 08:14 #7
ups sorry ...

$hash{'a'}='a1';
$hash{'b'}='b1';
$array[0] = \%hash;

$hash{'a'}='a2';
$hash{'b'}='b2';
$array[1] = \%hash; # index 1 her
Avatar billede erikjacobsen Ekspert
19. september 2005 - 10:56 #8
Du vil være nødt til at fjerne variablen før du bruger den igen, så at sige:

  undef %hash;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester