Werte im Sourcecode speichern

Werte im Sourcecode speichern

am 27.03.2007 17:56:52 von guenter.moritz

Hallo an Alle,

ist es möglich Werte, die bei einem Programmlauf entstanden sind, für
den nächsten Programmlauf im Sourcecode zu speichern?

Es handelt sich speziell um 3 - 4 Werte und dafür eine Datei anlegen,
zuöffnen, zu lesen und zu schreiben finde ich etwas overdressed.

Ich meine etwas von DATA irgendwan gelesen zu haben, kann es aber nicht
mehr finden.

Danke für Eure Hilfe und Tipps.

Bis dann ...
MfG
Günter

Re: Werte im Sourcecode speichern

am 27.03.2007 18:15:45 von Wolf Behrenhoff

Günter Moritz schrieb:
> Hallo an Alle,
>
> ist es möglich Werte, die bei einem Programmlauf entstanden sind, für
> den nächsten Programmlauf im Sourcecode zu speichern?

Klar geht das. Ob es schön ist, ist eine Frage, die ich definitiv mit
"nein" beantworte.

> Es handelt sich speziell um 3 - 4 Werte und dafür eine Datei anlegen,
> zuöffnen, zu lesen und zu schreiben finde ich etwas overdressed.

So?

while(){$old=$_}
$old++;
open F, ">>$0";
print F "$old\n";
close F;
print "$old mal aufgerufen\n";
__DATA__
0

Allerdings musst du auch hier eine Datei öffnen, nämlich den Source. Das
finde ich ziemlich böse. Was spricht gegen eine Konfiguratiosdatei? Oder
Kommandozeilenparameter?

Wolf

Re: Werte im Sourcecode speichern

am 27.03.2007 18:27:43 von Helmut Wollmersdorfer

Günter Moritz wrote:

> ist es möglich Werte, die bei einem Programmlauf entstanden sind, für
> den nächsten Programmlauf im Sourcecode zu speichern?

> Es handelt sich speziell um 3 - 4 Werte und dafür eine Datei anlegen,
> zuöffnen, zu lesen und zu schreiben finde ich etwas overdressed.

Und was genau ersparst Du Dir, wenn Du den Source öffnen, lesen,
*parsen* und schreiben musst? Einen Node in Deinem Filesystem?

In einem ähnlichen Fall schreibe ich eine Datei mit Perl-Source (Hashes)
und mach dann in meinem Script ein

require '/usr/lib/cgi-bin/languages.pl';

Helmut Wollmersdorfer

Re: Werte im Sourcecode speichern

am 27.03.2007 18:29:24 von hjp-usenet2

On 2007-03-27 15:56, Günter Moritz wrote:
> ist es möglich Werte, die bei einem Programmlauf entstanden sind, für
> den nächsten Programmlauf im Sourcecode zu speichern?

Ein Script ist ein File wie jedes andere ...


> Es handelt sich speziell um 3 - 4 Werte und dafür eine Datei anlegen,
> zuöffnen, zu lesen und zu schreiben finde ich etwas overdressed.
>
> Ich meine etwas von DATA irgendwan gelesen zu haben, kann es aber nicht
> mehr finden.

Die Idee hat was für sich, funktioniert aber leider nicht.
DATA ist nur zum Lesen geöffnet, Du kannst es nicht dazu verwenden, das
Script zu ändern. Du wirst $0 explizit öffnen müssen, wenn Du das
willst.

hp


--
_ | Peter J. Holzer | Blaming Perl for the inability of programmers
|_|_) | Sysadmin WSR | to write clearly is like blaming English for
| | | hjp@hjp.at | the circumlocutions of bureaucrats.
__/ | http://www.hjp.at/ | -- Charlton Wilbur in clpm

Re: Werte im Sourcecode speichern

am 27.03.2007 19:27:08 von Frank Seitz

Günter Moritz wrote:

> ist es möglich Werte, die bei einem Programmlauf entstanden sind, für
> den nächsten Programmlauf im Sourcecode zu speichern?
>
> Es handelt sich speziell um 3 - 4 Werte und dafür eine Datei anlegen,
> zuöffnen, zu lesen und zu schreiben finde ich etwas overdressed.
>
> Ich meine etwas von DATA irgendwan gelesen zu haben, kann es aber nicht
> mehr finden.

Theoretisch kannst Du den __DATA__-Abschnitt der Skript-Datei
für sowas nutzen. Das Konzept ist aber fragwürdig:

1) der Aufrufer des Programms muss das Recht haben, das
Perlskript zu schreiben

2) bei nebenläufiger Ausführung des Programms muss sichergestellt
sein, dass die Daten nicht gleichzeitig geschrieben werden

3) beim parallelen Editieren und Ausführen des Skripts besteht
die Gefahr, dass die Daten und/oder das Programm
geschreddert werden

Allein wegen 3) würde ich die Finger davon lassen...

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: Werte im Sourcecode speichern

am 28.03.2007 11:22:18 von Ferry Bolhar

Frank Seitz:

> Theoretisch kannst Du den __DATA__-Abschnitt der Skript-Datei
> für sowas nutzen. Das Konzept ist aber fragwürdig:

Wie? DATA (das Filehandle) ist per Definition nur zum Lesen
geöffnet, und auch das nur dann, wenn es einen __DATA__
Bereich gibt. Natürlich kann man ein

close DATA;

machen, aber ab dann ist es ein ganz normales Handle, wie
jedes andere auch. Um in die Skriptdatei zu schreiben, muss
man sie explizit über $0 zum Anhängen ('>>') öffnen. Und
das kann man auch mit jedem beliebigen anderen Handle tun.

Oder habe ich da etwas übersehen?

LG, Ferry

--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol@adv.magwien.gv.at

Re: Werte im Sourcecode speichern

am 28.03.2007 11:42:39 von Frank Seitz

Ferry Bolhar wrote:
> Frank Seitz:
>>
>>Theoretisch kannst Du den __DATA__-Abschnitt der Skript-Datei
>>für sowas nutzen. Das Konzept ist aber fragwürdig:
>
> Wie? DATA (das Filehandle) ist per Definition nur zum Lesen
> geöffnet, und auch das nur dann, wenn es einen __DATA__
> Bereich gibt. Natürlich kann man ein
>
> close DATA;
>
> machen, aber ab dann ist es ein ganz normales Handle, wie
> jedes andere auch. Um in die Skriptdatei zu schreiben, muss
> man sie explizit über $0 zum Anhängen ('>>') öffnen. Und
> das kann man auch mit jedem beliebigen anderen Handle tun.

Ich meinte den __DATA__-Abschnitt, nicht die DATA-Handle.
Simples Anhängen wäre es nicht, da müsste man schon
mehr Aufwand treiben.

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: Werte im Sourcecode speichern

am 30.03.2007 11:56:53 von Andreas Fenner

Am 28.03.2007 11:22 schrieb Ferry Bolhar:
> Frank Seitz:
>
>> Theoretisch kannst Du den __DATA__-Abschnitt der Skript-Datei
>> für sowas nutzen. Das Konzept ist aber fragwürdig:
>
> Wie? DATA (das Filehandle) ist per Definition nur zum Lesen
> geöffnet, und auch das nur dann, wenn es einen __DATA__
> Bereich gibt. Natürlich kann man ein
>
> close DATA;
>
> machen, aber ab dann ist es ein ganz normales Handle, wie
> jedes andere auch. Um in die Skriptdatei zu schreiben, muss
> man sie explizit über $0 zum Anhängen ('>>') öffnen. Und
> das kann man auch mit jedem beliebigen anderen Handle tun.
>
> Oder habe ich da etwas übersehen?


Im "Perl Kochbuch, 2. Auflage" wird in Rezept 7.13 ein Weg gezeigt bei
dem schreiben in den DATA-Bereich möglich ist. Hierzu wird Inline::Files
verwendet. Siehe hier:
http://search.cpan.org/~dconway/Inline-Files-0.62/lib/Inline /Files.pm



Andreas
--
A: Weil es die Lesbarkeit des Textes verschlechtert.
F: Warum ist TOFU so schlimm?
A: TOFU
F: Was ist das größte Ärgernis im Usenet?