Thread Parameterübergabe in Subroutine (12 answers)
Opened by roli at 2005-03-06 20:30

ptk
 2005-03-09 12:28
#52388 #52388
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Ich habe pdgrep etwas erweitert. Neue Optionen:
-i fuer case insensitive search
-p damit wird less gestartet, mit :n und :p kann man zwischen den Ergebnisseiten blättern.
Die Suchverzeichnisse sind jetzt nicht mehr hart kodiert.
Code: (dl )
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
#!/usr/bin/perl -w
# pdgrep

use strict;
use Getopt::Long;

my %opt;
GetOptions(\%opt, "i!", "p!") or die "usage!";

my @inc = sort { length $a <=> length $b } grep { $_ ne "." } @INC;
for(my $i=$#inc; $i>=0; $i--) {
   for(my $j=0; $j<$i; $j++) {
   if (index($inc[$i], "$inc[$j]/") == 0) {
       splice @inc, $i, 1;
       last;
   }
   }
}

my @find_cmd = ("find", @inc, "-name", "*.pod", "-exec",
       "grep", ($opt{i} ? "-i" : ()));
if ($opt{p}) {
   push @find_cmd, "-l";
} else {
   push @find_cmd, "-A3", "-B3", "-H";
}
push @find_cmd, $ARGV[0], "{}", ";";

if ($opt{p}) {
   open(my $FIND, "-|", @find_cmd);
   local $/ = undef;
   my $pods = <$FIND>;
   close $FIND;
   exec("less", "-p*$ARGV[0]", split(/\n/, $pods));
} else {
   exec(@find_cmd);
}
\n\n

<!--EDIT|renee|1110364540-->

View full thread Parameterübergabe in Subroutine