Leser: 26
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
#!usr/bin/perl use strict; use warnings; #config my $dirPath = '.'; my @searchStrings = qw( subName01 subName02 ); my $fileFilterPattern = '\.pl$'; #/config opendir(my $dirFH, $dirPath) or die $!; for my $fileName (readdir($dirFH)) { next if -d $fileName; next if $fileName !~ m/$fileFilterPattern/; print "$fileName:\n"; open(my $fileFH, "<", "$dirPath\\$fileName") or die $!; while (<$fileFH>) { chomp (my $row = $_); for my $string (@searchStrings) { if ($row =~ m/^[^#]*\b$string\b/) { print "\t$string (line $.: \"$row\")\n"; } } } close $fileFH or die $!; } closedir $dirFH or die $!;
2010-11-08T15:16:59 payxHallo Bianca,
ich würde ein Perl-Script schreiben, das über die /\.pl$/-Dateien im Projektverzeichnis loopt und darin nach /^[^#]*\b$string\b/ sucht, wobei $string der Name der gesuchten sub sei.
print "#";MEINE_SUB();
if (s#foo#bar#) { MEINE_SUB(); }
2010-11-09T09:03:41 Crianund dann schau auf den diff der beiden. Oder sind es so viele Aufrufe, dass das zu viel Arbeit machen würde?
2010-11-09T09:17:26 biancaWas genau ist mit diff gemeint?
2010-11-09T10:12:24 payxBei überschaubaren Treffermengen kann das mit bloßem Auge ausreichend gut analysiert analysiert werden, denke ich.
2010-11-09T10:12:24 payxBei überschaubaren Treffermengen kann das mit bloßem Auge ausreichend gut analysiert analysiert werden, denke ich.
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
#!/usr/bin/perl -w use strict; use warnings; my $suchwort = 'daten'; foreach my $code ( <<'heredoc' $a = 'b'; # Kommentar mit Suchwort daten heredoc , <<'heredoc' $a = 'daten'; heredoc , <<'heredoc' #$a = 'daten'; heredoc , <<'heredoc' #$a = 'daten'; heredoc , ) { my $quoted = quotemeta $suchwort; if ($code =~ m/^.*$quoted/) { print $code . "matcht und ist " . ($code =~ m/^[^#]*$quoted/ ? 'aktiv' : 'auskommentiert') . "\n\n"; } }
2010-12-20T10:15:21 biancaWie müsste der Regex lauten, damit nur der dritte und vierte Fall "auskommentiert" matcht und die anderen beiden auf "aktiv"?
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 use strict; use warnings; my $suchwort = 'daten'; foreach my $code ( <<'heredoc' $a = 'b'; # Kommentar mit Suchwort daten heredoc , <<'heredoc' $a = 'daten'; heredoc , <<'heredoc' #$a = 'daten'; heredoc , <<'heredoc' #$a = 'daten'; heredoc , <<'heredoc' print "#".datensub()."/n"; # Sonderfall, der muss nicht richtig matchen! heredoc , ) { my $quoted = quotemeta $suchwort; if ($code =~ m/$quoted/) { print $code . "matcht und ist " . ($code =~ m/^\s*\#/ ? 'auskommentiert' : 'aktiv') . "\n\n\n\n"; } }
2010-11-09T09:03:41 CrianNö. Siehe:Naja, das kann ja nur passieren, wenn du wirklich zwei Kommandos in eine Zeile quetschst.
print "#".meine_sub()."/n";