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