Monday, May 11, 2009

Meine CPAN-Module - Teil 2

Auf CPAN finden sich sehr viele Module. Darunter sind sehr viele nützliche Module, aber auch einige, die nur so "zum Spaß" da sind. Diese sind meist im "Acme::*"-Namensraum angesiedelt. Mit zu bekanntesten, dürften Acme::Bleach und Acme::Buffy gehören. Beides sind Module, die den Quellcode verändern. Beim ersten Modul hat man dann lauter "Whitespace" - ein wahrhaft sauberes Programm ;-)

Manche Acme::*-Module sind aber auch zum Testen da. So wie mein Acme::DarmstadtPM::TieHash. Ein anderes Mitglied von Darmstadt.pm hat auf der Mailingliste ein Ruby-Snippet gepostet (habe ich damals auch bei Perl-Community.de gepostet) und gemeint, dass Perl so etwas nicht kann. So etwas interessiert mich dann und ich versuche, eine (Perl-)Lösung dafür zu finden.

Zum Glück gibt es "tie"s in Perl.

Daraus ist dann oben genanntes Modul entstanden, mit dem man einen Hash an eine Subroutine binden kann und wenn man auf einen Schlüssel des Hashs zugreift, dann wird das Ergebnis der Subroutine zurückgeliefert.

Als "Proof of Concept" ist es ganz ok ;-)

 1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5 use Test::More tests => 2;
6
7 use constant ADT => 'Acme::DarmstadtPM::TieHash';
8
9 use_ok(ADT);
10
11 tie my %hash,ADT,sub{$_[0] + $_[-1]};
12
13 is($hash{[1,5]},6,'Check [1,5]');
14
15 untie %hash;
oder auch
  1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5 use Acme::DarmstadtPM::TieHash;
6
7 tie my %hash, 'Acme::DarmstadtPM::TieHash', sub{ "\U@_\n" };
8
9 print $hash{hallo};
10
11 untie %hash;

No comments: