melo / scripts

My personal script stash

This URL has Read+Write access

scripts / bin / x-perl-edit-installed-module
100755 53 lines (38 sloc) 0.966 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/usr/bin/perl
 
use strict;
use warnings;
 
my @modules = @ARGV;
usage(1) unless @modules;
 
my $editor = $ENV{EDITOR};
usage(1, 'You must define the EDITOR environment') unless $editor;
 
my @paths;
for my $module (@modules) {
  my $module_dir = $module;
  $module_dir =~ s/::/\//g;
  my $module_file = $module_dir.'.pm';
  
  foreach my $inc (@INC) {
    my $path = "$inc/$module_file";
    push @paths, $path if -e $path;
 
    my $path_dir = "$inc/$module_dir";
    push @paths, $path_dir if -d $path_dir;
  }
}
 
if (@paths) {
  exec($editor, @paths);
  die("Could not exec() '$editor': $!");
}
 
print "Modules not found in \@INC:\n\n";
foreach my $module (@modules) {
  print " * $module\n";
}
print "\n";
exit(0);
 
 
sub usage {
  my ($exit_code, $mesg) = @_;
  
  print <<" EOU";
Usage: x-perl-edit-installed-module MODULE [MODULE]*
 
Starts your \$EDITOR with the installed version of MODULE
  EOU
  
  print "FATAL: $mesg\n" if $mesg;
  
  exit($exit_code);
}