in reply to How to execute dos commands from Perl

You need to get your story straight. Are you trying to run a DOS/Windows batch file, or are you trying to run a DOS/Windows executable? What operating system are you using? What have you tried and how did it fail?

Pretend we know nothing at all about what you are trying to do nor about the system you are trying to do it on. That shouldn't be too hard because it is actually the case - no pretence needed!

True laziness is hard work
  • Comment on Re: How to execute dos commands from Perl

Replies are listed 'Best First'.
Re^2: How to execute dos commands from Perl
by Poornima (Initiate) on May 31, 2012 at 06:57 UTC
    Hi, I am trying to execute a .NET exe from Perl script which should execute on dos prompt adn return the control back to perl script. The .NET exe would be sending fax to the users adn create a .done file, which would be read from the perl script after the execution.
      Then how come you say it was executed in a UNIX shell? Are you using Cygwin? Are you trying to execute a .Net program on UNIX?

      Just to be clear, by "dos prompt" and "dos commands" do you mean the Windows cmd.exe shell?

      IMHO, if you want to execute a .net program on windows, you should use someting like this:

      my $CmdNgen = "$fw20cmd\\ngen.exe"; my $ParmNgenPause = "ngen queue pause"; my $rc; $rc = ProcessItWin( $CmdNgen, $ParmNgenPause ); sub ProcessItWin { my ( $ProcessCmd, $ProcessParam ) = @_; my $ProcessObj = undef; #print "Start $ProcessCmd $ProcessParam\n"; my $rc = Win32::Process::Create( $ProcessObj, $ProcessCmd, $Pr +ocessParam, 0, NORMAL_PRIORITY_CLASS, q{.} ) or $rc = ErrorReport($ProcessCmd); my $pid = $ProcessObj->GetProcessID(); $ProcessObj->Wait(INFINITE); return $rc; } sub ErrorReport { my $cmd = shift; print "\n *** Error CreateProcess: Command=$cmd, ", Win32::For +matMessage( Win32::GetLastError() ), "\n"; return 0; }

      Also please read perldoc Win32::Process