14. november 2005 - 09:58
Der er
8 kommentarer og 1 løsning
array i hash
Hi, jeg har et perlscript: ...................... #!/usr/bin/perl my %hash; my @array = ('test1','test2','test3','test4'); $hash{'v1'} = 'value1'; @hash{'v2'} = @array; $hash{'v3'} = 'value2'; print $hash{'v1'}."\n"; my $value; foreach $value (@hash{'v2'}) { print $value."\n"; } print $hash{'v3'}."\n"; ................... scriptet giver: value1 test1 value2 Hvordan kan jeg få scriptet til, at den viser alle værdier i arrayet? Altå sådan at scriptet giver: value1 test1 test2 test3 test4 value2 med venlig hilsen KernelX
Annonceindlæg tema
14. november 2005 - 10:22
#1
#!/usr/bin/perl my %hash; my @array = ('test1','test2','test3','test4'); $hash{'v1'} = 'value1'; @hash{'v2'} = \@array; $hash{'v3'} = 'value2'; print $hash{'v1'}."\n"; my $value; foreach $value (@{$hash{'v2'}}) { print $value."\n"; } print $hash{'v3'}."\n";
14. november 2005 - 10:23
#2
Og så ville jeg nok også¨ $hash{'v2'} = \@array;
14. november 2005 - 11:02
#3
#!/usr/bin/perl my %hash; my @array = ('test1','test2','test3','test4'); my @testArray; $hash{'v1'} = 'value1'; $hash{'v2'} = \@array; $hash{'v3'} = 'value2'; $testArray[0] = {%hash}; @array = ('test11','test12','test13','test14'); $hash{'v1'} = 'value1'; $hash{'v2'} = \@array; $hash{'v3'} = 'value2'; $testArray[1] = {%hash}; print $hash{'v1'}."\n"; my $value; my %testHash; ########################################## %testHash = %{$testArray[0]}; foreach $value (@{$testHash{'v2'}}) { print $value."\n"; } ########################################## %testHash = %{$testArray[1]}; foreach $value (@{$testHash{'v2'}}) { print $value."\n"; } ########################################## print $hash{'v3'}."\n"; .................... Problemet med en pointer er, at den altid peger på samme sted. så værdierne test1, test2, test3 og test4 vil ikke eksistere pga. at de bliever overskrivet af test11 ... test14 (i ovenstående eksempel). Findes der en mulighed uden at bruge pointer?
14. november 2005 - 11:17
#4
$etEllerAndetArray[0] = {%enEllerAndenHash}; # det burde virke # findes der ikke en mulighed, for at lave det den omvendte vej? $enEllerAndenHash{'v1'} = {@etEllerAndetArray}; # virker ikke som det skal!?
14. november 2005 - 12:30
#5
Umiddelbart ville jeg bare lade være med at bruge samme variabel.
14. november 2005 - 13:00
#6
det er ikke muligt. i scriptet, som jeg vil komme til at skrive, ved jeg ikke hvor mange variabler det er. Skriptet skal være flexibel i dette punkt.
14. november 2005 - 13:52
#7
#!/usr/bin/perl my %hash; my @array = ('test1','test2','test3','test4'); my @testArray; $hash{'v1'} = 'value1'; $hash{'v2'} = [@array]; $hash{'v3'} = 'value2'; $testArray[0] = {%hash}; @array = ('test11','test12','test13','test14'); $hash{'v1'} = 'value1'; $hash{'v2'} = [@array]; $hash{'v3'} = 'value2'; $testArray[1] = {%hash}; print $hash{'v1'}."\n"; my $value; my %testHash; ########################################## %testHash = %{$testArray[0]}; foreach $value (@{$testHash{'v2'}}) { print $value."\n"; } ########################################## %testHash = %{$testArray[1]}; foreach $value (@{$testHash{'v2'}}) { print $value."\n"; } ########################################## print $hash{'v3'}."\n"; -------------------------------- -------------------------------- $hash{'v2'} = [@array]; det virker. Mange tak for hjælpen. Husk at skrive svar.
14. november 2005 - 14:13
#8
Hvis du ikke skal have en variabel kan du $hash{'v2'} = [('test1','test2','test3','test4')]; Men ellers tak, jeg samler slet ikke på point.
14. november 2005 - 15:09
#9
ok
Kurser inden for grundlæggende programmering