gitarwmn has asked for the wisdom of the Perl Monks concerning the following question:

I'm trying to write a script that will call a .cmd file so that I can use the variables from this .cmd file in my perl script. Since I'm such a newbie I was hoping somebody could point me in the right direction with this. By the way, this is in Windows. Thanks

Replies are listed 'Best First'.
Re: Calling variables from another file
by tachyon (Chancellor) on Oct 14, 2004 at 01:07 UTC

    No one can really help you unless you show us what is actually in your .CMD file. This is really just a DOS .BAT file so can contain any valid dos shell syntax. It is not immediately apparent why you should need to do this. More details please.

    my $file = 'c:/file.cmd'; open F, $file or die "Can't read $file, perl says $!\n"; while(my $line = <F>){ # parse the line to get data } close F;

    cheers

    tachyon

Re: Calling variables from another file
by graff (Chancellor) on Oct 14, 2004 at 01:06 UTC
    What's a ".cmd" file? (Okay, it has variables, so it's probably like some sort of executable script. If so, what language does it use?) Are the variables that it contains like shell environment variables (similar to "PATH")? Do you have the ability/desire to edit the .cmd file if necessary so that it plays nicely with a perl script? (Whatever the .cmd file does, have you considered replacing it completely with a perl script?)

    Have you tried any sort of perl script on your own yet? If so, why not post it as an update or reply to your node, with some clear information about what its inputs are, and what you intend it to do (and what it actually does, if it doesn't do what you want).

    Sorry, I have no answers, just questions. Your post was a bit vague.

Re: Calling variables from another file
by NetWallah (Canon) on Oct 14, 2004 at 05:40 UTC
    I'm assuming you mean Environment variables when you say "variables from this .cmd file".

    If this is the case, you can try to get them thus:

    open (CMDFILE,'cmdfile.cmd & SET |' ) or die "Cant run cmd"; while(<CMDFILE>){ print qq(EnvVar:$_) ## Look for the variables you want values for };
    Your perl program will obtain all STDOUT output produced by "cmdfile.cmd" , followed by all available environment variables. This output can now be parsed to get desired info.

        Earth first! (We'll rob the other planets later)