#!/usr/bin/perl -wp0777 s{}{ if ($1 || $3) {"";}}ges; s{<(?:[^>'"]+|".*?"|'.*?')+>}{}gs; s{(&(\x23\d+|\w+);?)}{$entity{$2}||$1}ge; BEGIN { %entity = ( lt => '<', gt => '>', amp => '&', quot => '"', nbsp => chr 160, iexcl => chr 161, cent => chr 162, pound => chr 163, curren => chr 164, yen => chr 165, brvbar => chr 166, sect => chr 167, uml => chr 168, copy => chr 169, ordf => chr 170, laquo => chr 171, not => chr 172, shy => chr 173, reg => chr 174, macr => chr 175, deg => chr 176, plusmn => chr 177, sup2 => chr 178, sup3 => chr 179, acute => chr 180, micro => chr 181, para => chr 182, middot => chr 183, cedil => chr 184, sup1 => chr 185, ordm => chr 186, raquo => chr 187, frac14 => chr 188, frac12 => chr 189, frac34 => chr 190, iquest => chr 191, Agrave => chr 192, Aacute => chr 193, Acirc => chr 194, Atilde => chr 195, Auml => chr 196, Aring => chr 197, AElig => chr 198, Ccedil => chr 199, Egrave => chr 200, Eacute => chr 201, Ecirc => chr 202, Euml => chr 203, Igrave => chr 204, Iacute => chr 205, Icirc => chr 206, Iuml => chr 207, ETH => chr 208, Ntilde => chr 209, Ograve => chr 210, Oacute => chr 211, Ocirc => chr 212, Otilde => chr 213, Ouml => chr 214, times => chr 215, Oslash => chr 216, Ugrave => chr 217, Uacute => chr 218, Ucirc => chr 219, Uuml => chr 220, Yacute => chr 221, THORN => chr 222, szlig => chr 223, agrave => chr 224, aacute => chr 225, acirc => chr 226, atilde => chr 227, auml => chr 228, aring => chr 229, aelig => chr 230, ccedil => chr 231, egrave => chr 232, eacute => chr 233, ecirc => chr 234, euml => chr 235, igrave => chr 236, iacute => chr 237, icirc => chr 238, iuml => chr 239, eth => chr 240, ntilde => chr 241, ograve => chr 242, oacute => chr 243, ocirc => chr 244, otilde => chr 245, ouml => chr 246, divide => chr 247, oslash => chr 248, ugrave => chr 249, uacute => chr 250, ucirc => chr 251, uuml => chr 252, yacute => chr 253, thorn => chr 254, yuml => chr 255, ); for $chr ( 0 .. 255 ) { $entity{ '#' . $chr } = chr $chr; } }