##################################### # PLAY WITH THE PERLMONKS SITE (1). # ##################################### use LWP::Simple ; $|=1; my $node = '185131' ; my $url = "http://www.perlmonks.org/index.pl?node_id=$node" ; if ($node =~ /^http:\/\//) { $url = $node ;} print "Getting node $node...\n" ; print "$url\n" ; $html = get($url); my $lng = length($html) ; print "$lng bytes.\n\n" ; $html =~ s/\r\n?/\n/gs ; my (@codes) = ( $html =~ /
(.*?)<\/font><\/tt><\/pre>/gsi );

foreach my $code ( @codes ) {
  $code =~ s/\n\+<\/font>//gi ;
  $code = filter_from_html($code) ;
  print
"# CODE #################################################\n"
  if ($#codes > 0) ;
  print "$code\n" ;
}

####################
# FILTER_FROM_HTML #
####################

sub filter_from_html {
  my ( $code ) = @_ ;

  my %SYMBOLS_html = (
  'acute' => 'aeiouAEIOU#áéíóúÁÉÍÓÚ' ,
  'grave' => 'aeiouAEIOU#àèìòùÀÈÌÒÙ' ,
  'circ'  => 'aeiouAEIOU#âêîôûÂÊÎÔÛ' ,
  'uml'   => 'aeiouAEIOU#äëïöüÄËÏÖÜ' ,
  'tilde' => 'aoAO#ãõÃÕ' ,
  'cedil' => 'cC#çÇ' ,
  'lt'    => '#<' ,
  'gt'    => '#>' ,
  'quot'  => '#"' ,
  ) ;
  
  $code =~ s/&#(\d{1,3});/pack("C",$1)/eg;

  $code =~ s/&?/&/gsi ;
  $code =~ s/ ?/ /gsi ;
  
  my ($start,$end,@letras1,@letras2,$max);

  foreach my $Key ( keys %SYMBOLS_html ) {
    ($start , $end) = split('#' , $SYMBOLS_html{$Key}) ;
    @letras1 = split('' , $start) ;
    @letras2 = split('' , $end) ;
    
    $max = $#letras1 ;
    if ($#letras2 > $max) { $max = $#letras2 ;}
    
    for(0..$max) {
      $code =~ s/\&$letras1[$_](?i:$Key);?/$letras2[$_]/g ;
    }
  }

  return( $code ) ;
}

#######
# END #
#######