Note (probably harmless): No library found for -ltidy It seems that you don't have libtidy installed. HTML::Tidy does no real work on its own. See the section "INSTALLING LIBTIDY" in Tidy.pm for a step-by-step walkthrough of building the lib. You can also refer to http://tidy.sourceforge.net/. If you do have libtidy installed, and I just haven't detected it, go ahead and try building. If HTML::Tidy builds and tests correctly, then please let Andy Lester know at bug-html-tidy@rt.cpan.org so that he can fix the library detection code. Checking if your kit is complete... Looks good Note (probably harmless): No library found for -ltidy Writing Makefile for HTML::Tidy cp lib/HTML/Tidy/Message.pm blib/lib/HTML/Tidy/Message.pm cp lib/HTML/Tidy.pm blib/lib/HTML/Tidy.pm /home/cpanrun/ia64/build/5.8.2/bin/perl /home/cpanrun/ia64/build/5.8.2/lib/5.8.2/ExtUtils/xsubpp -typemap /home/cpanrun/ia64/build/5.8.2/lib/5.8.2/ExtUtils/typemap Tidy.xs > Tidy.xsc && mv Tidy.xsc Tidy.c cc -c -I. -I/usr/include/tidy -I/usr/local/include/tidy -I/sw/include/tidy -D_POSIX_C_SOURCE=199506L -D_REENTRANT -Ae -D_HPUX_SOURCE -Wl,+vnocompatwarnings -DNO_HASH_SEED -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fast +DSitanium2 +Ofltacc=strict -DVERSION=\"1.08\" -DXS_VERSION=\"1.08\" +Z "-I/home/cpanrun/ia64/build/5.8.2/lib/5.8.2/IA64.ARCHREV_0-thread-multi/CORE" Tidy.c Error 112: "Tidy.xs", line 5 # Include file not found. #include ^^^^^^^^ Error 112: "Tidy.xs", line 6 # Include file not found. #include ^^^^^^^^^^ Error 419: "Tidy.xs", line 53 # 'TidyBuffer' is used as a type, but has not been defined as a type. TidyBuffer errbuf = {0}; ^^^^^^^^^^ Error 419: "Tidy.xs", line 54 # 'TidyDoc' is used as a type, but has not been defined as a type. TidyDoc tdoc = tidyCreate(); /* Initialize "document" */ ^^^^^^^ Error 172: "Tidy.xs", line 58 # Undeclared variable 'TidyCharEncoding'. rc = ( tidyOptSetValue( tdoc, TidyCharEncoding, "utf8" ) ? rc : -1 ); ^^^^^^^^^^^^^^^^ Error 419: "Tidy.xs", line 65 # 'TidyOptionId' is used as a type, but has not been defined as a type. HTMLTIDY_LOAD_CONFIG_HASH(tdoc,tidy_options); ^^^^^^^^^^^^^^^^^^^^^^^^^ Error 20: "Tidy.xs", line 65 # ';' expected before 'opt'. HTMLTIDY_LOAD_CONFIG_HASH(tdoc,tidy_options); ^^^^^^^^^^^^^^^^^^^^^^^^^ Error 172: "Tidy.xs", line 65 # Undeclared variable 'opt'. HTMLTIDY_LOAD_CONFIG_HASH(tdoc,tidy_options); ^^^^^^^^^^^^^^^^^^^^^^^^^ Error 172: "Tidy.xs", line 65 # Undeclared variable 'opt'. HTMLTIDY_LOAD_CONFIG_HASH(tdoc,tidy_options); ^^^^^^^^^^^^^^^^^^^^^^^^^ Error 172: "Tidy.xs", line 65 # Undeclared variable 'opt'. HTMLTIDY_LOAD_CONFIG_HASH(tdoc,tidy_options); ^^^^^^^^^^^^^^^^^^^^^^^^^ Error 186: "Tidy.xs", line 78 # Left side of '.' requires a struct object; type found was 'int'. if ( rc >= 0 && errbuf.bp) { ^^^^^^ Error 186: "Tidy.xs", line 79 # Left side of '.' requires a struct object; type found was 'int'. XPUSHs( sv_2mortal(newSVpvn(errbuf.bp, errbuf.size)) ); ^^^^^^ Error 699: "Tidy.xs", line 79 # Error limit reached; halting compilation. XPUSHs( sv_2mortal(newSVpvn(errbuf.bp, errbuf.size)) ); ^^^^^^ make: *** [Tidy.o] Error 2