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? Zitieren
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 Zitieren
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. Zitieren
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 Zitieren
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 Zitieren
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 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.