Similar question... in Win32, it doesn't seem to read in @ARGV, unless I'm just being dense. For example, a one line script:
 
            print @ARGV;
 
When executed as follows:
 
            foo.pl red blue yellow
 
You'd expect the STDOUT to be "red blue yellow". It executes and exits without error, yet it doesn't give any output. Any ideas?
 
 
-----Original Message-----
From: Frank Merrow [mailto:[EMAIL PROTECTED]]
Sent: Monday, May 22, 2000 1:30 PM
To: Perl-Win32-Users Mailing List
Cc: Perl-Win32-Users Mailing List
Subject: RE: system();

I am jumping in the middle of this tread without the whole thing . . .

However, this isn't the old CMD.EXE redirection problem is it?

STDOUT isn't redirected properly in some cases.  It has to do with the nice magic CMD.EXE will do if you do things like type "sheet.xls" at the command prompt.  They eat STDOUT thinking your a GUI process when in fact you are a Perl process.

IF this is the problem, then the following should fix it assuming perl.exe is in your path:

open(FOO, "perl gettag.pl -q $TagName |")

Frank

At 10:14 AM 5/22/00, Fauzi  Ashurex wrote:

I want to execute "gettag.pl -q TagName" and capture the output of the
command, I have tried different ways, but no luck!
The "gettag.pl -q TagName" will return one "1" if it's true, the TagName
exist in the Tagdb, else will return zero "0", so I would like to capture
the "1" and the "0"

1- open(FOO, "gettag.pl -q $TagName |");
        while (<FOO>) {
               chop;
                print $_;
        }

* Nothing happens here?

2- $Tag = system ("gettag.pl -q $TagName") ;
    print "Tag: $Tag";

* Two things happen here:
        A- If true will print to the screen
                 1         --> from the call to system
            Tag:0   --> from print

        B- if not true will print to the screen
            0         --> from the call to system
           Tag:0   --> from print

 But I could not capture it into a variable that I can manipulate

3- @Gettag_Return = `gettag.pl -q $TagName` ;
           foreach $get_line (@Gettag_Return) {
                  print "$get_line";
            }

* Nothing happen


I have used all those techniques in the past and I know they should work!
Am I missing something?

Thanks for any advice.
-Fauzi

-----Original Message-----
From: Bellenger, Bruno (Paris) [mailto:[EMAIL PROTECTED]]
Sent: Sunday, May 21, 2000 11:55 PM
To: Perl-Win32-Users Mailing List
Subject: RE: system();


>"Hogue, Jon" wrote:
        >> I want to run a dos command and play with the output of the
command.
        >>
        >> For example,
        >>
        >> If I do system("foo.exe"), how do I get the ouput of foo.exe.
(not the exit
        >> status).
        
>Open it in a pipe:
>#open(FOO, "foo.exe|");
        
open(FOO, "foo.exe| 2>&1");
# adding '2>&1' will get you what foo.exe writes to STDERR too,
# not just STDOUT
# An alternative if you're not expecting lots of lines is the simpler :
@foo_return = `foo.exe` ;
# Note : The above uses backticks, not single quotes.
# Each element of @foo_return now contains one line of foo.exe's
# output (including the newline/carriage return char.).

>(Note: I've assumed this works on Perl-Win32. I've only used it on Unix.)

It does work on WIN32.

        >Hamish
>Hamish Moffatt                   Email: [EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>
>R&D Engineer,                    Phone: +61 3 9210 5782
>Advanced Networks Division       Fax:   +61 3 9210 5550
>Agilent Technologies             Web:   http://www.agilent.com/
<http://www.agilent.com/>


Cheers.

_____________________________________________
Bruno Bellenger
Sr. Network/Systems Administrator



---
You are currently subscribed to perl-win32-users as: [EMAIL PROTECTED]
To unsubscribe, forward this message to
         [EMAIL PROTECTED]
For non-automated Mailing List support, send email to 
         [EMAIL PROTECTED]

---
You are currently subscribed to perl-win32-users as: [EMAIL PROTECTED]
To unsubscribe, forward this message to
         [EMAIL PROTECTED]
For non-automated Mailing List support, send email to 
         [EMAIL PROTECTED]

Reply via email to