http://qs321.pair.com?node_id=731157


in reply to Heredoc with system call

Are you sure you answered your own question? It looked like you wanted to pipe some data to the STDIN of the lsnrctl program (whatever that is).

PS, you should be looking at $?, not $!. $! is for system calls, not the function which happens to be called "system."

#!/usr/bin/perl -w use strict; system("lsnrctl <<\"EOF\" set password 'oracle' set current_listener 'LISTENER' status EOF ") == 0 or die "Couldn't run listener control: $?"; system($command)==0 or die "couldn't run listener control: $!";

⠤⠤ ⠙⠊⠕⠞⠁⠇⠑⠧⠊

Replies are listed 'Best First'.
Re^2: Heredoc with system call
by curtisb (Monk) on Dec 18, 2008 at 05:14 UTC
    I can see what you are saying, but when I tried your code, I got this error;
    system("lsnrctl <<\"EOF\" set password oracle set current_listener LISTENER status EOF ") == 0 or die "Couldn't run listener control: $?";

    << was unexpected at this time. Couldn't run listener control: 256 at C:\heredoc_test.pl line 4.

    Bobby

      Oh, right. What I wrote would be valid for something like a bash shell but not for anything on Windows where it doesn't understand anything like heredocs. Since win32 perl only pretends to use fork, I found myself quickly unable to write a native CreateProcess call and then write to its stdin. I dunno. I'm just not a Windows programmer.

      ⠤⠤ ⠙⠊⠕⠞⠁⠇⠑⠧⠊