#!/usr/bin/perl -w use strict; # inpath - verify that a specified program is either valid as-is, # or can be found in the PATH directory list. sub in_path { my ($cmd, $path) = @_; my $found = 0; foreach my $directory (split /:/, $path) { return "exe" if -x "$directory/$cmd"; $found = 1 if -e "$directory/$cmd"; } return $found ? "plain" : "not found"; } sub check_for_command_in_path { my ($command) = @_; if ($command =~ m{^/}) { return 'exe' if -x $command; return -e $command ? 'plain' : 'not found'; } else { in_path($command, $ENV{PATH}); } } die "Usage: $0 command\n" if @ARGV != 1; my $ret = check_for_command_in_path($ARGV[0]); print "Executable $ARGV[0] found in PATH\n" if $ret eq "exe"; print "$ARGV[0] found but not executable" if $ret eq "plain"; print "$ARGV[0] not found in PATH\n" if $ret eq "not found";