linux-l: Aufruf vom anderen Perl-Script im Perl-Script
Jens Dreger
jens.dreger at physik.fu-berlin.de
Do Apr 27 20:42:27 CEST 2000
On Thu, Apr 27, 2000 at 01:49:41PM +0200, Steffen Solyga wrote:
> Dear Manuel Tennert, concerning your mail sent on Thursday, 2000/04/27 12:14
> let me reply the following:
>
> > Seit geraumer Zeit plage ich mich mit einem "kleineren" Problemchen
> > bezüglich Perl herum. Ich versuche krampfhaft in einem Perlscript andere
> > Perscripte aufzurufen, wobei es eine Eingabe- und auch Ausgabedatei beim
> > Aufruf des Perlscriptes geben soll, die zudem selbst gewählt werden
> > kann....verwirrend, gelle ??
> > Also mein Versuch im Perlscript folgendes einzubinden:
> >
> > exec("perl.exe seiten.pl $eingabedtaei >$ausgabedatei");
> >
> > verlief in die Hose, es passiert rein gar nichts.
> > Gibt es da denn eine Möglichkeit !???
>
> Warum nicht als Unterprogramm? Das würde das Starten eines zusätzlichen
> Interpreters unnötig machen und wäre flexibler. Vor allem kann perl
> eigentlich alles im Speicher, tausende Hilfsdateien sind unnötig.
Speicher skaliert i.a. schlechter als Hilfsdateien. Zumindest was die
Groesse angeht. Wenn's um speed geht, stimme ich Dir natuerlich zu.
> Ansonsten perl.exe (Windows?) als erste Zeile in seiten.pl schreiben
>
> #!......\perl.exe
Seit wann funktioniert die shebang-Syntax unter WinDoof ??? Man
korrigiere mich bitte, wenn sich da was getan hat. bisher galt:
http://www.cpan.org/ports/win32/FAQ/perlwin32faq4.html#What_s_the_equivalent_of_the_she
Dachte ich jedenfalls. Ich habe ja kein Windows da...
> oder wenn Du den output noch parsen willst
>
> @document = ();
> open( SEITEN, "...\seiten.pl $eingabedtaei |" );
> while( <SEITEN> ) {
> push( @document, $_ );
> }
Wieso lese ich in letzter Zeit dauernd dieses Konstrukt ? Was spricht
gegen:
open( SEITEN, "....");
@document = <SEITEN>;
Denn <>...
"...In list context, reads until end-of-file is reached and
returns a list of lines...".
> Warum Dein obiger Aufruf nicht funktioniert, ist mir nicht so ganz klar,
> allerdings habe ich mit perl auf NT auch kaum Erfahrung.
Ja, koennte mit NT zusammenhaengen. Es gibt ja kein echtes fork-exec
unter Windows...
Unter Linux jedenfalls geht's:
~> echo "perl -le 'print time'" > time.pl
~> ./time.pl
956860816
~> perl -e 'exec("./time.pl");'
956860820
Gruss,
Jens.
Mehr Informationen über die Mailingliste linux-l