转载http://www.oschina.net/code/snippet_222150_7901
#!/usr/bin/perl
#use Cwd;
sub ExecuteAll(){
local($dir) = @_;
opendir(DIR,"$dir"|| die "can't open $dir");
local @files =readdir(DIR);
closedir(DIR);
for $file (@files){
next if($file=~m/\.$/ || $file =~m/\.\.$/);
if ($file =~/\.(sh)$/i){
system "xterm -e bash \"$dir\/$file\"";
}
elsif($file =~/\.(bin|run|bundle)$/i){
system "xterm -e \"$dir\/$file\"";
}
elsif($file =~/\.(pl)$/i && $file != $0){
system "xterm -e perl \"$dir\/$file\"";
}
elsif($file =~/\.(class)$/i){
$file =~ s/(.*)\.(.*)/$1/;
system "xterm -e java \"$dir\/$file\"";
}
elsif($file =~/\.(rpm)$/i){
system "xterm -e rpm -ivh \"$dir\/$file\"";
}
elsif($file =~/\.(rb)$/i){
system "xterm -e ruby \"$dir\/$file\"";
}
elsif($file =~/\.(py)$/i){
system "xterm -e python \"$dir\/$file\"";
}
elsif($file =~/\.(jar)$/i){
system "xterm -e java -jar \"$dir\/$file\"";
}
elsif(-d "$dir/$file"){
ExecuteAll("$dir/$file" );
}
}
}
&ExecuteAll(getcwd);