Schrift
[thread]12721[/thread]

Komplexe Datenstruktur in Perl Code extrahieren



<< >> 5 Einträge, 1 Seite
Gast Gast
 2008-11-05 11:36
#115980 #115980
Hallo zusammen

Ich sollte mein Script auf einem OS/390 Mainframe laufen lassen. Blöderweise habe ich dort gewisse Module nicht zur Verfügung wie beispielsweise Parse::XML dessen Installation auch nicht möglich ist.

Nun lädt jedoch mein Script die Konfiguration aus einem XML und bildet diese in einer relativ komplexen Datenstruktur in der Laufzeitumgebung ab.

Meine Idee ist nun, das Script normal auf meiner Windows Maschine laufen zu lassen und während der Runtime die Konfiguration einmalig in Perlcode zu dumpen. Ich kenne Module wie Data::Dump, aber ich konnte es noch nicht managen, den Code so auszulagern, dass ich ihn ohne weiteres mittels eval wieder laden kann. Denke nicht, dass serialisieren eine Lösung ist, da ich (glaubs :)) Referenzen verwende.

Weiss jemand wie ich das am besten anstelle? Ich will einfach mal einen proof of concept machen, dass das ganze auch auf OS/390 zLinux laufen würde.

Grüsse
Jay
renee
 2008-11-05 11:52
#115981 #115981
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich würde es mit "Storable" probieren. Du kannst uns auch eine Beispielkonfiguration zeigen. Dann lässt sich wahrscheinlich mehr sagen.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2008-11-05 12:12
#115984 #115984
Storable hat gewisse Unklarheiten:
- Umgang mit Referenzen könnte Probleme bereiten
- Modulverfügbarkeit auf zLinux (habe keinen Direktzugriff)
- Beim zurückladen erhält man Referenz auf Datenstruktur, sollte aber die Datenstruktur wie im Originalzustand zurückladen können (also nicht $_->.. sondern $blah{soso})

Hab mal einen Data::Dump gemacht von der Datenstruktur, hilft das :)?

print Dumper %HASH :
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
$VAR1 = 'Check';
$VAR2 = [
{
'name' => 'Keywords',
'config' => {
'InputFile' => './Backends/keywords.txt'
},
'attr' => {
'name' => 'Keywords',
'active' => 'true',
'type' => 'Check'
}
},
{
'name' => 'Variables',
'config' => {
'InputFile' => './Backends/variables.txt'
},
'attr' => {
'name' => 'Variables',
'active' => 'true',
'type' => 'Check'
}
}
];
$VAR3 = 'Report';
$VAR4 = [
{
'name' => 'Excel',
'config' => {
'Picture' => 'pic.png',
'OutputDirectory' => './Output/'
},
'attr' => {
'name' => 'Excel',
'active' => 'true',
'type' => 'Report'
}
}
];


Vielen Dank für Input und eure Unterstützung,
gruss
Jay
renee
 2008-11-05 12:32
#115985 #115985
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du solltest Referenzen an Dumper übergeben...

print Dumper \%hash.

Dann bleibt Dein Hash auf jedenfall erhalten...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2008-11-05 13:25
#115989 #115989
Danke für den Tipp, und ich hab mich immer gefragt was der Output soll.. der Output ist nun folgendermassen:

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
$VAR1 = {
'Check' => [
{
'name' => 'Keywords',
'config' => {
'InputFile' => './Backends/keywords.txt'
},
'attr' => {
'name' => 'Keywords',
'active' => 'true',
'type' => 'Check'
}
},
{
'name' => 'Variables',
'config' => {
'InputFile' => './Backends/variables.txt'
},
'attr' => {
'name' => 'Variables',
'active' => 'true',
'type' => 'Check'
}
}
],
'Report' => [
{
'name' => 'Excel',
'config' => {
'Picture' => 'pic.png',
'OutputDirectory' => './Output/'
},
'attr' => {
'name' => 'Excel',
'active' => 'true',
'type' => 'Report'
}
}
]
};
<< >> 5 Einträge, 1 Seite



View all threads created 2008-11-05 11:36.