themaster Geschrieben 6. Mai 2002 Geschrieben 6. Mai 2002 Hallo, ich habe ein Problem in Perl. Ich muß ein neues leeres Hash erzeugen, damit ich eine leere Hashreferenz daraus machen kann. undef funktioniert nicht. Und ein leeres namentliches Hash zuübergeben funktioniert auch nicht, da daraus sofort eine Referenz erzeugt wird. Wie kann ich ein leeres Hash erzeugen, sozusagen der Initialwert eines Hash?
alligator Geschrieben 6. Mai 2002 Geschrieben 6. Mai 2002 Hi. Ich würd dir gerne helfen, aber ich weiss nicht ganz genau was du meinst ?!? Willst du einen Hash initilisieren ? Was passiert denn wenn du: my %hash; machst ? Dann hast du doch einen leeren Hash (also mit lauter undef`s initialisiert) oder ? cu alligator
themaster Geschrieben 6. Mai 2002 Autor Geschrieben 6. Mai 2002 ich kann nicht my %hash benutzen. Ich will in einer Schleife immer wieder eine leere Hash-Referenz erzeugen. Deshalb kann ich nicht my %hash benutzen, da dann jedes Mal wieder auf das gleiche Hash verweisst. Genau das soll ja nicht passieren. Es gibt so einen Befehl. Ich weiß, dass ich das schon mal gelesen habe, aber ich finde es nicht wieder. Auf jeden Fall nicht in den Büchern die ich bei mir habe.
alligator Geschrieben 6. Mai 2002 Geschrieben 6. Mai 2002 Servus. Idee: for ($i;$i<100;$i++) { my $name = "hash".$i; my %$name; } Habs nicht getestet, aber so wäre mein Ansatz, wobei ich aber nicht ganz kapiere wozu du das brauchen könntest?!? Wenn du die Variable global machen willst, dann mach anstatt "my" lieber "our" ... cu alligator
alligator Geschrieben 6. Mai 2002 Geschrieben 6. Mai 2002 Servus. Hab vergessen was wegen Referenzen zu sagen ... Bsp: %tiere = ( 'Tiger' => 'Indien', 'Löwe' => 'Afrika' ); $ref_hash = \%tiere; So macht man Referenzen. Aber gibt es leere Refrenzen ? Bzw. was bringen sie dir ? my %hash; $ref1 = \%hash; $ref2 = \%hash; .... # Das in Kombination mit der Schleife von vorher halt Die Referenz wäre ja nicht leer, so zeigt sie auf %hash. Zwar ist %hash leer, aber das ist ja im Endeffekt worscht. Hmm verstehe immernoch nicht den Sinn ... cu alligator
themaster Geschrieben 6. Mai 2002 Autor Geschrieben 6. Mai 2002 Original geschrieben von alligator my %hash; $ref1 = \%hash; $ref2 = \%hash; .... # Das in Kombination mit der Schleife von vorher halt Die Referenz wäre ja nicht leer, so zeigt sie auf %hash. Zwar ist %hash leer, aber das ist ja im Endeffekt worscht. Das habe ich so auch probiert, aber sobald in $ref1 etwas hinzugefügt wird, ist auch etwas in $ref2 hinzugefügt (logisch, da beides auf %hash verweisst). Genau das soll nicht passieren. Was bringen mir leere Referenzen. A: Ich kann mit ihnen weiter arbeiten. Wenn ich die Varible nicht schon zu dem Zeitpunkt als Referenz erstelle, dann kommt später immer die Meldung, das es sich um eine Referenz handeln muss. "VALUE IS NOT A HASH-REFERENCE "(oder so ähnlich). Ich habe mich aber jetzt entschlossen, das Problem irgendwie zu umgehen. Trotzdem Danke
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden