#!/usr/bin/perl # # $Abso: abso/divers/mat/ports/check.pl,v 1.3 2003/06/25 09:49:59 mat Exp $ # use strict; use Data::Dumper; use LWP::UserAgent; my $ua = new LWP::UserAgent; sub getlast ($) { my $mod = shift; my $r = $ua->get("http://search.cpan.org/dist/$mod/"); if ( $r->is_success ) { my @a = map { chomp; $_ } split ( /^/m, $r->content ); my $i; for ( $i = 0 ; $i < $#a ; $i++ ) { last if $a[$i] =~ /Latest Release/; } $i++; if ( $a[$i] =~ />([^<]+)get("http://search.cpan.org/dist/$mod/"); if ( $r->is_success ) { @a = map { chomp; $_ } split ( /^/m, $r->content ); my $i; for ( $i = 0 ; $i < $#a ; $i++ ) { last if $a[$i] =~ /This Release/; } $i++; if ( $a[$i] =~ />([^<]+)error_as_HTML ); } } } else { return ( 2, $r->error_as_HTML ); } } my $base = shift; opendir P, $base; for my $i ( sort grep { -d "$base/$_" && !/^\.\.?/o } readdir P ) { opendir Q, "$base/$i"; for my $j ( sort grep { -d "$base/$i/$_" && /^p5-/o } readdir Q ) { chdir "$base/$i/$j"; my $portver = `make -V DISTNAME`; chomp($portver); my ( $ok, $res ) = getlast($portver); if ( $ok == 1 && $res ne $portver ) { print "$i/$j : $portver -> $res\n"; } elsif ( $ok == 2 ) { print "$i/$j : $res\n"; } } closedir Q; } closedir P;