lang/perl/ TidyPath


For removing duplicates from the PATH variable, and for adding new entries. For example

tidypath a:b:c b:c d:e:f:a

will output

a:b:c:d:e:f
#!/usr/bin/perl

@p = ();
%p = ();

for(@ARGV) {
  if( /^-p/ ) {
    @a = split ":", $ENV{'PATH'};
    for $a(@a) {
      if( ! $p{$a} ) {
        push @p, $a;
        $p{$a} = 1;
      }
    }
  } else {
    @a = split ":";
    for $a(@a) {
      if( ! $p{$a} ) {
        push @p, $a;
        $p{$a} = 1;
      }
    }
  }
}

$path = join ":", @p;
print "$path\n";