#!/usr/local/bin/perl ########################################### # vpm # 2007, Mike Schilli ########################################### use strict; use warnings; use Getopt::Std; use Pod::Usage; use File::Find; use File::Basename; my @files = (); find(sub { if(-d and $_ eq "CVS") { $File::Find::prune = 1; return; } if(-d and /^blib$|^pm_to_blib$/) { $File::Find::prune = 1; return; } return if -d; return if /^\./; return if /^MANIFEST/; return if /^README/; return if /^Changes/; if(-f and $_ eq "Makefile") { return; } push @files, $File::Find::name; }, "."); @files = sort file_sort @files; system("vim", "-p", @files); ########################################### sub file_sort { ########################################### my %suffix_order = ( "pm" => 1, "t" => 2, "PL" => 3, "" => 4, ); my $suffix1 = ""; my $suffix2 = ""; if($a =~ /\.([^.\/]*)$/) { $suffix1 = $1; } if($b =~ /\.([^.\/]*)$/) { $suffix2 = $1; } my $suffix_score1 = ($suffix_order{$suffix1} || 0); my $suffix_score2 = ($suffix_order{$suffix2} || 0); #print "Comp $suffix1 <=> $suffix2: ", # $suffix_score2 <=> $suffix_score1, # "\n"; return ($suffix_score1 <=> $suffix_score2) || 0 ; } __END__ =head1 NAME vpm - Edit all files in a Perl module distro in vim =head1 DOWNLOAD _SRC_HERE_ =head1 SYNOPSIS vpm =head1 DESCRIPTION C searches all frequently edited files in a Perl module distribution and opens them in vim's tabbed windows: vim -p file1 file2 file3 ... =head1 LEGALESE Copyright 2007 by Mike Schilli, all rights reserved. This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =head1 AUTHOR 2007, Mike Schilli