[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