while () { next unless my ($a, $p, $v) = m!id/[A-Z]/[A-Z]{2}/([A-Z]+) # id/X/XY/XYNAME .*/([^/]+) # /Module-Name -([\d.]*\d) \.[targz.]+$ # -N.M.O.tar.gz !x; $p =~ s/-/::/g; print "author=$a, package=$p, version=$v\n"; } __END__ MSERGEANT/Time-Piece-1.20.tar.gz http://backpan.perl.org/authors/id/A/AR/ARANDAL/Pod-Simple-3.07.tar.gz http://search.cpan.org/CPAN/authors/id/T/TE/TELS/math/Math-BigInt-1.89.tar.gz