[Vienna-pm] Hausbackene Syntaxerweiterung mit Perl5?
Thomas Klausner
domm at cpan.org
Tue Apr 29 23:20:23 PDT 2008
Hi!
On Wed, Apr 30, 2008 at 05:50:04AM +0200, Robert Barta wrote:
> Der Clue an dem LINQ ist, dass man mit dem selben Zugriffsmechanismus
> auf in-memory Objekte, relational DBs, XML structures, und - das
> interessiert mich hier hauptsaechlich - auf Topic Map und RDF KBs
> zugreifen kann. LINQ ist nun Teil von C# (das langsam Perl6 immer
> aehnlicher wird, naja langsam).
Naja, in Perl ist dieser Zugriffsmechanismus halt map, grep, each, etc,
mit dem man auf in-memory Objekte, DBs, XML, ... zugreift.
> Ich moecht' hauptsaechlich einmal einen proof-of-concept mit TMs
> bauen. Die Syntaxerweiterung ist eigentlich eh Augenauswischerei,
Wirkliche Syntaxerweiterungen sind kaum moegliche in Perl 5, was ich
weiss. Natuerlich kannst du aber mit cleveren Methoden, Importern und
aehnlichem recht nette Interfaces basteln.
siehe zB Moose:
package Foo;
use Moose;
has bar => (is => 'rw'); # 'has' ist eine exportierte Methode
In deinem konkreten Fall:
> my @students = ....;
> my @cleverlies = from $s in @students
> where $s->{marks} > 85
> select $s->{matrikelnr};
koenntest du schon eine sub from { } machen, die die Parameterliste
durchgeht, andere "keywords" wie 'where' und 'select' identifziert,
rausfindet, was was ist (@students (muesste dann aber wohl \@students
sein), $s), und dann zum Schluss die richtigen Methoden ('where',
'select') in der richtigen Reihenfolge mit den richtigen Parametern
aufruft.
Soundy mighty kompliziert.
Und nur schwer generalisierbar.
Aber durchaus moeglich.
--
#!/usr/bin/perl http://domm.plix.at
for(ref bless{},just'another'perl'hacker){s-:+-$"-g&&print$_.$/}
More information about the Vienna-pm
mailing list