#! /usr/local/bin/perl -w
# $Id:$
# Copyright (c) 2004 travis+web@subspacefield.org

use strict;
use integer; 

my $PATH = $ENV{"PATH"};

my @path = split(":", $PATH);

use IO::Dir;

my %prognames;

my %seen;

foreach my $dir (@path) {
	$dir = `cd $dir; pwd`;
	chomp $dir;
	if ($seen{$dir}) {
		warn "ignoring duplicate path component $dir\n";
		next;
	}
	$seen{$dir} = 1;
	my $d = new IO::Dir $dir;
	my @executables;
	my $file;
	if (defined $d) {
		while (defined($file = $d->read)) { push(@executables, $file) };
		@executables = grep { -f "$dir/$_" } @executables;
		@executables = grep { -x "$dir/$_" } @executables;
		foreach my $exe (@executables) {
			$prognames{$exe} = [] unless defined($prognames{$exe});
			push(@{$prognames{$exe}}, $dir);
		}
	}
	else {
		warn "Invalid element in path: $dir\n";
	}
}

my ($progname, $dirs_ref);
while (($progname, $dirs_ref) = each %prognames) {
	my @dirs = @$dirs_ref;
	if (scalar(@dirs) != 1) {
		print "$progname = " . join(" ", @dirs), "\n";
	}
}

exit 0;
