Its not UNIVERSAL::require, its UNIVERSAL (which UNIVERSAL::require must unfortunately load).
use UNIVERSAL; use HTML::TokeParser qw(wibble); HTML::TokeParser defines nor inherits any import routine. When there's no import, any arguments to use are ignored and any calls to Class->import are ignored. UNIVERSAL unfortunately imports import() from Exporter which means EVERYONE has an import() routine. Thus, boom. There is a fix for this, something like changing UNIVERSAL::import to be... sub import { my($class) = shift; return unless $class eq 'UNIVERSAL'; ...do the export... }