So my question is, how can I check when I open a process, if the command really exists?
Just try to run the command and see if that fails. Don't fail fatally (die()) if you do not want to.

use strict; use warnings; my $run_cmd = "dira"; if ( open(my $CMD, "$run_cmd |") ) { while( <$CMD> ) { print "$_"; } close($CMD); } else { die "Problem executing command $run_cmd - $!"; # ... or something non-fatal }
Alternatively, you could wrap your stuff into an eval { ... } block and then examine $@ (e.g. Problem executing command in the example above). You could also try one of the many CPAN modules that supports handling of exceptions.

Update:

Another possibility would be to loop through all pathes in the environment variable PATH and then checking if the command exists.
There is this ancient thread and some CPAN modules like Dir::Which or File::Which that can be used to perform apriori checks - but see cdarke's comments below.

Update2:
The program above was tested and worked fine under Linux. Since I am not a Windows-expert, I can only do wild guesses on what the problem could be:


In reply to Re: Opening not-existing command - Error Handling by Perlbotics
in thread Opening not-existing command - Error Handling by Dirk80

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.