System call doesn't work

X

xlue897

Hi, All:


I have the following perl code intending to open several files using
vi. But it doesn't work.


ls test* | perl -n -e 'chomp; $cmd="vi $_"; unless(system($cmd))
{ print "success\n";}'


it reports error like:
"Input read error
success
"


Thanks for your help.


Steven
 
J

Joe Smith

Hi, All:


I have the following perl code intending to open several files using
vi. But it doesn't work.


ls test* | perl -n -e 'chomp; $cmd="vi $_"; unless(system($cmd))
{ print "success\n";}'

You're calling 'vi' with STDIN still connected to the pipe from 'ls'.

perl -le 'print system("vi $_") ? "error ".$?>>8 : "OK" for @ARGV' *.pl

-Joe
 
X

xlue897

You're calling 'vi' with STDIN still connected to the pipe from 'ls'.

perl -le 'print system("vi $_") ? "error ".$?>>8 : "OK" for @ARGV' *.pl

-Joe

Thanks you Joe. It works. However, how can I change the STDIN from
pipe to standard input and vice versa?

Thanks,


Steven
 
X

xlue897

Thanks you Joe. It works. However, how can I change the STDIN from
pipe to standard input and vice versa?

Thanks,

Steven


Hi,

I worked out the function by unix find command:
find . -name 'test*' -exec vi {} \;

however, still cannot figure out how perl implement the same function.

Any help will be appreciated.

Thanks,

Steven
 
J

J. Gleixner

I worked out the function by unix find command:
find . -name 'test*' -exec vi {} \;

however, still cannot figure out how perl implement the same function.

find2perl should help.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,774
Messages
2,569,596
Members
45,143
Latest member
SterlingLa
Top