Avatar billede dank Nybegynder
20. marts 2004 - 14:20 Der er 17 kommentarer

tildele variabel 'variabel' værdi

Hvis jeg får noget input, f.eks. 'abc123', hvordan tildeler jeg

abc123 en værdi? således at abc123 = 890

Og kan jeg udvide endnu et led, således at

abc123[kendetegn1]=10
abc123[kendetegn2]=30

Hvordan kan man gøre disse ting?
Avatar billede mfalck Praktikant
20. marts 2004 - 14:23 #1
hvis du kører uden strict så kan du blot bruge variablen så opretter perl selv den for dig. Det andet du spørger om er vist mere en hash du kigger efter
Avatar billede mfalck Praktikant
20. marts 2004 - 14:24 #2
prøv evt at bruge

$abc123->{"kendetegn1"}=10;
$abc123->{"kendetegn2"}=30;
Avatar billede mfalck Praktikant
20. marts 2004 - 14:24 #3
husk at variable i perl starter med en $ .. er det en konfigurationsfil du bruger?
Avatar billede dank Nybegynder
20. marts 2004 - 14:26 #4
ok, men du skriver $abc123 problemet er at jeg ikke kender variablens navn til at starte med. Det *kunne* være abc123, men det kan også vise sig at være 'def789'
Avatar billede mfalck Praktikant
20. marts 2004 - 14:29 #5
ok, jeg kan godt se hvad du mener. Er det ikke så ret svært at håndtere disse variable bagefter, medmindre du lægger dem ind i en hash eller i et array som du kan løbe igennem ?
Avatar billede dank Nybegynder
20. marts 2004 - 14:33 #6
problemet er at jeg får x antal variabler fra forskellige steder. Disse skal derefter tildeles forskellige værdier efterhånden som disse kendes.

Jeg kan ikke lave alm. arrays, da antallet af variabler er ukendte.

Så jeg har behov for at kunne oprette dem efterhånden som jeg kender dem og fylde data i dem. Når jeg er færdig med dem har jeg nok også behov for at kunne slette dem igen.
Avatar billede dank Nybegynder
20. marts 2004 - 14:40 #7
googlede mig frem til følgende:

$var="abc123";
%hash = ( key => "$var", lemon => "curd" );
Avatar billede mfalck Praktikant
20. marts 2004 - 14:41 #8
det lyder som et job for Hash-man :-)

Nej, hvis du lægger variablene ind i en hash, kan du udvide og indskrænke den efter behov og løbe den igennem for at få værdierne ud.
Det vil være noget ala
$myhash{$variabel1}{"kendetegn1"}=10;
$myhash{$variabel2}{"kendetegn1"}=20;
Avatar billede mfalck Praktikant
20. marts 2004 - 14:41 #9
dammit .. jeg er langsommmere end google :-)
Avatar billede dank Nybegynder
20. marts 2004 - 14:46 #10
svar?

Jeg har 2 tillægsspørgsmål i denne forbindelse

Hvordan printer jeg hele indholdet af $myhash{$variabel2}

Hvordan sletter jeg hele $myhash{$variabel1} Således at der ikke benyttes hukommelse til denne?
Avatar billede dank Nybegynder
20. marts 2004 - 14:46 #11
(men ellers ser det ud til at virke) :)
Avatar billede mfalck Praktikant
20. marts 2004 - 14:49 #12
du må gerne beholde pointsne - jeg regner med at trække lidt på dig i forbindelse med at lave den dist som jeg skrev om  :-)

while(($key, $value) = each(%myhash)) {
    print "$key = $value";
}
Avatar billede mfalck Praktikant
20. marts 2004 - 14:49 #13
pointsne - pointene, mente jeg :-)
Avatar billede dank Nybegynder
20. marts 2004 - 14:50 #14
oki.. thx... Så må jeg se hvor meget jeg kan hjælpe med... :)
Avatar billede mfalck Praktikant
20. marts 2004 - 14:51 #15
mon ikke :-)
Avatar billede dank Nybegynder
20. marts 2004 - 15:14 #16
HAr stadig et lille problem

Hvis jeg kører din løkke for at udskrive indholdet får jeg dette svar:

= HASH(0x82c53a0)
Avatar billede mfalck Praktikant
20. marts 2004 - 15:18 #17
ok - det ser ud som om du har endnu en hash inde i din ydre hash (hvis du har gjort som jeg skrev så passer det også meget godt).

I så fald skal du lave endnu en løkke ala den jeg beskrev og hente værdierne ud. Noget i denne stil:

while(($key, $value) = each(%myhash)) {
  while(($key1, $value1) = each(%{$value})) {
    print "$key1 => $value2\n";
    }
}
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