Wie kann ich die Parameter OUTPUT_AUTOFLUSH=1 per perl-Kommando übergeben?

Wie kann ich die Parameter OUTPUT_AUTOFLUSH=1 per perl-Kommando übergeben?

am 02.06.2007 17:27:53 von Florian Erfurth

Hi, ich kenne mich mit perl absolut nichts aus. Es geht um das Problem, daß
mein QT-Applikation ein stdout-Problem mit dem Perl-Skript hat, weil es die
Ausgabe puffert. :( Da der Perl-Skript ein externes Applikation ist, möchte
ich die Code möglichst unberührt lassen. Drum frage ich Euch, gibt es eine
Möglichkeit von *außen* die Variable OUTPUT_AUTOFLUSH=1 bzw $|=1 zu setzen?
Sowas wie in der Richtung:
perl -option OUTPUT_AUTOFLUSH=1 perlskript.pl

cu Floh

Re: Wie kann ich die Parameter OUTPUT_AUTOFLUSH=1 per perl-Kommando übergeben?

am 02.06.2007 20:51:22 von Frank Seitz

Florian Erfurth wrote:

> Hi, ich kenne mich mit perl absolut nichts aus. Es geht um das Problem, daß
> mein QT-Applikation ein stdout-Problem mit dem Perl-Skript hat, weil es die
> Ausgabe puffert. :( Da der Perl-Skript ein externes Applikation ist, möchte
> ich die Code möglichst unberührt lassen. Drum frage ich Euch, gibt es eine
> Möglichkeit von *außen* die Variable OUTPUT_AUTOFLUSH=1 bzw $|=1 zu setzen?
> Sowas wie in der Richtung:
> perl -option OUTPUT_AUTOFLUSH=1 perlskript.pl

Ich weiß nicht, ob es der eleganteste Weg ist, aber
das müsste das Gewünschte tun:

$ perl -e '$| = 1; require "perlscript.pl"'

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: Wie kann ich die Parameter OUTPUT_AUTOFLUSH=1 per perl-Kommando übergeben?

am 02.06.2007 21:12:18 von Florian Erfurth

Frank Seitz wrote:

> Florian Erfurth wrote:
>
>> [SNIP]
>> gibt es eine Möglichkeit von *außen* die Variable OUTPUT_AUTOFLUSH=1 bzw
>> $|=1 zu setzen? Sowas wie in der Richtung:
>> perl -option OUTPUT_AUTOFLUSH=1 perlskript.pl
>
> Ich weiß nicht, ob es der eleganteste Weg ist, aber
> das müsste das Gewünschte tun:
>
> $ perl -e '$| = 1; require "perlscript.pl"'
Gibt es einen Grund dafür, daß das *nicht* der eleganteste Weg ist? Wenn es
einwandfrei funktioniert, dann ist es perfekt! Ich werde in der nächsten
Version von meiner Applikation testen.
Vielen Dank!

Floh

Re: Wie kann ich die Parameter OUTPUT_AUTOFLUSH=1 per perl-Kommando übergeben?

am 03.06.2007 09:47:25 von Florian Erfurth

Frank Seitz wrote:

> Florian Erfurth wrote:
>
>> [SNIP]
>> gibt es eine Möglichkeit von *außen* die Variable OUTPUT_AUTOFLUSH=1 bzw
>> $|=1 zu setzen? Sowas wie in der Richtung:
>> perl -option OUTPUT_AUTOFLUSH=1 perlskript.pl
>
> Ich weiß nicht, ob es der eleganteste Weg ist, aber
> das müsste das Gewünschte tun:
>
> $ perl -e '$| = 1; require "perlscript.pl"'
Es funktioniert zwar, wenn man keine Parameter für perlscript.pl verwendet.
Aber mit Parametern funktioniert es leider nicht. :(

>>>
[floh@Turion pmp_muxer_avc_1_01]$ perl -e '$|=1;
require "/home/floh/pmp_muxer_avc_1_01/pmp_muxer_avc.pl -v /home/floh/temp/
Mezzo_Forte_1_tmp.avi -a /home/floh/temp/Mezzo_Forte_1_tmp.mp3 -o
/home/floh/temp/Mezzo_Forte_1.pmp"'
Can't locate /home/floh/pmp_muxer_avc_1_01/pmp_muxer_avc.pl -v
/home/floh/temp/Mezzo_Forte_1_tmp.avi -a
/home/floh/temp/Mezzo_Forte_1_tmp.mp3 -o /home/floh/temp/Mezzo_Forte_1.pmp
in @INC (@INC contains:
[SNIP]
at -e line 1.
[floh@Turion pmp_muxer_avc_1_01]$
<<<

cu Floh

Re: Wie kann ich die Parameter OUTPUT_AUTOFLUSH=1 per perl-Kommando übergeben?

am 03.06.2007 11:05:44 von Dennis Scheck

Florian Erfurth schrieb:

> Frank Seitz wrote:
>> Ich weiß nicht, ob es der eleganteste Weg ist, aber
>> das müsste das Gewünschte tun:
>>
>> $ perl -e '$| = 1; require "perlscript.pl"'
> Es funktioniert zwar, wenn man keine Parameter für perlscript.pl
> verwendet. Aber mit Parametern funktioniert es leider nicht. :(

Doch, doch, das tut auch, aber man muss die Parameter an der richtigen
Stelle angeben. ;-)

require selber kann mit den Parametern nix anfangen. aber so müsste es
gehen:

perl -e '$|=1; require "perlscript.pl"' -m eine -P arameter hier

HTH
Dennis

P.S. Was spricht denn gegen ein "do" statt "require", das wäre mein
Ansatz am Anfang gewesen. Hätte ich dadurch einen Nachteil?! Mir wäre
keiner bekannt...

Re: Wie kann ich die Parameter OUTPUT_AUTOFLUSH=1 per perl-Kommando übergeben?

am 03.06.2007 18:19:06 von Slaven Rezic

Florian Erfurth writes:

> Frank Seitz wrote:
>
> > Florian Erfurth wrote:
> >
> >> [SNIP]
> >> gibt es eine Möglichkeit von *außen* die Variable OUTPUT_AUTOFLUSH=1 bzw
> >> $|=1 zu setzen? Sowas wie in der Richtung:
> >> perl -option OUTPUT_AUTOFLUSH=1 perlskript.pl
> >
> > Ich weiß nicht, ob es der eleganteste Weg ist, aber
> > das müsste das Gewünschte tun:
> >
> > $ perl -e '$| = 1; require "perlscript.pl"'
> Es funktioniert zwar, wenn man keine Parameter für perlscript.pl verwendet.
> Aber mit Parametern funktioniert es leider nicht. :(
>
> >>>
> [floh@Turion pmp_muxer_avc_1_01]$ perl -e '$|=1;
> require "/home/floh/pmp_muxer_avc_1_01/pmp_muxer_avc.pl -v /home/floh/temp/
> Mezzo_Forte_1_tmp.avi -a /home/floh/temp/Mezzo_Forte_1_tmp.mp3 -o
> /home/floh/temp/Mezzo_Forte_1.pmp"'
> Can't locate /home/floh/pmp_muxer_avc_1_01/pmp_muxer_avc.pl -v
> /home/floh/temp/Mezzo_Forte_1_tmp.avi -a
> /home/floh/temp/Mezzo_Forte_1_tmp.mp3 -o /home/floh/temp/Mezzo_Forte_1.pmp
> in @INC (@INC contains:
> [SNIP]
> at -e line 1.
> [floh@Turion pmp_muxer_avc_1_01]$
> <<<
>
> cu Floh

Versuch's mal so:

$ perl -e '$|=1; $file = shift; do $file' script 1 2 3

Statt "do" kann man auch "require" verwenden; das ist länger, zeigt
aber im Gegensatz zu "do" auch Syntaxfehler an.

Gruß,
Slaven

--
Slaven Rezic - slaven rezic de

Berlin Perl Mongers - http://berlin.pm.org

Re: Wie kann ich die Parameter OUTPUT_AUTOFLUSH=1 per perl-Kommando übergeben?

am 03.06.2007 18:35:18 von Frank Seitz

Florian Erfurth wrote:
> Frank Seitz wrote:
>>
>>$ perl -e '$| = 1; require "perlscript.pl"'
>
> Es funktioniert zwar, wenn man keine Parameter für perlscript.pl verwendet.
> Aber mit Parametern funktioniert es leider nicht. :(
>
> [floh@Turion pmp_muxer_avc_1_01]$ perl -e '$|=1;
> require "/home/floh/pmp_muxer_avc_1_01/pmp_muxer_avc.pl -v /home/floh/temp/
> Mezzo_Forte_1_tmp.avi -a /home/floh/temp/Mezzo_Forte_1_tmp.mp3 -o
> /home/floh/temp/Mezzo_Forte_1.pmp"'
> Can't locate /home/floh/pmp_muxer_avc_1_01/pmp_muxer_avc.pl -v
> /home/floh/temp/Mezzo_Forte_1_tmp.avi -a
> /home/floh/temp/Mezzo_Forte_1_tmp.mp3 -o /home/floh/temp/Mezzo_Forte_1.pmp
> in @INC (@INC contains:
> [SNIP]
> at -e line 1.

Die Parameter musst Du natürlich auf der Kommandozeile
angeben, nicht als Teil des require.

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: Wie kann ich die Parameter OUTPUT_AUTOFLUSH=1 per perl-Kommando übergeben?

am 04.06.2007 01:44:21 von Frank Seitz

Dennis Scheck wrote:

> P.S. Was spricht denn gegen ein "do" statt "require", das wäre mein
> Ansatz am Anfang gewesen. Hätte ich dadurch einen Nachteil?! Mir wäre
> keiner bekannt...

Require hat den Vorteil, dass es eine Exception wirft,
wenn etwas schiefgeht. Bei do() muss man die Fehlerbehandlung
selbst progammieren, die überdies auch noch recht
kompliziert ist.

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: Wie kann ich die Parameter OUTPUT_AUTOFLUSH=1 per perl-Kommando übergeben?

am 04.06.2007 08:30:59 von Florian Erfurth

Dennis Scheck wrote:

> Florian Erfurth schrieb:
>
>> Es funktioniert zwar, wenn man keine Parameter für perlscript.pl
>> verwendet. Aber mit Parametern funktioniert es leider nicht. :(
>
> Doch, doch, das tut auch, aber man muss die Parameter an der richtigen
> Stelle angeben. ;-)
>
> require selber kann mit den Parametern nix anfangen. aber so müsste es
> gehen:
Ok, danke!

> perl -e '$|=1; require "perlscript.pl"' -m eine -P arameter hier
Scheint immer noch nicht zu gehen. :(

>>>
[floh@Turion pmp_muxer_2_01]$ perl -e '$|=1;
require "/home/floh/daten/development/avi2pmp-0.2-0/pmp_muxer_2_01/p mp_muxer.pl"'
PMP Muxer v2.01 by jonny

Copyright (C) 2006 jonny

Homepage: http://jonny.leffe.dnsalias.com
E-mail: jonny@leffe.dnsalias.com

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.


Usage (3 arguments):
pmp_muxer videofile audiofile pmpfile

Usage (general):
pmp_muxer -v videofile -a audiofile -o pmpfile -d debuglevel

Examples:
pmp_muxer video.avi audio.mp3 out.pmp
pmp_muxer -v video.avi -a audio.mp3 -o out.pmp -d 1
pmp_muxer -v video.avi -a audio1.mp3 -a audio2.mp3 -o out.pmp -d 1
[floh@Turion pmp_muxer_2_01]$ perl -e '$|=1;
require "/home/floh/daten/development/avi2pmp-0.2-0/pmp_muxer_2_01/p mp_muxer.pl"' -v
~/temp/spielewiese/Mezzo_Forte_1_tmp.avi -a
~/temp/spielewiese/Mezzo_Forte_1_tmp.mp3 -o ~/temp/test.pmp

This is perl, v5.8.8 built for x86_64-linux-thread-multi

Copyright 1987-2006, Larry Wall

Perl may be copied only under the terms of either the Artistic License or
the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

[floh@Turion pmp_muxer_2_01]$
<<<

cu Floh

Re: Wie kann ich die Parameter OUTPUT_AUTOFLUSH=1 per perl-Kommando übergeben?

am 04.06.2007 08:33:39 von Florian Erfurth

Frank Seitz wrote:

> Florian Erfurth wrote:
>> Frank Seitz wrote:
>>>
>>>$ perl -e '$| = 1; require "perlscript.pl"'
>>
>> Es funktioniert zwar, wenn man keine Parameter für perlscript.pl
>> verwendet. Aber mit Parametern funktioniert es leider nicht. :(
>>
>> [floh@Turion pmp_muxer_avc_1_01]$ perl -e '$|=1;
>> require "/home/floh/pmp_muxer_avc_1_01/pmp_muxer_avc.pl -v
>> /home/floh/temp/ Mezzo_Forte_1_tmp.avi -a
>> /home/floh/temp/Mezzo_Forte_1_tmp.mp3 -o
>> /home/floh/temp/Mezzo_Forte_1.pmp"'
>> [SNIP-Fehlermeldung]
>
> Die Parameter musst Du natürlich auf der Kommandozeile
> angeben, nicht als Teil des require.
Meinst Du so?
>>>
perl -e '$|=1;
require "/home/floh/daten/development/avi2pmp-0.2-0/pmp_muxer_2_01/p mp_muxer.pl"' -v
~/temp/spielewiese/Mezzo_Forte_1_tmp.avi -a
~/temp/spielewiese/Mezzo_Forte_1_tmp.mp3 -o ~/temp/test.pmp
<<<
Falls ja, dann funktioniert es nicht (siehe andere Posting von mir).
Danke.
cu Floh

Re: Wie kann ich die Parameter OUTPUT_AUTOFLUSH=1 per perl-Kommando übergeben?

am 04.06.2007 08:36:48 von Florian Erfurth

Slaven Rezic wrote:

> Florian Erfurth writes:
>
>> Frank Seitz wrote:
>>
>> > $ perl -e '$| = 1; require "perlscript.pl"'
>> Es funktioniert zwar, wenn man keine Parameter für perlscript.pl
>> verwendet. Aber mit Parametern funktioniert es leider nicht. :(
>>
>> >>>
>> [floh@Turion pmp_muxer_avc_1_01]$ perl -e '$|=1;
>> require "/home/floh/pmp_muxer_avc_1_01/pmp_muxer_avc.pl -v
>> /home/floh/temp/ Mezzo_Forte_1_tmp.avi -a
>> /home/floh/temp/Mezzo_Forte_1_tmp.mp3 -o
>> /home/floh/temp/Mezzo_Forte_1.pmp"' Can't locate
>> /home/floh/pmp_muxer_avc_1_01/pmp_muxer_avc.pl -v
>> /home/floh/temp/Mezzo_Forte_1_tmp.avi -a
>> /home/floh/temp/Mezzo_Forte_1_tmp.mp3 -o
>> /home/floh/temp/Mezzo_Forte_1.pmp in @INC (@INC contains:
>> [SNIP]
>> at -e line 1.
>> [floh@Turion pmp_muxer_avc_1_01]$
>> <<<
>>
>> cu Floh
>
> Versuch's mal so:
>
> $ perl -e '$|=1; $file = shift; do $file' script 1 2 3
>
> Statt "do" kann man auch "require" verwenden; das ist länger, zeigt
> aber im Gegensatz zu "do" auch Syntaxfehler an.
Eben getestet, passiert leider nichts:
>>>
[floh@Turion pmp_muxer_2_01]$ perl -e '$|=1; $file
= "/home/floh/daten/development/avi2pmp-0.2-0/pmp_muxer_2_01/p mp_muxer.pl";
require $file' -v ~/temp/spielewiese/Mezzo_Forte_1_tmp.avi -a
~/temp/spielewiese/Mezzo_Forte_1_tmp.mp3 -o ~/temp/test.pmp

This is perl, v5.8.8 built for x86_64-linux-thread-multi

Copyright 1987-2006, Larry Wall

Perl may be copied only under the terms of either the Artistic License or
the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

[floh@Turion pmp_muxer_2_01]$
<<<

Danke Floh

Re: Wie kann ich die Parameter OUTPUT_AUTOFLUSH=1 per perl-Kommando übergeben?

am 04.06.2007 09:52:49 von Frank Seitz

Florian Erfurth wrote:
> Frank Seitz wrote:
>>
>>Die Parameter musst Du natürlich auf der Kommandozeile
>>angeben, nicht als Teil des require.
>
> Meinst Du so?
>
> perl -e '$|=1;
> require "/home/floh/daten/development/avi2pmp-0.2-0/pmp_muxer_2_01/p mp_muxer.pl"' -v
> ~/temp/spielewiese/Mezzo_Forte_1_tmp.avi -a
> ~/temp/spielewiese/Mezzo_Forte_1_tmp.mp3 -o ~/temp/test.pmp

So ist's richtig.

> Falls ja, dann funktioniert es nicht (siehe andere Posting von mir).

Setze vor die Parameterliste noch '--', damit Perl selbst
die Optionen nicht interpretiert.

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: Wie kann ich die Parameter OUTPUT_AUTOFLUSH=1 per perl-Kommando übergeben?

am 04.06.2007 11:10:09 von Christian Winter

Florian Erfurth schrieb:
> Hi, ich kenne mich mit perl absolut nichts aus. Es geht um das Problem, daß
> mein QT-Applikation ein stdout-Problem mit dem Perl-Skript hat, weil es die
> Ausgabe puffert. :( Da der Perl-Skript ein externes Applikation ist, möchte
> ich die Code möglichst unberührt lassen. Drum frage ich Euch, gibt es eine
> Möglichkeit von *außen* die Variable OUTPUT_AUTOFLUSH=1 bzw $|=1 zu setzen?
> Sowas wie in der Richtung:
> perl -option OUTPUT_AUTOFLUSH=1 perlskript.pl

Kleine Spielerei:
------------------- als autoflush.pm speichern ----------------------
package autoflush;

use IO::Handle;

sub import {
*main::STDOUT->autoflush(1);
}

1;
------------------------------------------------------------ ---------

Dann sollte
perl -Mautoflush perlskript.pl
ungepuffert laufen.

-Christian

Re: Wie kann ich die Parameter OUTPUT_AUTOFLUSH=1 per perl-Kommando übergeben?

am 04.06.2007 12:09:01 von Frank Seitz

Christian Winter wrote:

> Kleine Spielerei:
> ------------------- als autoflush.pm speichern ----------------------
> package autoflush;
>
> use IO::Handle;
>
> sub import {
> *main::STDOUT->autoflush(1);
> }
>
> 1;
> ------------------------------------------------------------ ---------
>
> Dann sollte
> perl -Mautoflush perlskript.pl
> ungepuffert laufen.

Wozu package autoflush, wozu import, wozu IO::Handle?
Das sollte es genauso gut tun (ungetestet):

-- autoflush.pm --
$| = 1;
------------------

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: Wie kann ich die Parameter OUTPUT_AUTOFLUSH=1 per perl-Kommando übergeben?

am 04.06.2007 14:44:15 von Florian Erfurth

Frank Seitz wrote:

> Florian Erfurth wrote:
>> Frank Seitz wrote:
>>>
>>>Die Parameter musst Du natürlich auf der Kommandozeile
>>>angeben, nicht als Teil des require.
>>
>> Meinst Du so?
>>
>> perl -e '$|=1;
>> require
>> "/home/floh/daten/development/avi2pmp-0.2-0/pmp_muxer_2_01/p mp_muxer.pl"'
>> -v ~/temp/spielewiese/Mezzo_Forte_1_tmp.avi -a
>> ~/temp/spielewiese/Mezzo_Forte_1_tmp.mp3 -o ~/temp/test.pmp
>
> So ist's richtig.
>
>> Falls ja, dann funktioniert es nicht (siehe andere Posting von mir).
>
> Setze vor die Parameterliste noch '--', damit Perl selbst
> die Optionen nicht interpretiert.
Jetzt passt es! Vielen Dank! Muß jetzt nur noch testen, ob autoflush auch
wirklich funktioniert. Aber das wird schon passen! :)

cu Floh