Leser: 25
2012-10-22T17:10:26 GwenDragondie aktuelle 6.xx-Versionen von HTTP::Request und HTTP::Response haben das als Oberklasse.
2012-10-24T09:49:55 reneeExtUtils::Installed arbeitet - soweit ich weiß - mit den Dateien ".packlist". Die werden aber nicht bei jeder Installationsmethode auch geschrieben. Hast Du manche Module mit apt-get, yum oder so installiert? Dann existieren diese Dateien glaube ich nicht.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
#!/usr/bin/perl use strict; use warnings; use 5.008; use strict; use warnings; use HTTP::Message; use LWP::UserAgent; my $url = 'http://labs.gwendragon.de/'; my $ua = LWP::UserAgent->new; my $can_accept = HTTP::Message::decodable; my $response = $ua->get( $url, 'Accept-Encoding' => $can_accept, ); print $response->{_headers}->as_string; print "\nModultest: '"; eval 'use ExtUtils::Installed; $inst = ExtUtils::Installed->new(); @modules = $inst->modules(extra_libs=>\@{"cgi-bin/lib"}); /(HTTP::Message)/ && print "$1 found" for (@modules)'; print "'\n";
QuoteC:\Arbeit\temp>perl test.pl
Cache-Control: max-age=7200
Connection: close
Date: Wed, 24 Oct 2012 09:54:55 GMT
Accept-Ranges: bytes
ETag: "1c8a880-a09-4bbc1209bb440"
Server: Apache
Vary: Accept-Encoding,User-Agent
Content-Encoding: gzip
Content-Length: 1038
Content-Type: text/html
Expires: Wed, 24 Oct 2012 11:54:55 GMT
Last-Modified: Wed, 21 Mar 2012 13:54:17 GMT
Client-Date: Wed, 24 Oct 2012 09:54:42 GMT
Client-Peer: 213.133.110.246:80
Client-Response-Num: 1
X-Frame-Options: SAMEORIGIN
X-LoadTime: D=744
X-Powered-By: Perl
Modultest: ''
2012-10-24T10:04:36 GwenDragonSo ganz versteh ich nicht, warum bei dir nix gefunden wird.
2012-10-24T10:04:36 GwenDragonLaut msg #162739 ist das doch Perl 5.10.1 (32bit) auf Win 7.
Habe ich auch.
2012-10-24T10:10:27 GwenDragonIst bei dir in C:\strawberry\perl\site\lib\auto\HTTP\Message keine Datei .packlist?
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
#!perl use File::Find; sub scan { my @found; for my $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; push @found, $fn; } }, $dir ); } return @found; } print join "\n", scan(@INC);
2012-10-24T11:53:35 GwenDragonSchnellschuss:
2012-10-27T11:40:41 GwenDragonWozu ein Inventar?
Guest wer
Quoted:\>perl test.pl
main::read_dir_recursive() called too early to check prototype at test.pl line 163.
################################################################################
################################################################################
################################################################################
################################################################################
d:\>
1 2 3 4 5 6
no warnings; my $v= eval 'return '.$1; $v//=''; $version="$v"; $version+=0; last;
2012-10-28T15:33:19 topegAnsonsten gibt es Probleme mit den neueren Versionsobjekten.
2012-10-28T15:43:19 topegschreib was besseres. :-)
2012-10-28T18:56:02 reneeDu könntest den Ansatz von GwenDragon mit der Datei 02packages.details.txt.gz von CPAN verbinden. Dort steht drin, welches package zu welcher Distribution gehört.
2012-10-29T08:52:52 biancaJa, an so einen Abgleich mit einer zentralen Datenbank dachte ich auch schon. Dann würde ich diese zentrale Datei einfach nach Bedarf aktualisieren und die Fundergebnisse gegen diese abgleichen.
Allerdings finde ich die Datei nicht.
www.cpan.org/02packages.details.txt.gz funktioniert nicht. Und die CPAN Suche bringt mich auch nicht weiter.
Weiß jemand, unter welchem URL ich die Datei finde?
2012-10-29T08:52:52 biancaUnd wieso beginnt der Name mit 02? Gibt es auch 01, 03, 04 usw.? Welche Bedeutung haben die Ziffern?
1
2
3
~/.cpan/sources/authors/01mailrc.txt.gz
~/.cpan/sources/modules/02packages.details.txt.gz
~/.cpan/sources/modules/03modlist.data.gz
DateTime::TimeZone::America::Nome 1.51 D/DR/DROLSKY/DateTime-TimeZone-1.51.tar.gz
DigitalClock undef A/AW/AWIN/Qt-0.03.tar.gz
2012-10-26T16:40:28 biancaNatürlich lässt sich mein Modul-Suchprogramm so umcoden, dass es nur eine bestimmte Verzeichnistiefe scannt.(...) das liefert viel zu viel.
Da ist z.B. DateTime::TimeZone::Australia::Currie aufgelistet obwohl mir hier die Erwähnung von DateTime völlig ausreichen würde.
2012-10-29T10:26:47 GwenDragonWoran unterscheidet sich welche Module unwichtig sind?
2012-10-29T11:34:33 GwenDragonAch so, dir geht es nicht um installierte Module, sondern welche CPAN-Pakete installiert sind.
Sind zwei verschiedene Sachen und ich hab's eben anders verstanden.
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
#!/usr/bin/perl -w use strict; use warnings; use File::Find; sub scan { my %found; for my $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; $found{$fn} = ($fn =~ tr/://) / 2; } }, $dir ); } %found; } my %found = scan(@INC); # erstmal alle Unterverzeichnisse einlesen my @modules; foreach my $name (sort {$found{$a} <=> $found{$b}} keys %found) { if ($found{$name}) { # ab zweiter Hirarchie nicht mehr inventarisieren, z.B. nur Authen::SASL und nicht Authen::SASL::CRAM_MD5 my @temp = split /::/,$name; my $flag = 0; for (my $z = 0; $z < scalar @temp - 1; $z ++) { if (defined $found{join('::',@temp[0..$z])}) { # z.B. App::Packer::PAR hat nur die dritte Hirarchie $flag = 1; last; } } push @modules,$name if !$flag; } else { push @modules,$name; } } foreach (sort {lc $a cmp lc $b} @modules) { print "$_\n"; }