Thursday, October 26, 2006

Perl vs. Ruby

Ronnie hat auf der Mailingliste von Darmstadt.pm folgenden Ruby-Code gepostet:


foo = [2, 3]
bar = [4, 5]
sum = Hash.new { |hash, key| hash[key] = key.first + key.last }
p sum[foo]
p sum[bar]
p sum


und gesagt, dass man das nicht mit Perl machen könnte. Ich habe mich hingehockt und ein kleines Modul geschrieben, dass genau das ermöglicht: Tie::Hash::DarmstadtPM

Nun ist folgendes möglich:


#!/usr/bin/perl

use strict;
use warnings;
use Tie::Hash::DarmstadtPM;

tie my %hash,'Tie::Hash::DarmstadtPM',sub{$_[0] + $_[-1]};

my $foo = [2,3];
my $bar = [4,5];

print $hash{$foo},"\n";
print $hash{$bar},"\n";


Und man bekommt folgende Ausgabe:


~/entwicklung 327> perl tie_hash.pl
5
9


++

Ronnie has posted the subsequent Ruby code at the Darmstadt.pm mailinglist


foo = [2, 3]
bar = [4, 5]
sum = Hash.new { |hash, key| hash[key] = key.first + key.last }
p sum[foo]
p sum[bar]
p sum


and he said that it is impossible to do it in Perl. So I've written a module to make this possible: Tie::Hash::DarmstadtPM

Now you can do this:


#!/usr/bin/perl

use strict;
use warnings;
use Tie::Hash::DarmstadtPM;

tie my %hash,'Tie::Hash::DarmstadtPM',sub{$_[0] + $_[-1]};

my $foo = [2,3];
my $bar = [4,5];

print $hash{$foo},"\n";
print $hash{$bar},"\n";


and you'll get this output:


~/entwicklung 327> perl tie_hash.pl
5
9

No comments: