http://www.perlmonks.org?node_id=669853


in reply to Re: announce missing modules
in thread announce missing modules

That's a great idea. I started to play with something similar and got the following for the anon function on the @INC array.
BEGIN { use 5.8.0; use vars qw(@missing); push @INC, sub { my ($coderef, $filename) = @_; # Ignore non-modules. return undef unless ($filename =~ s/.pm$//); # Remember the module. $filename =~ s/\//::/g; push @missing, $filename; # Return a dummy file handle. open my $FH, '<', \'1;'; $FH; }; }
The INIT block is a great idea.
INIT { # Check and clean up. die "Missing modules.\n\tcpan -i ", join(' ',' @missing), "\n\ +n" if (@missing); pop @INC; }
The open my $FH, '<', \'1;'; is available in perl 5.8.8.

Is there a better way to deduce the module name than removing the .pm extension and replacing /s with ::? Will it work on non-UNIX platforms?

Popping the function off again seems like a good idea.