hi,
wie kann ich abhängigkeiten von perlscripte rusfinden ?
ich möchte die benötigten perlmodule auf ein minimum reduzieren .
gibt es sowas wie ldd auch für perlmodule ??????
gruß
vobie
perlmodule
- godsmacker
- Beiträge: 902
- Registriert: 16.03.2003 21:50:26
- Lizenz eigener Beiträge: Artistic Lizenz
- Wohnort: Chemnitz
-
Kontaktdaten:
Es gibt Module::ScanDeps (libmodule-scandeps-perl). Aber generell ist es unmoeglich immer alle Abhaengigkeiten einer Perl Applikation zu finden. Die zur Kompilierzeit geladenen sind noch relativ einfach, die zur Lautzeit geladenen Module hingegen lassen sich nur mittels bestimmter Heuristiken ermitteln, was mit einer bestimmten Fehlerquote verbunden ist.
Gruesse,
Florian
Gruesse,
Florian
Ich hatte mal ein Script geschrieben, das einen Ordner durchsucht aus allen gefundenen Perlscripten die Module auflistet. Ich habe es genutz um nach einer Installation zu wissen welche Module noch fehlten. Man sollte damit auch herausfinden können welche module nicht gebraucht werden.
Das script ist nicht lang:
finde_pm.pl
Es läuft aber recht lange wenn viele Unterverzeichnisse durchsucht werden müssen und und macht auch hin und wieder falsche Treffer.
Man ruft es so auf:
Das script ist nicht lang:
finde_pm.pl
Code: Alles auswählen
#!/usr/bin/perl
use strict;
my $find='find '.$ARGV[0].' -type f -exec perl -e \(\`file\ -b\ \"\$ARGV[0]\"\`=~/perl/\)\?exit\(0\):exit\(-1\) \{\} \; -print';
my @libs=();
warn "$0 Suche nach Perldateien\n";
my @files=`$find`;
warn "$0 Durchsuche gefundenen Dateien\n";
for my $file (@files)
{
chomp($file);
open(IN, '<', $file) or die "Konnte \"$file\" nicht öffnen ($!)\n";
while(my $line=<IN>)
{
if($line=~/^\s*(?:use[\s(]|require[\s(])(.+?)[()\s;]/s)
{
my $mod=$1;
push(@libs,$mod) unless(grep{ $mod eq $_}@libs);
}
}
close(IN);
}
@libs=sort{$a cmp $b}@libs;
warn "$0 gebe Modulliste aus:\n";
print join("\n",@libs)."\n";
exit();
Man ruft es so auf:
Code: Alles auswählen
perl finde_pm.pl /pfad/zum/verzeichnis
danke, nicht schlecht !ToPeG hat geschrieben:Ich hatte mal ein Script geschrieben, das einen Ordner durchsucht aus allen gefundenen Perlscripten die Module auflistet. Ich habe es genutz um nach einer Installation zu wissen welche Module noch fehlten. Man sollte damit auch herausfinden können welche module nicht gebraucht werden.
Das script ist nicht lang:
finde_pm.plEs läuft aber recht lange wenn viele Unterverzeichnisse durchsucht werden müssen und und macht auch hin und wieder falsche Treffer.Code: Alles auswählen
#!/usr/bin/perl use strict; my $find='find '.$ARGV[0].' -type f -exec perl -e \(\`file\ -b\ "\$ARGV[0]"\`=~/perl/\)\?exit\(0\):exit\(-1\) \{\} \; -print'; my @libs=(); warn "$0 Suche nach Perldateien\n"; my @files=`$find`; warn "$0 Durchsuche gefundenen Dateien\n"; for my $file (@files) { chomp($file); open(IN, '<', $file) or die "Konnte "$file" nicht öffnen ($!)\n"; while(my $line=<IN>) { if($line=~/^\s*(?:use[\s(]|require[\s(])(.+?)[()\s;]/s) { my $mod=$1; push(@libs,$mod) unless(grep{ $mod eq $_}@libs); } } close(IN); } @libs=sort{$a cmp $b}@libs; warn "$0 gebe Modulliste aus:\n"; print join("\n",@libs)."\n"; exit();
Man ruft es so auf:Code: Alles auswählen
perl finde_pm.pl /pfad/zum/verzeichnis
gruß
vobie