You are here: Wissensbasis Web>UtilFaqInclude>HashVWerte (2006-04-10)

Wieso kann kann ich keine Werte wie v1, v12, v122 eintragen?

Inhalt:

Werte im Hash mit dem Buchstaben v am Anfang

Das ist möglich, kommt aber auf die Perl-Version an.

Wenn versucht wird, in einen Hash Werte wie v1 oder v2 oder v33 (oder ähnliches mit v und einer bestimmten Ziffernfolge) ein zu tragen, wird leider keine Zeichenkette sondern ein sogenannter v-String (Versionstring) erzeugt.
Eine böse Falle für Anfänger.

Wenn ich also zum Beispiel mehrere Variablen v1 v2 v3 v4 v5 habe und diese in einen Hash eintragen will, würde ich unbedarft so vorgehen:
use strict;
use warnings;

my %vars = ( 

    v1 => 9.81221,
    v2 => 3.13221,
    v7 => -1,
    h3 => 'a',
    x2 => 'ÄÄÄÄ'
);

print $_ for (sort keys %vars);
Sowas erzeugt für v1 und v2 und v7 nicht die Zeichenkette 'v1' bzw. 'v2' bzw. 'v7' als Eintrag wie gedacht, sondern die Werte \x01 bzw. \x02 bzw. \0x7 - also Zeichenketten.

Das Problem ist ab Perl 5.8 behoben, da genau dieser beschriebene Umstand zu Verwirrungen geführt hat.

Wie dann die Werte v am Anfang eintragen?

Es müssen nur die Werte als Zeichenketten 'v1' und ähnliches geschrieben werden.

So geht es:
my %vars = ( 
    'v1' => 9.81221,
    'v2' => 3.13221,
    'v7' => -1,
    h3 => 'a',
    x2 => 'ÄÄÄÄ'
);
Auszug

Ergänzungen, Kommentare

Kommentare werden am besten in folgender Form vorgenommen, damit sie im Inhaltsverzeichnis angezeigt werden (natürlich ohne das <verbatim>):
---+++ Main.??? - 14 Jul 2003 - Betreff

UtilFaqSubForm edit

Titel Hashes: Wieso kann kann ich keine Werte wie v1, v12, v122 eintragen?
Autor
Bereich FaqTypen
Topic revision: 2006-04-10, TinaMueller
 
Bitte die NutzungsBedingungen beachten.
Bei Vorschlägen, Anfragen oder Problemen mit dem PerlCommunityWiki bitten wir um WebBottomBarExample">Rückmeldung.