[Dresden-pm] Verständnisfrage zum print-Befehl bei Debconf::Client::ConfModule

Martin Probst (RobHost Support) support at robhost.de
Mo Jun 7 11:39:36 PDT 2010


Hallo,

Am 07.06.2010 um 19:39 schrieb Hans-Dietrich Kirmse <hd.kirmse at gmx.de>:

> Hallo,
>
> Steffen Schwigon schrieb:
>> Hans-Dietrich Kirmse <hd.kirmse at gmx.de> writes:
>>>> Probier doch nach dem get() mal ein
>>>>> select( STDOUT );
>>>> und schau ob wieder die Konsole als Standard-Ausgabe verwendet  
>>>> wird.
>>> nein, passiert leider nicht.
>> Und Du hast auch *danach* das print $value; probiert?
>
> bevor wir aneinander vorbeireden, das habe ich gerade probiert:

Ja so meinte ich das. Das sollte wie erwähnt STDOUT wieder als  
Standard-Ausgabekanal nutzen.

>
>
> #!/usr/bin/perl
> use warnings;
> use strict;
>
> use Debconf::Client::ConfModule ':all';
> version('2.0');
> my ($status,$value) = get('delixs/host');
>
> select( STDOUT );
>
> print $value, "\n";
>
> open DATEI, ">", "test2.txt" or die;
> print DATEI $value;
> close DATEI;
>
> __END__
>
>
> auf der Konsole passiert *NICHTS*
> aber die Datei "test2.txt" wurde angelegt und der Hostname 'alix'
> reingeschrieben.
>
> Ohne zu wissen wie es geht, aber ich hätte erwartet, dass ich das
> Dateihandle(?) STDOUT erstmal sichern muss und dann wieder
> zurückschreiben muss. Aber wie gesagt, ich kenne mich da nicht aus u 
> nd
> weiss erst recht nicht wie es geht.

Normalweise sind STDIN, -OUT, -ERR per Default vorhanden, außer diese  
werden explizit überschrieben. Du könntest sowas wie

am Anfang:
my $out = *STDOUT;

vor dem print:
select($out);

probieren. Allerdings weiß ich im Moment nicht ob Perl intern dup()  
nimmt oder ob $out nur eine Referenz auf STDOUT ist. Dann würde dies  
nichts nützen.

MfG
Maddin

>


Mehr Informationen über die Mailingliste Dresden-pm