2016-06-17 8 views
1

Ich habe zwei Dateien int das Verzeichnis '/ tmp': test.txt, test.pljava Aufruf perl, die Daten lesen und schreiben

der Gehalt an test.txt ist:

abcdefg 

die Inhalt des test.pl ist:

#!/usr/bin/perl -w 
chdir '/tmp'; 
$data = `more test.txt`; 
open (MYFILE,">","newtest.txt") || die ("can not open this file"); 
print MYFILE $data; 

dann in Java-Klasse I schreiben:

Process ps1= Runtime.getRuntime().exec("perl /tmp/test.pl "); 

Dann wird der Inhalt des newtest.txt aus dem Perl erzeugt wird:

::::::::::: 
test.txt 
::::::::::: 
abcdefg 

Hier ist das Problem, Es gibt einen Unterschied

::::::: 
test.txt 
::::::: 

aber wenn ich laufe 'perl test.pl' in linux gibt es keinen Unterschied zwischen zwei Dateien.

kennt jemand den Grund? Vielen Dank !

+0

Vielen Dank sehr, sehr viel! Das ist der Grund ! Ich war den ganzen Tag über verwirrt! Ich akzeptiere meine große Bewunderung und Anbetung! –

+0

Gern geschehen. Ich habe eine Antwort auf meinen Kommentar gegeben. – PerlDuck

Antwort

1

more ist der Schuldige hier. Es ist beabsichtigt, eine Datei eine Seite nach der anderen anzusehen und wartet darauf, z.B. SPACE, um die nächste Seite anzuzeigen. Versuchen Sie cat anstelle von more um zu sehen, ob das der Grund ist.

more versucht, intelligent zu sein und automatisch zu erkennen, ob es in einer interaktiven Situation aufgerufen wurde, aber manchmal schlägt es fehl. Abhängig von seinen Einstellungen verhält es sich dann wie cat dann, aber Sie können nicht sicher sein ...