Thread Projekt: Querys zur Abfrage von verschachtelten Listen aus Arrays und Hashes (3 answers)
Opened by xubaso at 2009-07-01 23:10

xubaso
 2009-07-01 23:10
#122795 #122795
User since
2009-06-27
6 Artikel
BenutzerIn
[default_avatar]
Hallo,

da ich auf cpan.org nichts entsprechendes gefunden habe, habe ich mir selber ein Package mit dieser Funktionalität gebaut.

Ich würde gerne ein paar Rückmeldungen von euch haben, ob ihr denkt dass es dafür Bedarf gibt, oder ob ich auch nur zum X-ten Mal das Rad neu erfunden habe :-)

Falls nicht, würde mich natürlich auch interessieren, wie ihr die Syntax der Query-Sprache findet.

Hier ein Beispiel:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Eine verschachtelte Beispielliste:
my @a1=(
{
"table" => "table1",
"primary key" => "pk1",
"datafield" => [
{
"name" => "data1",
"type" => "text",
"length" => 1024,
},
{
"name" => "data2",
"type" => "blob",
"length" => 512,
},
{
"name" => "pk1",
"type" => "integer",
"length" => 32,
},
],
},
[ "irgend", "eine", "andere", "Liste" ],
{"Hallo" => "Welt"},
);


Um die verschachtelten foreach-Schleifen, das Dereferenzieren und die If-Abfragen zu sparen, bietet das Package die Funktion query_list. Ein Query um z.B. den 'datafield' Eintrag mit dem 'name' 'data2' zu kriegen, sieht so aus:
Code: (dl )
my @result=query_list(\@a1, "[*]->{table eq table1 | datafield}->[*]->{name eq data2}");


Im Grunde ist es genauso aufgebaut wie ein normaler Listenzugriff, nur dass man mit Bedingungen arbeiten kann. Die Pipe in der Mitte vom Hash trennt die Bedingungen auf der linken Seite und die weiter zu verfolgenden Schlüssel auf der rechten.

Wer sich dafür interessiert oder es ausprobieren möchte, kann es sich den Quelltext hier runterladen: http://www.atdot.de/downloads/query_list.pl.tar.gz

Gruß - Xubaso

View full thread Projekt: Querys zur Abfrage von verschachtelten Listen aus Arrays und Hashes