Wie kann ich nur bestimmte Keys zulassen

Inhalt:

Schlüssel von Anfang an einschränken

Es kann vorkommen, dass man nicht alles als Schlüssel in einem Hash erlauben will. Dann gibt es die Möglichkeit, die Schlüssel einzuschränken:

#! /usr/bin/perl

use strict;
use Hash::Util qw(lock_keys);

my %hash = ();
my @valid_keys = qw(Erlaubt Auch_erlaubt);

lock_keys(%hash,@valid_keys);

$hash{Erlaubt}      = 1;
$hash{Test}         = 1;
$hash{Auch_erlaubt} = 1;

funktioniert nicht. Dabei kommt folgende Fehlermeldung:
Attempt to access disallowed key 'Test' in a restricted hash at locked.pl line 12.

erlaubte Schlüssel erst im Programm festlegen

Möchte man sich noch nicht vorher festlegen, welche Schlüssel man zulassen möchte (oder man weiß es vielleicht noch nicht), kann man das auch während dem Programmlauf locken:

#! /usr/bin/perl

use strict;
use Hash::Util qw(lock_keys);

my %hash = ();

$hash{Erlaubt}      = 1;
$hash{Test}         = 1;
$hash{Auch_erlaubt} = 1;


lock_keys(%hash);

Jetzt kann man nur noch die Schlüssel 'Erlaubt', 'Test' und 'Auch_erlaubt' verwenden...

Ergänzungen, Kommentare

KaiSengpiel - 07 Apr 2005 - Diese Möglichkeit besteht seit Perl v5.8

UtilFaqSubForm edit

Titel Hashes: Wie kann ich nur bestimmte Keys zulassen
Autor ReneeBaecker
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.