Schrift
[thread]12141[/thread]

hashkeys ändern



<< >> 4 Einträge, 1 Seite
Froschpopo
 2008-07-07 19:20
#111911 #111911
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
isses eigentlich möglich, den Key wärend einer Laufzeit zu ändern?

Ich möchte nämlich der kompatibilität zu einer Fremdapplikation halber die Keys nach upper case verwandeln.
Meine Application hingegen verwendet kleingeschriebene Keynamen.
Das ganze sollte möglich sein, ohne einen neuen Hash anlegen zu müssen.
renee
 2008-07-07 19:24
#111913 #111913
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du kannst ja so abfragen:
Code (perl): (dl )
my $value = $hash{ lc( $key_aus_fremdapplikation ) };


Beispiel:
Code (perl): (dl )
1
2
3
4
5
6
7
my %hash = (
    test => 'Froschpopo',
);

my $fremd_app = 'TEST';

print $hash{ lc( $fremd_app ) };
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/
KurtZ
 2008-07-07 19:31
#111916 #111916
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
Froschpopo+2008-07-07 17:20:15--
Das ganze sollte möglich sein, ohne einen neuen Hash anlegen zu müssen.


das hört sich nach einem klassischem Anwendungsfall für Hashties an. Du könntest dem Fremdcode ermöglichen mit Uppercasekeys die Hasheinträge abzufragen, indem eine Fetch Methode gestartet wird die implizit in Lowercase umwandelt.

perltie
CPAN:tie::hash

Ob sich diese Architektur langfristig lohnt ist ne andere Frage...
TMTOWTDYOG (there's more than one way to dig your own grave)
pq
 2008-07-07 19:31
#111918 #111918
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ansonsten geht nur: alten eintrag löschen und mit neuem key wieder hinzufügen.
Code (perl): (dl )
$hash{new} = delete $hash{old};
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
<< >> 4 Einträge, 1 Seite



View all threads created 2008-07-07 19:20.