Qi Wang Qi Wang - 2 years ago 81
Linux Question

java call perl which read and write data

I have two files int the directory '/tmp': test.txt ,test.pl

the content of test.txt is :


the content of the test.pl is:

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

Then in java class I write :

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

Then the content of the newtest.txt generated from the perl is :


Here is the problem ,There is a difference


but when I run 'perl test.pl' in linux , there is no difference between two files.

anyone knows the reason ? Thanks !

Answer Source

more is the guilty one here. It's intended for looking at a file one page at a time and waits for hitting e.g. SPACE to show the next page. Try cat instead of more to see if that is the reason.

more tries to be smart and autodetect whether it was called in an interactive situation but sometimes it fails. Depending on its settings it might behave as cat then, but you cannot be sure...

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download