[Vienna-pm] Hausbackene Syntaxerweiterung mit Perl5?

Robert Barta rho at devc.at
Tue Apr 29 22:25:13 PDT 2008


On Wed, Apr 30, 2008 at 08:20:23AM +0200, Thomas Klausner wrote:
> > 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.

D.h., ich koennte das 1) einmal sehr Perl-ish angehen und etwas an

   Tie::Array

binden. Oder ...

> 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, 

.... 2) 'from' in the namespace laden, oder ....

> From: Stefan Weiss <spaceman at foo.at>

> Um deinen Sourcecode so umzuschreiben, dass nachher Perl rauskommt,
> schau dir mal die Source Filter in "perldoc perlfilter" an, oder das
> Modul Filter::Simple.

.... 3) ein Praeprozessor einschieben.

Klingt alles gangbar. Ich haette auch nicht notfalls vor

  @collection = new LINQ::TM ('from ...');

zurueckgeschreckt.

<loud-thinking>
3) Bei preprocessors habe ich immer das Problem, dass sie nicht
   leicht immer miteinander kombinierbar sind.

2) mit dem 'from' als Routine muss man analysieren, ob die Parameterliste
   mit der Syntax, die ich erreichen will, halbwegs kompatibel ist. Bei

     $s->{marks} > 85

   hab ich schon das Problem, dass Perl das fuer mich auswerten will, bevor
   'from' zum Zug kommt.

1) Tie::Array ist halt SEHR perl-ish. Not bad per se, aber nicht Sinn der
   Uebung hier.

</loud-thinking>

\rho



More information about the Vienna-pm mailing list