Schrift
[thread]10377[/thread]

Hash mit Zahl als Key?



<< >> 9 Einträge, 1 Seite
mustermann
 2007-09-12 16:32
#99373 #99373
User since
2007-09-10
12 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich vesuche gerade, aus einer Liste Werte in einen Hash zu übertragen:
Code (perl): (dl )
1
2
3
4
for($i=7;$i<=1777;$i=$i+8) {
         $macroman{$i} = @liste[$i];
         print $macroman{$i};
}

So wie es dasteht klappt es auch, aber wenn ich anstatt $i eine Zahl, die definitiv als Key existiert in die print-Zeile einsetze, erhalte ich kein Ergebnis, aber auch keine Fehlermeldung. Hat jemand ne Idee woran das liegen könnte?

Gruß
#Kein Kommentar
 2007-09-12 16:43
#99376 #99376
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
das funktioniert bei mir:

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

my @liste = ("a".."h");
my %macroman = ();

foreach my $i (0..7) {
          $macroman{$i} = $liste[$i];
          print $macroman{$i};
}


also funktionieren zahlen als keys auf jeden fall, prüf mal nochmal, vielleicht
mit einer anderen schleife ob der key wirklich existiert.

anstatt
Code: (dl )
@liste[$i]
solltest du lieber
Code: (dl )
$liste[$i]

schreiben. (ist, glaube ich zumindest, perl6-syntax)
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
mustermann
 2007-09-12 17:21
#99377 #99377
User since
2007-09-10
12 Artikel
BenutzerIn
[default_avatar]
Hi,
danke, ich glaub der Fehler war, dass andere Keys benutzt wurden als ich dachte.
GwenDragon
 2007-09-12 22:09
#99391 #99391
User since
2005-01-17
14607 Artikel
Admin1
[Homepage]
user image
#Kein Kommentar+2007-09-12 14:43:42--

anstatt
Code: (dl )
@liste[$i]
solltest du lieber
Code: (dl )
$liste[$i]

schreiben. (ist, glaube ich zumindest, perl6-syntax)

@liste[$i] ist auch kein Wert aus einem Array, sondern ein Array-Slice.
#Kein Kommentar
 2007-09-13 17:22
#99440 #99440
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
was ist ein slice? und warum sagt use warnings dann das ich das lieber nicht benutzen soll?

Code: (dl )
Scalar value @liste[$i] better written as $liste[$i]
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
Taulmarill
 2007-09-13 17:29
#99441 #99441
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
Als slice bezeichnet man einen Teil eines Arrays, der kein einzelnes Element, sondern eine Liste ist. Wenn du also @liste[$i] schreibst, ist das nicht ein Element als scalarer Wert, sondern eine Liste mit einem Element. Daher schlägt warnings auch vor, dass du das als $liste[$i] schreibst.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
renee
 2007-09-13 17:52
#99443 #99443
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ein slice ist so etwas:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
use Data::Dumper;

my @array = (1..100);

# speichere das 2., 7., 10., 14. Element aus @array
# in @tmp
my @tmp = @array[1,6,9,13]; 

print Dumper \@tmp;
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
 2007-09-13 18:14
#99444 #99444
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
#Kein Kommentar+2007-09-13 15:22:29--
was ist ein slice? und warum sagt use warnings dann das ich das lieber nicht benutzen soll?

Code (perl): (dl )
use diagnostics;

kann manchmal ganz hilfreich sein.
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
#Kein Kommentar
 2007-09-13 19:40
#99449 #99449
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
danke, für die aufklärung
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
<< >> 9 Einträge, 1 Seite



View all threads created 2007-09-12 16:32.