Schrift
[thread]11667[/thread]

Array-Werte in Hash übertragen (Seite 2)

Leser: 1


<< |< 1 2 >| >> 15 Einträge, 2 Seiten
KurtZ
 2008-04-20 17:51
#108582 #108582
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
RalphFFM+2008-04-20 14:42:09--
KurtZ+2008-04-20 14:06:36--
Ralph, du weißt aber auch dass du alternativ auch direkt benannte Argumente an ein Sub übergeben könntest? Das steigert oft die Lesbarkeit!
...
Diese Situation ist mir noch nicht begegnet, nein, das hatte ich mir bislang noch nicht überlegt. Jedenfalls gut zu wissen, daß das geht!

Ich möchte an dieser Stelle eigentlich keine Sub aufrufen, sondern ich möchte den Hash dann anschließend mittels
$template->param(%hash);
HTML::Template übergeben, um die Variablen zu füllen.


schon witzig, weil

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
$template->param(%hash); 
# und 
$template->param(
   vorname => "tri",  
   nachname => "tra", 
   plz         => "trul",  
   ort           => "la",  
   haustier => "la",  
   foobar      => "!",
)


das gleiche machen, du rufst $template->param() mit benannten Parametern auf.
TMTOWTDYOG (there's more than one way to dig your own grave)
RalphFFM
 2008-04-20 21:11
#108593 #108593
User since
2006-11-16
258 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ja, das die beiden Ausdrücke das Gleiche machen ist mir schon klar.
Da im realen Fall ca. 30 einzelne Hash-Variablen zu füllen sind, finde ich die Variante erstmal alles in ein Hash zu schubsen schon einfacher.
pq
 2008-04-21 13:10
#108623 #108623
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
KurtZ+2008-04-20 12:36:21--
Vermutlich weil Hashslices die Parserregeln für my hier überfordern, schließlich schreibst du ein @ vor hash und der compiler muss an den Klammern {} erkennen dass es sich um ein hash handelt.

nein, es ist genausowenig erlaubt wie
Code: (dl )
1
2
3
my $array[0]
my $hash{foo}
etc.

warum sollte dann ein hashslice mit my() erlaubt sein?
mit my() deklariert man variablen, und kann ihnen auch
gleichzeitig etwas zuweisen, aber um auf einzelne indizes
oder keys zuzugreifen, muss der hash schon deklariert sein.
ist halt so, und ich verstehe nicht, wieso das jezt bei hashsclices
anders sein soll.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
KurtZ
 2008-04-21 14:09
#108630 #108630
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
pq+2008-04-21 11:10:07--
nein, es ist genausowenig erlaubt wie
Code: (dl )
1
2
3
my $array[0]
my $hash{foo}
etc.

Mensch, du hast recht! :-)
TMTOWTDYOG (there's more than one way to dig your own grave)
KurtZ
 2008-04-21 17:06
#108649 #108649
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
pq+2008-04-21 11:10:07--
nein, es ist genausowenig erlaubt wie
Code: (dl )
1
2
3
my $array[0]
my $hash{foo}
etc.


Mein Kleinhirn-Perl-Parser hat da was mit local durcheinandergebracht! ( das ist natürlich ein ganz anderer Mechanismus!)

Code (perl): (dl )
1
2
3
4
5
6
7
use strict;
use warnings;

my  @a=qw/1 2 3 4 5 6 7 8 9/;
my %hash;
local $hash{foo}="bar";
local @hash{qw/vorname nachname plz ort haustier foobar/} = @a;
TMTOWTDYOG (there's more than one way to dig your own grave)
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2008-04-20 12:16.