Comment pouvez-vous voir si un fichier est dans l'un des répertoires spécifiés dans $ENV{PATH}
sans regarder $ENV{PATH}
? & hellip; C'est une question rhétorique.
Voici un short script I wrote il y a un certain temps. Vous devriez être en mesure de l'adapter à vos besoins:
#!/usr/bin/perl
use strict; use warnings;
use File::Basename;
use File::Spec::Functions qw(catfile path);
my $myname = fileparse $0;
die "Usage: $myname program_name\n" unless @ARGV;
my @path = path;
my @pathext = (q{});
if ($^O eq 'MSWin32') {
push @pathext, map { lc } split /;/, $ENV{PATHEXT};
}
PROGRAM: for my $progname (@ARGV) {
unless ($progname eq fileparse $progname) {
warn "Not processed: $progname\n\tArgument is not a plain file name\n";
next PROGRAM;
}
my @results;
for my $dir (@path) {
for my $ext (@pathext) {
my $f = catfile $dir, "$progname$ext";
push @results, $f if -x $f;
}
}
print "$progname:\n";
print "\t$_\n" for @results;
}
Est-ce que le travail pour les fichiers qui ne sont pas exécutables ? –
N ° – daxim
Cela devrait être très bien, car ce que d'autres fichiers vous seraient intéressés en se référant à 'PATH'. Mais tout de même, ça vaut le coup de le souligner. –