Schrift
[thread]7717[/thread]

Hash im Skalar-Kontext (Seite 2)

Leser: 2


<< |< 1 2 3 >| >> 24 Einträge, 3 Seiten
pug
 2006-02-18 16:47
#63061 #63061
User since
2005-08-17
91 Artikel
BenutzerIn
[default_avatar]
OT steht für Off Topic oder? Also ganz klar meine Variablennamen sind nicht so die besten. Am liebsten mache ich das mit ungarischer Notation (warum die ungarisch heist?..).

Aber was anderes: Das Problem liegt nicht hier:
Code: (dl )
1
2
3
4
while ( $zeile = $result->fetchrow_arrayref )
{
$kategoriehash{$zeile->[0]} = $zeile->[1];
}


sondern hier:
Code: (dl )
1
2
3
$tmpl->param ( vorname    => $vorname,
nachname => $nachname,
kategorien => $kategoriehash ); # hier ist Zeile 68


Also kein Problem mit dem Scope sondern eher was mit Übergabe des Hashes an das Template-Objekt, oder?

Gruss Christian
Ein Betriebssystem sie zu knechten, sie alle zu finden, Ins Dunkel zu treiben und ewig zu binden.

William Gates III
coax
 2006-02-18 16:48
#63062 #63062
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
[quote=esskar,17.02.2006, 23:17][quote=coax,17.02.2006, 22:48]Klarer Fall fuer use strict; use warnings; ;)[/quote]
hat er doch; es war eben nur ein lesefehler![/quote]
whoop, haette den Beitrag wohl nicht zu schnell ueberfliegen sollen :D

[quote=opi,18.02.2006, 15:26][quote=esskar,18.02.2006, 15:20]OT[/quote]
Hi esskar, auf diese Abkürzung bin ich nun schon öfters gestoßen!
Was heißt das genau?[/quote]
,,Off Topic''

Bei unbekannten Abkuerzungen hilft: Wikipedia: Liste der Abkürzungen  (Netzjargon) (bzw. die englische Version)

Grusz coax.
,,Das perlt aber heute wieder...'' -- Dittsche
bloonix
 2006-02-18 16:58
#63063 #63063
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
@coax, danke, habe ich zu meiner Linkliste hinzugefügt.

@esskar, bei deiner Vermutung, dass es ein Lesefehler hätte sein
können, wäre es ein guter Tipp gewesen.
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
esskar
 2006-02-18 20:36
#63064 #63064
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=pug,18.02.2006, 15:47]sondern hier:
Code: (dl )
1
2
3
$tmpl->param ( vorname    => $vorname,
                          nachname => $nachname,
                          kategorien => $kategoriehash ); # hier ist Zeile 68
[/quote]
ach ja... die Zauberkugel :)

$kategoriehash für sich, zielt eben auf das Scalar $kategoriehash und nicht auf den Hash %kategoriehash
du müsstest es schon so übergeben

Code: (dl )
1
2
3
$tmpl->param ( vorname    => $vorname,
                          nachname => $nachname,
                          kategorien => \%kategoriehash );


aber ich nehme an, dass $tmpl ein HTML::Template Object ist. Das wird dann nicht wirklich etwas damit anfangen können
renee
 2006-02-19 01:40
#63065 #63065
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Vielleicht ist perlreftut ganz interessant, da hier erklaert wird, wie man Referenzen erstellt...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pq
 2006-02-19 12:48
#63066 #63066
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=esskar,18.02.2006, 19:36]aber ich nehme an, dass $tmpl ein HTML::Template Object ist. Das wird dann nicht wirklich etwas damit anfangen können[/quote]
soweit ich aus einem anderen thread weiß, ist es ein HTC objekt =)
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
pug
 2006-02-20 16:06
#63067 #63067
User since
2005-08-17
91 Artikel
BenutzerIn
[default_avatar]
Also eine Referenz bekomme ich gerade noch hin ;-) Und ja es ist HTC!

Allerdings ist in Renee's Doku zu HTC auf Seite 14 genau so ein Beispiel zu sehen. Da wird ein Array von Hashes erstellt und dieses dann dem HTC-Objekt übergeben.
Code: (dl )
1
2
3
4
5
6
my $willkommen = [ { Vorname => 'Max' ,
Nachname => 'Mueller'},
{ Vorname => 'Gabi',
Nachname => 'Kastenhuber'} ];
$template->param ( WILLKOMMEN => $willkommen );
...



Hmmm, also nachdem ich den Hash im Skalarkontext erstellt habe:
Code: (dl )
1
2
3
4
while ( $zeile = $result->fetchrow_arrayref )
{
$kategoriehash{$zeile->[0]} = $zeile->[1];
}


Erstelle ich eine Referenz drauf:
Code: (dl )
$kategorien_ref = \%kategoriehash;

...und übergebe das ganze:
Code: (dl )
1
2
3
$tmpl->param ( vorname    => $vorname,
nachname => $nachname,
kategorien => %kategoriehash);

..dachte ich, mache ich genau das gleiche?

Dann heist es unter http://faq.perl-community.de/bin/view/Perldoc/perlreftut:
Quote
$href = { APR => 4, AUG => 8 };
# $href enthält jetzt eine Referenz auf einen Hash
das hatte ich vorher auch nicht gewusst. Damit wird also automatisch ein Skalar erzeugt, in dem die Referenz auf den Hash liegt?

Aber es kann doch nicht so schwer sein ein Hash an HTML:Template zu übergeben?

Gruss Christian
Ein Betriebssystem sie zu knechten, sie alle zu finden, Ins Dunkel zu treiben und ewig zu binden.

William Gates III
pq
 2006-02-20 16:48
#63068 #63068
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=pug,20.02.2006, 15:06]Erstelle ich eine Referenz drauf:
Code: (dl )
$kategorien_ref = \%kategoriehash;

...und übergebe das ganze:
Code: (dl )
1
2
3
$tmpl->param ( vorname    => $vorname,
              nachname => $nachname,
              kategorien => %kategoriehash);

..dachte ich, mache ich genau das gleiche?[/quote]
häh? du erstellst die referenz $kategorien_ref , aber tust gar nix damit?
irgendwie drehst sich der thread im kreis, was willst du überhaupt
machen?
ich denke nicht, dass es sinnvoll ist, einen hash von kategorien an
das template-modul zu übergeben, denn du willst ja sicher alle kategorien
ausgeben und nicht nur eine bestimmte.
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
pug
 2006-02-20 17:09
#63069 #63069
User since
2005-08-17
91 Artikel
BenutzerIn
[default_avatar]
Sorry, natürlich mein Fehler. Ich habe noch ein paar andere Sachen versucht und die Übergabe nicht wieder in den Ursprungszustand zurück versetzt. So sieht es jetzt aus:
Code: (dl )
1
2
3
$tmpl->param ( vorname    => $vorname,
nachname => $nachname,
kategorien => \%kategoriehash);


Der Hash hat in etwa folgenden Inhalt { 1 => Computer,
2 => Autos,
3 => Immobilien,
....
Auf der ausgegebenen Website sollte dann die Inhalte in einem "Pull-Down-Menü" ausgegeben werden.

Gruss Christian
Ein Betriebssystem sie zu knechten, sie alle zu finden, Ins Dunkel zu treiben und ewig zu binden.

William Gates III
pq
 2006-02-20 18:17
#63070 #63070
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=pug,20.02.2006, 16:09]Auf der ausgegebenen Website sollte dann die Inhalte in einem "Pull-Down-Menü" ausgegeben werden.

Gruss Christian[/quote]
wenn du werte in einem pulldown haben willst, ist es doch quatsch, einen
hash zu übergeben. das macht man als liste. weder HTML::Template noch
HTML::Template::Compiled bieten dir die Möglichkeit, über einen hash zu
iterieren (weil nicht trivial zu lösen, wg. sortierung).
also dein ursprünglicher code war doch ok, und dazu habe ich dir
template-code geliefert.

H::T musst du immer hashes of arrays of hashes of arrays etc. übergeben.
mehr kann das nicht. also entweder übergibst du hier
ein array von hashes, wobei jeder hash für eine option steht, oder
du übergibst H::T::C ein array von arrays, wobei jeder array für eine option
steht.
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
<< |< 1 2 3 >| >> 24 Einträge, 3 Seiten



View all threads created 2006-02-17 19:25.