From http://dev.catalystframework.org/svnweb/bast/revision?rev=8823

use Test::Deep qw(eq_deeply);
...
return eq_deeply($bind_ref1, $bind_ref2);

vs

use Data::Dumper;
...
local $Data::Dumper::Useqq = 1;
local $Data::Dumper::Sortkeys = 1;
return Dumper($bind_ref1) eq Dumper($bind_ref2);

# print out all dependencies of an unpacked distribution that are packaged for Debian
perl -MDebian::Apt::PM -MModule::Depends -le \
   '$apm=Debian::Apt::PM->new();$md=Module::Depends->new->dist_dir(".")->find_modules; %r=(%{$md->requires},%{$md->build_requires}); while (($m, $v) = each %r) { $f=$apm->find($m, $v); print $f->{"min"}->{"package"} if $f->{"min"} }' \
   | sort \
   | uniq \
   | xargs echo apt-get install

# print out all dependencies of an unpacked distribution that are not packaged for Debian
perl -MDebian::Apt::PM -MModule::Depends -le \
   '$apm=Debian::Apt::PM->new();$md=Module::Depends->new->dist_dir(".")->find_modules; %r=(%{$md->requires},%{$md->build_requires}); while (($m, $v) = each %r) { $f=$apm->find($m, $v); print $m, " ", $v if not $f->{"min"} }'

Module::Name->method

| No Comments | No TrackBacks
package Module::Name;

use Moose;
use Scalar::Util 'blessed';

has 'verbose' => ( is => 'rw', isa => 'Int', default => 1 );

sub method {
    my $self = shift;
    $self = $self->new()
        if not blessed $self;

    print "hell world\n"
        if $self->verbose;

    return;
}

1;

This allows "method" to be called in two ways:

Module::Name->method;
Module::Name->new(verbose => 0)->method;
@@ -1,25 +1,25 @@
-diff -Naur a/DhMakePerl.pm b/DhMakePerl.pm
---- a/DhMakePerl.pm	2010-02-15 17:28:42.000000000 +0100
-+++ b/DhMakePerl.pm	2010-02-15 17:17:55.000000000 +0100
+diff -Naur DhMakePerl.orig/DhMakePerl.pm DhMakePerl/DhMakePerl.pm
+--- DhMakePerl.orig/DhMakePerl.pm	2010-02-19 13:36:58.000000000 +0100
++++ DhMakePerl/DhMakePerl.pm	2010-02-22 18:40:12.000000000 +0100
 @@ -65,6 +65,8 @@
  use WWW::Mechanize ();
  use YAML           ();
  use version qw( qv );
 +use Debian::Apt::PM;
 +our $aptpm = Debian::Apt::PM->new();
  
  # TODO:
  # * get more info from the package (maybe using CPAN methods)
-@@ -1132,8 +1134,12 @@
+@@ -1131,9 +1133,11 @@
+             $dep = Debian::Dependency->new( 'perl',
                  $self->nice_perl_ver( $dep_hash->{$module} ) );
          }
-         elsif ($apt_contents) {
+-        elsif ($apt_contents) {
 -            $dep = $apt_contents->find_perl_module_package( $module,
 -                $dep_hash->{$module} );
-+            #$dep = $apt_contents->find_perl_module_package( $module,
-+            #    $dep_hash->{$module} );
++        else {
 +            my $info = $aptpm->find($module, $dep_hash->{$module});
 +            if ($info and $info->{'min'}) {
 +                $dep = Debian::Dependency->new( $info->{'min'}->{'package'}, $info->{'min'}->{'version'} );
 +            }
          }

This is really hard to read and understand...

libaaaa-crypt-dh-perl_0.02-1_all.deb
libaccessors-perl_1.01-1_all.deb
libacme-6502-perl_0.75-1_all.deb
libacme-badexample-perl_1.00-1_all.deb
libacme-buffy-perl_1.5-1_all.deb
libacme-colour-perl_1.06-1_all.deb
libacme-comment-perl_1.04-1_all.deb
libacme-daily-fail-perl_1.02-1_all.deb
libacme-datetime-duration-numeric-perl_0.03-1_all.deb
libacme-everything-perl_1.01-1_all.deb
libacme-greek-perl_1.0-1_all.deb
libacme-lolcat-perl_0.0.5-1_all.deb
libacme-mirrortracer-perl_2009.052920495001-1_all.deb
libacme-perlml-perl_1.00-1_all.deb
libacme-poe-acronym-generator-perl_1.18-1_all.deb
libacme-read-like-a-monger-perl_0.01-1_all.deb
libacme-sneeze-jp-perl_0.01-1_all.deb
libacme-sneeze-perl_0.02-1_all.deb
libacme-study-perl-perl_0.0.2-1_all.deb
libacme-supercollider-programming-perl_0.02-1_all.deb
libacme-syspath-perl_0.05-1_all.deb
libacme-terror-au-perl_0.01-1_all.deb
libai-cbr-perl_0.02-1_all.deb
libai-megahal-perl_0.07-1_i386.deb
libalgorithm-dependency-mapreduce-perl_0.03-1_all.deb
libalgorithm-dependency-perl_1.110-1_all.deb
libalgorithm-dependency-source-dbi-perl_1.06-1_all.deb
libalgorithm-fec-perl_1.0-1_i386.deb
libalgorithm-includeexclude-perl_0.01-1_all.deb
libalgorithm-numerical-shuffle-perl_2009110301-1_all.deb
libalgorithm-tokenbucket-perl_0.32-1_all.deb
libalien-win32-lzma-perl_4.66-1_all.deb
libanyevent-dbi-abstract-perl_0.01-1_all.deb
libanyevent-dbi-perl_2.0-1_all.deb
libanyevent-friendfeed-realtime-perl_0.04-1_all.deb
libanyevent-http-perl_1.44-1_all.deb
libanyevent-mdns-perl_0.05-1_all.deb
libanyevent-redis-perl_0.06-1_all.deb
libanyevent-twitter-stream-perl_0.10-1_all.deb
libapache2-ppi-html-perl_0.02-1_all.deb
libapache-heavycgi-perl_0.013302-1_all.deb
libapache-javascript-documentwrite-perl_0.02-1_all.deb
libapache-profiler-perl_0.10-1_all.deb
libapache-session-cacheany-perl_0.03-1_all.deb
libapache-session-php-perl_0.05-1_all.deb
libapp-cpan-fresh-perl_0.07-1_all.deb
libapp-cpanminus-perl_0.06-1_all.deb
libapp-cpan-perl_1.57-1_all.deb
libapp-module-lister-perl_0.13-1_all.deb
libapp-smokebox-mini-plugin-irc-perl_0.04-1_all.deb
libapp-stash-perl_0.01-1_all.deb
libapr-http-headers-compat-perl_0.02-1_all.deb
libarchive-builder-perl_1.14-1_all.deb
libarchive-peek-perl_0.34-1_all.deb
libarray-window-perl_1.02-1_all.deb
libaspect-library-nytprof-perl_0.01-1_all.deb
libaspect-library-testclass-perl_0.36-1_all.deb
libauthen-typekey-perl_0.05-1_all.deb
libautobox-datetime-duration-perl_0.02-1_all.deb
libbisect-perl-usinggit-perl_0.33-1_all.deb
libbuild-daily-perl_0.01-1_all.deb
libbusiness-au-abn-perl_1.08-1_all.deb
libbusiness-au-data-anzic-perl_0.01-1_all.deb
libbusiness-ismn-perl_1.11-1_all.deb
libbusiness-issn-perl_0.91-1_all.deb
libcapitalization-perl_0.03-1_all.deb
libcaptcha-recaptcha-mailhide-perl_0.93-1_all.deb
libcarp-clan-perl_6.04-1_all.deb
libcatalyst-engine-psgi-perl_0.07-1_all.deb
libcatalyst-plugin-cookiedsession-perl_0.35-1_all.deb
libcatalyst-plugin-customerrormessage-perl_0.04-1_all.deb
libcatalyst-plugin-simpleauth-perl_0.33-1_all.deb
libcdb-file-perl_0.96-1_i386.deb
libcgi-capture-perl_1.14-1_all.deb
libcgi-compile-perl_0.08-1_all.deb
libcgi-psgi-perl_0.09-1_all.deb
libcgi-uri2param-perl_1.01-1_all.deb
libchamplain-perl_0.11-1_i386.deb
libclass-dbi-view-perl_0.07-1_all.deb
libclass-handle-perl_1.07-1_all.deb
libclass-std-slots-perl_0.31-1_all.deb
libclosure-loop-perl_0v0.0.3-1_all.deb
libcompress-lzf-pp-perl_0.33-1_all.deb
libcompress-lzma-external-perl_0.36-1_all.deb
libcompress-lzw-perl_0.01-1_all.deb
libcpan-cache-perl_0.02-1_all.deb
libcpan-indexer-mirror-perl_0.05-1_all.deb
libcpan-mini-devel-perl_0.03-1_all.deb
libcpan-mini-extract-perl_1.20-1_all.deb
libcpan-mini-fromlist-perl_0.02-1_all.deb
libcpan-mini-live-perl_0.33-1_all.deb
libcpan-mini-visit-perl_0.11-1_all.deb
libcpan-mini-webserver-perl_0.45-1_all.deb
libcpanplus-config-baseenv-perl_0.04-1_all.deb
libcpanplus-dist-build-perl_0.46-1_all.deb
libcpan-site-perl_1.04-1_all.deb
libcpan-sqlite-perl_0.199-1_all.deb
libcpan-test-dummy-perl5-buildormake-perl_1.02-1_all.deb
libcpan-test-dummy-perl5-make-perl_1.05-1_all.deb
libcpan-unpack-perl_0.23-1_all.deb
libcpan-visitor-perl_0.001-1_all.deb
libcpan-www-testers-generator-perl_0.30-1_all.deb
libcrypt-perfectpaperpasswords-perl_0.06-1_all.deb
libcrypt-skip32-xs-perl_0.06-1_i386.deb
libdackup-perl_0.44-1_all.deb
libdata-asxml-perl_0.05-1_all.deb
libdata-constraint-perl_1.16-1_all.deb
libdata-digest-perl_1.04-1_all.deb
libdata-find-perl_0.03-1_all.deb
libdata-object-autowrap-perl_0.02-1_all.deb
libdata-package-csv-perl_1.01-1_all.deb
libdata-package-perl_1.05-1_all.deb
libdata-package-sqlite-perl_1.01-1_all.deb
libdata-swap-perl_0.07-1_i386.deb
libdata-uuid-base64urlsafe-perl_0.34-1_all.deb
libdata-yaml-perl_0.0.6-1_all.deb
libdatetime-stringify-perl_4.11-1_all.deb
libdatetime-tiny-perl_1.04-1_all.deb
libdate-tiny-perl_1.04-1_all.deb
libdbix-export-perl_0.01-1_all.deb
libdbix-mysqlsequence-perl_1.04-1_all.deb
libdebian-apt-pm-perl_0.02-1_all.deb
libdevel-checklib-perl_0.6-1_all.deb
libdevel-checkos-perl_1.61-1_all.deb
libdevel-ditto-perl_0.06-1_all.deb
libdevel-dtrace-perl_0.11-1_i386.deb
libdevel-eval-perl_1.01-1_all.deb
libdevel-leakguard-object-perl_0.06-1_all.deb
libdevel-leak-object-perl_1.00-1_all.deb
libdevel-leaktrace-fast-perl_0.11-1_i386.deb
libdevel-profit-perl_0.34-1_i386.deb
libdevel-stacktrace-ashtml-perl_0.05-1_all.deb
libdevel-traceload-perl_1.04-1_all.deb
libdevel-tracevars-perl_0.01-1_all.deb
libdevel-unplug-perl_0.03-1_all.deb
libdigest-hmac-md6-perl_0.01-1_all.deb
libdigest-md5-m4p-perl_0.01-1_i386.deb
libdigest-md6-perl_0.10-1_i386.deb
libdigest-sha256-perl_0.01-1_i386.deb
libdigest-transformpath-perl_1.00-1_all.deb
libdistribution-cooker-perl_0.11-1_all.deb
libdistribution-guess-buildsystem-perl_0.11-1_all.deb
libemail-send-gandi-perl_0.34-1_all.deb
libemail-send-gmail-perl_0.33-1_all.deb
libemail-stuff-perl_2.102-1_all.deb
libencode-base32-crockford-perl_1.2-1_all.deb
libencode-base58-perl_0.01-1_all.deb
libencode-doubleencodedutf8-perl_0.04-1_all.deb
libencode-first-perl_0.01-1_all.deb
libencode-javascript-ucs-perl_0.01-1_all.deb
libencode-jp-mobile-perl_0.26-1_all.deb
libenv-sanctify-moosified-perl_1.04-1_all.deb
libenv-sanctify-perl_1.04-1_all.deb
libev-perl_3.9-1_i386.deb
libfile-blob-perl_1.06-1_all.deb
libfile-copy-reliable-perl_0.32-1_all.deb
libfile-find-closures-perl_1.09-1_all.deb
libfile-find-parallel-perl_0.51-1_all.deb
libfile-find-rule-filesys-virtual-perl_1.22-1_all.deb
libfile-find-rule-ppi-perl_0.05-1_all.deb
libfile-ignorereadonly-perl_0.01-1_all.deb
libfile-is-perl_0.01-1_all.deb
libfile-monitor-perl_0.10-1_all.deb
libfile-pathlist-perl_1.04-1_all.deb
libfilesys-diskusage-perl_0.04-1_all.deb
libfilesys-notify-simple-perl_0.05-1_all.deb
libfilesys-virtual-perl_0.06-1_all.deb
libfilesys-virtual-plain-perl_0.10-1_all.deb
libfile-tasks-perl_0.07-1_all.deb
libfile-tempdir-perl_0.02-1_all.deb
libfir-perl_0.33-1_all.deb
libgame-pexeso-perl_0.01-1_all.deb
libgames-guessword-perl_0.16-1_all.deb
libgeo-coder-google-perl_0.06-1_all.deb
libgeo-coordinates-itm-perl_0.02-1_all.deb
libgeo-gpx-perl_0.26-1_all.deb
libgeo-hash-perl_0.02-1_all.deb
libgeo-lookup-bytime-perl_0.10-1_all.deb
libgit-github-creator-perl_0.17-1_all.deb
libgit-pureperl-perl_0.46-1_all.deb
libgps-babel-perl_0.11-1_all.deb
libgraph-xgmml-perl_0.01-1_all.deb
libhash-case-perl_1.01-1_all.deb
libhash-multivalue-perl_0.08-1_all.deb
libhtml-declare-perl_2.4-1_all.deb
libhtml-email-obfuscate-perl_1.00-1_all.deb
libhtml-fraction-perl_0.40-1_all.deb
libhtml-frommail-perl_0.11-1_all.deb
libhtml-location-perl_1.03-1_all.deb
libhtml-resolvelink-perl_0.05-1_all.deb
libhtml-spry-dataset-perl_0.01-1_all.deb
libhtml-summary-perl_0.017-1_all.deb
libhtml-trackerlink-perl_1.03-1_all.deb
libhtml-treebuilder-libxml-perl_0.11-1_all.deb
libhtml-widget-constraint-complexpassword-perl_0.01-1_all.deb
libhttp-client-parallel-perl_0.02-1_all.deb
libhttp-cookies-icab-perl_1.120-1_all.deb
libhttp-cookies-mozilla-perl_2.02-1_all.deb
libhttp-cookies-omniweb-perl_1.12-1_all.deb
libhttp-dav-browse-perl_0.03-1_all.deb
libhttp-lite-perl_2.2-1_all.deb
libhttp-parser-xs-perl_0.05-1_i386.deb
libhttp-proxy-greasemonkey-perl_0.05-1_all.deb
libhttp-proxypac-perl_0.01-1_all.deb
libhttp-server-multiplex-perl_0.11-1_all.deb
libhttp-server-simple-authen-perl_0.04-1_all.deb
libhttp-server-simple-bonjour-perl_0.02-1_all.deb
libhttp-server-simple-kwiki-perl_0.29-1_all.deb
libhttp-server-simple-perl_0.42-1_all.deb
libhttp-server-simple-psgi-perl_0.14-1_all.deb
libhttp-simplelinkchecker-perl_1.15-1_all.deb
libimage-delivery-perl_0.14-1_all.deb
libimage-imlib2-thumbnail-perl_0.40-1_all.deb
libimage-imlib2-thumbnail-s3-perl_0.31-1_all.deb
libimage-worldmap-perl_0.15-1_all.deb
libio-any-perl_0.04-1_all.deb
libio-captureoutput-perl_1.1102-1_all.deb
libio-interactive-perl_0.0.6-1_all.deb
libio-mark-perl_0v0.0.1-1_all.deb
libio-null-perl_1.01-1_all.deb
libio-perl_1.25-1_i386.deb
libjava-jvm-classfile-perl_0.20-1_all.deb
libjemplate-perl_0.23-1_all.deb
libjson-util-perl_0.03-1_all.deb
libjson-xs-versiononeandtwo-perl_0.31-1_all.deb
libkasago-perl_0.29-1_all.deb
libkwiki-footnote-perl_0.01-1_all.deb
libkwiki-opensearch-service-perl_0.02-1_all.deb
libkwiki-typekey-perl_0.08-1_all.deb
libkwiki-username-perl_0.14-1_all.deb
libkwiki-userpreferences-perl_0.13-1_all.deb
liblatest-perl_0.03-1_all.deb
liblike-perl_0.02-1_all.deb
liblingua-abbreviate-hierarchy-perl_0.04-1_all.deb
liblingua-ja-hepburn-passport-perl_0.02-1_all.deb
liblist-conditional-perl_0.01-1_all.deb
liblist-flatten-perl_0.01-1_all.deb
liblog-dispatch-config-perl_1.03-1_all.deb
liblog-report-perl_0.26-1_all.deb
liblwp-conncache-maxkeepaliverequests-perl_0.32-1_all.deb
libmac-errors-perl_1.14-1_all.deb
libmac-macbinary-perl_0.06-1_all.deb
libmac-path-util-perl_0.26-1_all.deb
libmail-address-mobilejp-perl_0.09-1_all.deb
libmail-box-parser-c-perl_3.006-1_i386.deb
libmath-polygon-perl_1.01-1_all.deb
libmath-xor-perl_0.02-1_i386.deb
libmealmaster-perl_0.28-1_all.deb
libminismokebox-perl_0.22-1_all.deb
libmodule-build-syspath-perl_0.13-1_all.deb
libmodule-extract-namespaces-perl_0.14-1_all.deb
libmodule-extract-version-perl_0.13-1_all.deb
libmodule-install-assertos-perl_0.10-1_all.deb
libmodule-install-autolicense-perl_0.02-1_all.deb
libmodule-install-automatedtester-perl_0.02-1_all.deb
libmodule-install-checklib-perl_0.04-1_all.deb
libmodule-installedversion-perl_0.05-1_all.deb
libmodule-install-githubmeta-perl_0.10-1_all.deb
libmodule-install-noautomatedtesting-perl_0.06-1_all.deb
libmodule-install-readmefrompod-perl_0.06-1_all.deb
libmodule-install-repository-perl_0.06-1_all.deb
libmodule-list-perl_0.002-1_all.deb
libmodule-list-pluggable-perl_0.08-1_all.deb
libmodule-release-git-perl_0.14-1_all.deb
libmodule-release-perl_2.05-1_all.deb
libnet-amazon-awis-perl_0.36-1_all.deb
libnet-amazon-s3-client-gpg-perl_0.33-1_all.deb
libnet-amazon-simplequeue-perl_0.30-1_all.deb
libnet-cassandra-perl_0.35-1_all.deb
libnet-cidr-set-perl_0.11-1_all.deb
libnet-dav-server-perl_1.29-1_all.deb
libnet-fleetdb-perl_0.33-1_all.deb
libnet-ftp-robust-perl_0.08-1_all.deb
libnet-ftpssl-perl_0.14-1_all.deb
libnet-ftpssl-robust-perl_0.04-1_all.deb
libnet-ftp-throttle-perl_0.32-1_all.deb
libnet-lastfm-perl_0.34-1_all.deb
libnet-mosso-cloudfiles-perl_0.43-1_all.deb
libnet-mythtv-perl_0.33-1_all.deb
libnet-mythweb-perl_0.33-1_all.deb
libnet-openssh-perl_0.45-1_all.deb
libnet-radius-perl_2.103-1_all.deb
libnetscape-bookmarks-perl_1.95-1_all.deb
libnet-server-coro-perl_0.8-1_all.deb
libnet-server-ss-prefork-perl_0.04-1_all.deb
libnet-tacacsplus-perl_1.08-1_all.deb
libnet-vnc-perl_0.37-1_all.deb
libnet-yahoomessenger-perl_0.17-1_all.deb
libnumber-datarate-perl_0.31-1_all.deb
libobject-iterate-perl_1.12-1_all.deb
libobject-tiny-perl_1.06-1_all.deb
liboodoc-template-perl_0.14-1_all.deb
libordb-cpanmeta-generator-perl_0.10-1_all.deb
libordb-cpantesters-perl_0.09-1_all.deb
libordb-cpants-perl_0.04-1_all.deb
libordb-cpanuploads-perl_0.04-1_all.deb
libpalm-magellan-navcompanion-perl_0.53-1_all.deb
libparallel-iterator-perl_1.00-1_all.deb
libparallel-subfork-perl_0.10-1_all.deb
libparse-backpan-packages-perl_0.36-1_all.deb
libparse-cpan-authors-perl_2.27-1_all.deb
libparse-cpan-mirroredby-perl_0.02-1_all.deb
libparse-cpan-ratings-perl_0.33-1_all.deb
libparse-cpan-whois-perl_0.02-1_all.deb
libparse-csv-perl_1.00-1_all.deb
libparse-deb-control-perl_0.03-1_all.deb
libparse-iaslog-perl_1.10-1_all.deb
libparse-irc-perl_1.16-1_all.deb
libpath-class-uri-perl_0.04-1_all.deb
libperl-perl_5.010001-1_i386.deb
libperl-sax-perl_0.08-1_all.deb
libphp-session-perl_0.27-1_all.deb
libplack-middleware-debug-perl_0.07-1_all.deb
libplack-middleware-file-sass-perl_0.01-1_all.deb
libplack-perl_0.9031-1_all.deb
libplack-request-perl_0.09-1_all.deb
libplack-server-anyevent-perl_0.03-1_all.deb
libpod-indesign-taggedtext-perl_0.11-1_all.deb
libpod-indesign-taggedtext-tpr-perl_0.10-1_all.deb
libpod-perldoc-totoc-perl_1.09-1_all.deb
libpod-pseudopod-perl_0.15-1_all.deb
libpod-wordml-perl_0.13-1_all.deb
libpoe-component-ai-megahal-perl_1.18-1_all.deb
libpoe-component-captcha-recaptcha-perl_0.02-1_all.deb
libpoe-component-client-airtunes-perl_0.01-1_all.deb
libpoe-component-client-dnsbl-perl_1.02-1_all.deb
libpoe-component-client-dns-recursive-perl_1.00-1_all.deb
libpoe-component-client-ftp-perl_0.22-1_all.deb
libpoe-component-client-lingr-perl_0.04-1_all.deb
libpoe-component-client-nntp-perl_2.14-1_all.deb
libpoe-component-client-nrpe-perl_0.16-1_all.deb
libpoe-component-client-nsca-perl_0.16-1_all.deb
libpoe-component-client-ntp-perl_0.02-1_all.deb
libpoe-component-client-radius-perl_1.02-1_all.deb
libpoe-component-client-smtp-perl_0.22-1_all.deb
libpoe-component-client-socks-perl_1.00-1_all.deb
libpoe-component-client-whois-perl_1.28-1_all.deb
libpoe-component-cpan-reporter-perl_0.06-1_all.deb
libpoe-component-cpan-yacsmoke-perl_1.36-1_all.deb
libpoe-component-dhcp-monitor-perl_1.02-1_all.deb
libpoe-component-irc-plugin-corelist-perl_1.00-1_all.deb
libpoe-component-irc-plugin-poe-knee-perl_1.08-1_all.deb
libpoe-component-irc-plugin-querydnsbl-perl_1.00-1_all.deb
libpoe-component-irc-plugin-querydns-perl_1.00-1_all.deb
libpoe-component-irc-plugin-role-perl_0.06-1_all.deb
libpoe-component-irc-plugin-rss-headlines-perl_1.08-1_all.deb
libpoe-component-irc-plugin-uri-find-perl_1.08-1_all.deb
libpoe-component-irc-service-perl_0.996-1_all.deb
libpoe-component-proxy-socks-perl_1.02-1_all.deb
libpoe-component-rssaggregator-perl_1.11-1_all.deb
libpoe-component-server-chargen-perl_1.14-1_all.deb
libpoe-component-server-daytime-perl_1.14-1_all.deb
libpoe-component-server-discard-perl_1.14-1_all.deb
libpoe-component-server-dns-perl_0.20-1_all.deb
libpoe-component-server-echo-perl_1.64-1_all.deb
libpoe-component-server-ident-perl_1.16-1_all.deb
libpoe-component-server-inet-perl_0.04-1_all.deb
libpoe-component-server-irc-perl_1.40-1_all.deb
libpoe-component-server-nntp-perl_1.04-1_all.deb
libpoe-component-server-nrpe-perl_0.16-1_all.deb
libpoe-component-server-nsca-perl_0.08-1_all.deb
libpoe-component-server-pop3-perl_0.08-1_all.deb
libpoe-component-server-qotd-perl_1.14-1_all.deb
libpoe-component-server-radius-perl_1.02-1_all.deb
libpoe-component-server-simplesmtp-perl_1.44-1_all.deb
libpoe-component-server-syslog-perl_1.18-1_all.deb
libpoe-component-server-time-perl_1.14-1_all.deb
libpoe-component-smokebox-dists-perl_1.00-1_all.deb
libpoe-component-smokebox-perl_0.34-1_all.deb
libpoe-component-smokebox-recent-perl_1.16-1_all.deb
libpoe-component-smokebox-uploads-cpan-mini-perl_1.00-1_all.deb
libpoe-component-smokebox-uploads-nntp-perl_1.00-1_all.deb
libpoe-component-smokebox-uploads-rss-perl_1.00-1_all.deb
libpoe-component-wakeonlan-perl_1.02-1_all.deb
libpoe-component-www-shorten-perl_1.18-1_all.deb
libpoe-filter-bzip2-perl_1.58-1_all.deb
libpoe-filter-csv-perl_1.16-1_all.deb
libpoe-filter-csv-xs-perl_1.16-1_all.deb
libpoe-filter-finger-perl_0.08-1_all.deb
libpoe-filter-iaslog-perl_1.08-1_all.deb
libpoe-filter-kennyspeak-perl_1.00-1_all.deb
libpoe-filter-lolcat-perl_1.10-1_all.deb
libpoe-filter-lzw-perl_1.72-1_all.deb
libpoe-filter-parsewords-perl_1.06-1_all.deb
libpoe-filter-transparent-smtp-perl_0.2-1_all.deb
libpoe-filter-zlib-perl_2.02-1_all.deb
libpolyglot-perl_0.14-1_all.deb
libppi-app-ppi-version-bdfoy-perl_0.12-1_all.deb
libppi-powertoys-perl_0.14-1_all.deb
libppix-indexoffsets-perl_0.32-1_all.deb
libppix-linetosub-perl_0.33-1_all.deb
libprocess-perl_0.27-1_all.deb
libproc-wait3-perl_0.03-1_i386.deb
libpsgi-perl_1.03-1_all.deb
libre-engine-oniguruma-perl_0.04-1_i386.deb
librun-env-perl_0.03-1_all.deb
libscalar-util-numeric-perl_0.02-1_i386.deb
libsearch-contextgraph-perl_0.15-1_i386.deb
libsearch-queryparser-perl_0.94-1_all.deb
libserver-starter-perl_0.06-1_all.deb
libset-crossproduct-perl_1.93-1_all.deb
libset-intspan-fast-perl_1.15-1_all.deb
libset-intspan-fast-xs-perl_0.05-1_i386.deb
libsna-network-perl_0.04-1_all.deb
libsort-rank-perl_0v0.0.2-1_all.deb
libstorable-perl_2.21-1_i386.deb
libstring-camelcase-perl_0.02-1_all.deb
libstring-perl-warnings-perl_1.02-1_all.deb
libstring-smart-perl_0.4-1_all.deb
libsub-become-perl_0.01-1_all.deb
libsys-path-perl_0.10-1_all.deb
libtap-convert-tet-perl_0.2.1-1_all.deb
libtap-filter-perl_0.04-1_all.deb
libtap-formatter-html-perl_0.08-1_all.deb
libtask-plack-perl_0.17-1_all.deb
libtatsumaki-perl_0.1008-1_all.deb
libtemplate-plugin-comma-perl_0.04-1_all.deb
libtemplate-plugin-shuffle-perl_0.02-1_all.deb
libterm-progressbar-quiet-perl_0.31-1_all.deb
libterm-progressbar-simple-perl_0.03-1_all.deb
libtest-data-perl_1.22-1_all.deb
libtest-env-perl_1.08-1_all.deb
libtest-httpstatus-perl_1.08-1_all.deb
libtest-install-metarequires-perl_0.03-1_all.deb
libtest-isbn-perl_2.01-1_all.deb
libtest-more-diagnostic-perl_0.2-1_all.deb
libtest-more-strict-perl_0.02-1_all.deb
libtest-reporter-perl_1.54-1_all.deb
libtest-server-perl_0.06-1_all.deb
libtest-steering-perl_0.02-1_all.deb
libtest-uri-perl_1.08-1_all.deb
libtest-utf8-perl_0.02-1_all.deb
libtest-www-mechanize-psgi-perl_0.35-1_all.deb
libtest-xml-perl_0.08-1_all.deb
libtext-csv-track-perl_0.7-1_all.deb
libtext-ecsv-perl_0.01-1_all.deb
libtext-emoticon-msn-perl_0.04-1_all.deb
libtext-emoticon-perl_0.04-1_all.deb
libtext-emoticon-yahoo-perl_0.02-1_all.deb
libtext-extractwords-perl_0.08-1_i386.deb
libtext-language-guess-perl_0.02-1_all.deb
libtextmate-jumpto-perl_0.07-1_all.deb
libtext-microtemplate-perl_0.11-1_all.deb
libtext-sass-perl_0.4-1_all.deb
libtheschwartz-simple-perl_0.05-1_all.deb
libtie-cycle-perl_1.17-1_all.deb
libtie-nested-perl_0.10-1_all.deb
libtie-toggle-perl_1.08-1_all.deb
libtime-duration-ja-perl_0.02-1_all.deb
libtime-elapsed-perl_0.29-1_all.deb
libtime-workhours-perl_0.01-1_all.deb
libtv-anytime-perl_0.31-1_all.deb
libuniverse-galaxy-perl_0.02-1_all.deb
liburi-find-utf8-perl_0.01-1_all.deb
liburi-geo-perl_0.05-1_all.deb
liburi-git-perl_0.02-1_all.deb
liburi-tag-perl_0.02-1_all.deb
libvideo-subtitle-srt-perl_0.01-1_all.deb
libweb-oembed-perl_0.04-1_all.deb
libwebservice-bloglines-perl_0.12-1_all.deb
libwebservice-lingr-perl_0.02-1_all.deb
libwww-blog-metadata-language-perl_0.01-1_all.deb
libwww-blog-metadata-mobilelinkdiscovery-perl_0.02-1_all.deb
libwww-blog-metadata-openid-perl_0.01-1_all.deb
libwww-blog-metadata-perl_0.03-1_all.deb
libwww-gazetteer-getty-perl_0.11-1_all.deb
libwww-gazetteer-perl_0.24-1_all.deb
libwww-mechanize-decodedcontent-perl_0.01-1_all.deb
libwww-mechanize-plugin-autowrite-perl_0.05-1_all.deb
libwww-shorten-perl_3.00-1_all.deb
libwww-shorten-revcanonical-perl_0.03-1_all.deb
libwww-shorten-simple-perl_0.01-1_all.deb
libxml-atom-lifeblog-perl_0.03-1_all.deb
libxml-atom-stream-perl_0.11-1_all.deb
libxml-compile-tester-perl_0.05-1_all.deb
libxml-descent-perl_1.04-1_all.deb
libxml-liberal-perl_0.22-1_all.deb
libxml-libxml-simple-perl_0.13-1_all.deb
libxml-opml-libxml-perl_0.03-1_all.deb
libxml-rss-piclens-perl_0.04-1_all.deb
libxml-semanticdiff-perl_1.0000-1_all.deb
libxml-tokeparser-perl_0.05-1_all.deb
libxtract-perl_0.13-1_all.deb
$ ls *.deb | wc -l
483

perl -MDebian::Apt::PM -MList::MoreUtils=uniq -MYAML -MApp::Cache -MCPAN -le '$a=shift @ARGV or die; $p=Debian::Apt::PM->new(); $c=App::Cache->new(); do { local *STDOUT; $r = join "\n", grep { not $p->find($_) } grep { CPAN::Shell->expand("Module", $_) } uniq map { s/-/::/g; $_ } map { $_->{"name"} } map { eval { Load($_) } || {} } map { $c->get_url("http://archive.cpan.cz/authors/id/".substr($a,0,1)."/".substr($a,0,2)."/$a/$_") } map { map { $_ =~ /\.meta$/ ? $_ : () } @{$_} } CPAN::Shell->expand("Author", $a)->ls;}; print $r;' GAAS

A little more readable version:

use Debian::Apt::PM;
use List::MoreUtils 'uniq';
use YAML;
use App::Cache;
use CPAN;

$a=shift @ARGV or die;
$p=Debian::Apt::PM->new();
$c=App::Cache->new();

do {
	local *STDOUT;
	$r =
		join "\n",
		grep { not $p->find($_) }
		grep { CPAN::Shell->expand("Module", $_) }
		uniq
		map { s/-/::/g; $_ }
		map { $_->{"name"} }
		map { eval { Load($_) } || {} }
		map { $c->get_url("http://archive.cpan.cz/authors/id/".substr($a,0,1)."/".substr($a,0,2)."/$a/$_") }
		map { map { $_ =~ /\.meta$/ ? $_ : ()  } @{$_} }
		CPAN::Shell->expand("Author", $a)->ls
	;
};

print $r;

It prints out CPAN modules from author id that are not packaged in Debian. Will work for 99% of cases. Only problem are the distributions that have "custom" names, like libwww-perl, as the package name is created from the distribution name that is read from .meta files.

The Firefox Addon was just approved - 59864

Illegal character 0x1FFFF

| No Comments | No TrackBacks
$ perl -le 'use warnings; my $x=chr(0x1FFFF)' 
Unicode character 0x1ffff is illegal at -e line 1.

XML supports UTF-8 so I check for valid UTF-8 string and use it in XML if valid. Right? No!!!

There are some "non-illegal" characters that are perfect valid in UTF-8 (or even in the plain old ASCII), but are invalid for XML. The most obvious 0x00. Here is what W3C XML 1.0 specification say:

[2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */

I spend some time playing with it and the result is XML::Char->valid(). The dev Data::asXML is using it now. If you you want, have a look at the test suit and try to break it. :-)

Once I told potyl - "hey let's have a wiki it will be easy to use for everyone". He wasn't so excited, not at all. Why? What is so bad about wiki? Look at this table of 130+ wiki syntaxes. Anyone still complaining that there are too many simmilar choices on CPAN? The wiki community decided to solve the problem by creating yet another wiki syntax...

What this has to do with Perl6 regexp grammars? After Damian talk at YAPC::EU::2009 I really wanted to try out the Regexp::Grammars. Finally I found some time during the Christmas and here is the result:

use Regexp::Grammars;
use re 'eval';
my $parser = qr@
<Wiki>
 
<rule: Wiki> <[Block]>*
<rule: Block> <.EmptyLine> | <Code> | <Para>
<token: Para> <Heading> | <List> | <TextLines>
<token: EmptyLine> ^ \h* \R
<token: TextLines> (?:^ (?! <Code> | <Heading> | <List> | <EmptyLine> ) [^\h] .+? \v)+
<token: CodeStart> ^ {{{ \h* \v
<token: CodeEnd> ^ }}} \h* \v
<token: Code> <.CodeStart> <CodeLines> <.CodeEnd>
<token: CodeLines> .+?
<token: Heading> <HeadingStart> \s <HeadingText> \s =+ \h* \v
<token: HeadingStart> ^=+
<token: HeadingText> [^=\v]+
<token: List> <[ListItem]>+
<token: ListItem> ^ <ListItemSpaces> <ListItemType> \h+ <ListItemText> \v
<token: ListItemSpaces> \h+
<token: ListItemType> (\*|\d+\.|a\.|i\.)
<token: ListItemText> .+?
@xms;

It is probably not the best piece of regexp gramar, Perl6 experts will for sure spot some error, but hey it works! "Works on my computer™". I've used it to transform TracWiki syntax to XHTML div and then using XSL to DokuWiki syntax. Here are the scripts that does it completely.

I found it!

| No Comments | No TrackBacks

Of course someone else already did it, what were you expecting Jozef? Well the same thing and I knew it (just read on), but it took some time to find it.

What I'm talking about? Quintura a search engine based on tag cloud. I've seen this kid of searching before in Open Clip Art so I was really not expecting to come up with something new at all, sorry, next time I'll fail again, don't worry. ;-) The idea is really nice. Using tag cloud to hint search directions - positive and also negative keywords. Cool!

Anything else? Yes! Besides some more exercise with JQuery my little project opened my eyes. I've started to look for some more search engines. Out of my mind I knew just couple of them ~10. So I went to wikipedia search engines which lists couple more and finally to wikipedia list of search engines.

And? Google, Yahoo, Bing, Wikipedia. This guy has really limited view of the topic! Exactly... So I looked a little deeper and found the top 100 list. 100? Sounds awful. Well according to GoshMe there are more than half a million search engines out there on the Internet. Believe or not let's not count them by hand.

And finally I found this - Segev, Elad (2008). "Search engines and power: A politics of online (mis-) information." Webology, 5(2), Article 54. Available at: http://www.webology.ir/2008/v5n2/a54.html. If you are not fan of reading long articles here are some citations from it to support the motivation:

It is argued and indicated that the dominant American search engines tend to commodify online information and intensify the asymmetry of information flow worldwide, supporting the growth of mainstream, commercial and very often US-centric information. It is therefore suggested that together with their important role in organizing the Web, search engines reinforce certain inequalities and understandings of the world. it has been suggested that any new type of search engine will either be acquired by one of the bigger American hubs or become commercialized in order to support its competitive position. Consequently, it will not be able to sustain information equality and diversity of alternative views, and will mainly represent the views of the richer and more popular nodes. support its competitive position. Consequently, it will not be able to sustain information equality and diversity of alternative views, and will mainly represent the views of the richer and more popular nodes. richer and more popular nodes. Hence, it is suggested that behind the so-called "transparent" services there are various political, economic and increasingly informational forces that continuously shape and reshape the representation of the World.

One other information caught my attention - Quaero a build in progress that got couple M€. According to the page 298, according to the wikipedia 99 from FR government (which is not listed on the official page at all). One million more or less ;-) definitely it is interesting budget.

And the takeovers? There Is More Than One Way To Do It. There Is More Than One View Of The World. And that the pages one visits are shaping an reshaping the personal world and opinions. Obvious? Yes, now yes for me. :-)