#!/usr/bin/perl # # http://www.perlmonks.org/?node_id=1187481 # use strict; use warnings; use CGI; use HTML::Entities qw/encode_entities/; my $cgi = CGI->new(); print $cgi->header(); print'Perl use statment Testing'."\n" ; my $uselist0=$cgi->param('uselist'); my $uselist=$uselist0; $uselist='CGI::Carp JSON' unless (defined $uselist); $uselist=~s/[\n\r\t\l]+/ /g; $uselist=~s/\s+/ /g; print '

Testing Use Commands:'.encode_entities($uselist)."

\n"; print '
'."\n"; 
for my $use (split(' ',$uselist)) { addin($use); } 
print '
'."\n"; print '
'."\n"; print ''."\n"; print ''."\n"; print ''."\n"; print ''."\n"; print ''."\n"; print ''."\n"; print '
Modules to test
CASE MATTERS!
Just like in perl
'."\n"; print ''; exit; sub addin { my $mod=shift; my $pre=shift; my %inc0=%INC; if ($pre) {print '
'."\n";}
  print encode_entities('new to %INC from adding use '.$mod.";\n"); 
  eval 'use '.$mod.';' ; 
  print encode_entities("\n".'eval use ERROR:'.$@."\n") if ($@); 

  my %incnew=(); 
  my $max=0; # this ends up as largest in %INC not largest that is new , good nuf 
  for my $k (keys %INC) { $max=length($k) if (length($k)>$max);} 
  my $fmt='  %-'.$max.'s => %s'."\n"; 
  for my $k (sort keys(%INC)) { 
    print encode_entities(sprintf($fmt,$k,$INC{$k}))  unless ($inc0{$k}); 
    } 
  print "\n";
  if ($pre) {print '
'."\n";} }