Thread Umstieg auf Strawberry-Perl
(37 answers)
Opened by jan99 at 2014-05-10 09:53
Klar. Je nachdem oben noch die Shebang Zeile ergänzen (falls Reg Key nicht gesetzt). Und wenn du das ganze in eine Textdatei ausgeben lässt kann man darin wunderbar suchen.
Code (perl): (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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 use strict; use warnings; use File::Find; use ExtUtils::MM_Unix; use version; my $regex = qr{[^A-Za-z0-9:_\-\.]}; my $finde_ungueltiges_zeichen = sub { my ($string) = @_; my $ret = ''; for (my $z = 0; $z < length($string); $z ++) { if (substr($string,$z,1) =~ $regex) { $ret = 'ord('.ord(substr($string,$z,1)).') an Pos. '.$z; last; } } $ret; }; # Dateien aufnehmen my $scan = sub { my %found; for my $dir (@_) { if (-d $dir) { my $topdir = $dir; find( sub { if (-f $File::Find::name && $File::Find::name =~ /\.pm$/ ) { my $fn = $File::Find::name; $fn =~ s/\Q$topdir//g; $fn =~ s/\//::/g; $fn =~ s/^:://g; $fn =~ s/\.pm//g; if ($fn =~ $regex) { print "Der Modulname '$fn' enthält ungültige(s) Zeichen ".$finde_ungueltiges_zeichen->($fn); } else { $found{$fn} = $File::Find::name; } } }, $dir ); } } %found; }; my %found = $scan->(@INC); # erstmal alle Unterverzeichniss einlesen # Versionen if (keys %found) { my $zeile = 0; foreach my $modul (sort {lc $a cmp lc $b} keys %found) { my $version = MM->parse_version($found{$modul}); if (defined $version && $version ne 'undef') { $version =~ s/ //g; if ($version =~ $regex) { # probiere vorher noch eine andere Alternative https://www.perl-community.de/bat/poard/thread/18292/167420 $version = version->parse($version); } if ($version =~ $regex) { print "Für Modul '$modul' '$found{$modul}' enthält der Versionsstring '$version' ungültige Zeichen\n"; } else { print "Gefunden: '$modul' Version '$version'\n"; } } } } Editiert von bianca: use version; ergänzt Last edited: 2014-05-13 17:18:17 +0200 (CEST) 10 print "Hallo"
20 goto 10 |