/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
Sætte $key's værdi som lokal variabel
Fra : Jens Thomsen


Dato : 31-03-08 04:34

Jeg modtager en hash i en sub og vil gerne sætte alle dens nøgler som lokale
variabler.
Jeg kender ikke disse nøgler på forhånd og jeg anvender strict og warnings.

Min tanke var (som man gør i php):

sub dims {
my %h = @_;
my ${$key} = $value while (my ($key, $value) = each %h);

print STDERR $hamster;
}

Men syntaksen for at sætte variablen er forkert.
Hvad kan man gøre? [1]



[1]
Jeg har forsøgt at rode med eval() men det bliver noget værre rod!



 
 
Peter Makholm (31-03-2008)
Kommentar
Fra : Peter Makholm


Dato : 31-03-08 04:59

"Jens Thomsen" <jt@nej.nej> writes:

> sub dims {
> my %h = @_;
> my ${$key} = $value while (my ($key, $value) = each %h);
>
> print STDERR $hamster;
> }
>
> Men syntaksen for at sætte variablen er forkert.
> Hvad kan man gøre? [1]

Man kan lade være med at gøre sådan noget. Det du ønsker er symbolske
referencer, men de virker ikke på leksikalse variable og kræver at man
ikke kører sit program under "use strict 'refs';"

Læs eventuelt afsnittet 'Symbolic references' fra perlref-manualen.

//Makholm

Adam Sjøgren (31-03-2008)
Kommentar
Fra : Adam Sjøgren


Dato : 31-03-08 17:49

On Mon, 31 Mar 2008 05:34:07 +0200, Jens wrote:

> Jeg modtager en hash i en sub og vil gerne sætte alle dens nøgler som
> lokale variabler.

Hvad er formålet? (Jeg er nysgerrig).


Mvh.

Adam

--
"No more than that, but very powerful all the same; Adam Sjøgren
simple things are good." asjo@koldfront.dk

Jens Thomsen (31-03-2008)
Kommentar
Fra : Jens Thomsen


Dato : 31-03-08 22:39


"Adam "Sjøgren"" <asjo@koldfront.dk> wrote in message
news:874pamc007.fsf@topper.koldfront.dk...
> On Mon, 31 Mar 2008 05:34:07 +0200, Jens wrote:
>
>> Jeg modtager en hash i en sub og vil gerne sætte alle dens nøgler som
>> lokale variabler.
>
> Hvad er formålet? (Jeg er nysgerrig).

Jeg synes det er rart at arbejde med "normale" variabler og ikke med hash
referencer, som har lange navne med specielle tegn i.

Jeg kan godt lide jeg ikke behøver vedligeholde en liste med hvilke
variabler der kommer med i hashen og derefter skulle sætte dem manuelt med
my $gert = $h->{gert};


Er det god kodestil at have variabler i sin kode man ikke nødvendigvis ved
er sat?
Nej det er det nok ikke, men i og med mit daglige arbejde lettes så meget
synes jeg det er et OK trade off.


Så jeg er da lidt ked af jeg ikke kan gøre som jeg gerne ville.
Man kan jo nok stadig med eval() men det bliver næsten for grim kode til
selv mig



Adam Sjøgren (03-04-2008)
Kommentar
Fra : Adam Sjøgren


Dato : 03-04-08 22:48

On Mon, 31 Mar 2008 23:39:04 +0200, Jens wrote:

> Man kan jo nok stadig med eval() men det bliver næsten for grim kode
> til selv mig

Et eksempel hvor Perl tvinger nogen til at skrive pænere kode. Så har
man set det med.


,

--
"It has been a long, slow collision" Adam Sjøgren
asjo@koldfront.dk

Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste