[Dresden-pm] Verständnisfrage zum print-Befehl bei Debconf::Client::ConfModule
Martin Probst (RobHost Support)
support at robhost.de
Mo Jun 7 09:32:34 PDT 2010
Hallo Hans-Dietrich,
Am 07.06.2010 um 13:04 schrieb Hans-Dietrich Kirmse:
> Hallo,
>
> ich schrieb:
>
>> Zum Zugriff auf die Debconf-Datenbank (dort stehen die Voreinstellungen)
>> wird bei Debian das oben angegeben Modul mitgeliefert. Ich möchte jetzt
>> einen Wert aus der Debconf-Datenbank auslesen. Folgendes Script tut
>> *fast* das was es soll:
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> #!/usr/bin/perl
>> use warnings;
>> use strict;
>> use Debconf::Client::ConfModule ':all';
>> version('2.0');
>> my ($status, $value) = get('delixs/host');
>> print $value, "\n";
>> open DATEI, '>', 'temp.txt'
>> or die "konnte Datei nicht oeffnen.$!\n";
>> print DATEI $value, "\n";
>> close DATEI;
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> Auf der Konsole erscheint leider *nichts*. Aber in der Datei 'temp.txt'
>> steht genau der gesuchte Wert drin! für mich völlig unerklärlich.
>
> in der Debian-Liste kam doch noch eine Antwort:
>
> <kopie>
> Bei Shellscripts ist es so, dass Du, wenn Du das confmodule gesourced
> hast, auf Deinem stdin/stdout nicht mehr mit der Konsole sprichst,
> sondern mit debconf. Es würde mich wundern, wenn das bei perl anders
> wäre.
> </kopie>
>
> eigentlich erklärt das, warum das so ist. Nur mein Problem ist damit
> nicht gelöst.
>
> Ich möchte in den Script auch weiterhin auf die Standardausgabe
> (Konsole) schreiben. D.h. nachdem in dem kleinen Beispiel-Script die Zeile
>
> my ($status, $value) = get('delixs/host');
>
> abgearbeitet ist, möchte ich die Ausgabe wieder zurücksetzen, wie könnte
> man da vorgehen? (Habe sowas noch nie gemacht)
>
Scheinbar selected das Modul einen anderen Ausgabekanal als Standard-Ausgabe.
Probier doch nach dem get() mal ein
> select( STDOUT );
und schau ob wieder die Konsole als Standard-Ausgabe verwendet wird.
Was ich oben gerade sehe, du machst ja ein
> print DATEI $value, "\n";
also ein print auf das Filehandle "DATEI", ergo Ausgabe in die Datei. Hattest du schon ein normales
> print $value, "\n";
probiert?
> Für jeden Tipp wäre ich sehr dankbar.
>
> Mit freundlichen Grüßen
> Hans-Dietrich
MfG
Maddin
Mehr Informationen über die Mailingliste Dresden-pm