diff --git a/HTML-Parser-3.81.tar.gz b/HTML-Parser-3.81.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..5dae5499c2586e77eac2354a7739c8bf800811e4
Binary files /dev/null and b/HTML-Parser-3.81.tar.gz differ
diff --git a/perl-HTML-Parser.spec b/perl-HTML-Parser.spec
new file mode 100644
index 0000000000000000000000000000000000000000..d834a3936b960b9772bc97cfc00d5f7a25cd521c
--- /dev/null
+++ b/perl-HTML-Parser.spec
@@ -0,0 +1,114 @@
+%define anolis_release 1
+Name: perl-HTML-Parser
+Summary: Perl module for parsing HTML
+Version: 3.81
+Release: %{anolis_release}%{?dist}
+License: GPL-1.0-or-later OR Artistic-1.0-Perl
+Source0: https://cpan.metacpan.org/authors/id/O/OA/OALDERS/HTML-Parser-%{version}.tar.gz
+URL: https://metacpan.org/release/HTML-Parser
+BuildRequires: coreutils
+BuildRequires: findutils
+BuildRequires: gcc
+BuildRequires: glibc-common
+BuildRequires: make
+BuildRequires: perl-devel
+BuildRequires: perl-generators
+BuildRequires: perl-interpreter
+BuildRequires: perl(Config)
+BuildRequires: perl(ExtUtils::MakeMaker) >= 6.76
+BuildRequires: perl(strict)
+BuildRequires: perl(warnings)
+# Run-time
+BuildRequires: perl(Carp)
+BuildRequires: perl(Exporter)
+BuildRequires: perl(HTML::Tagset) >= 3
+BuildRequires: perl(HTTP::Headers)
+BuildRequires: perl(IO::File)
+BuildRequires: perl(URI)
+BuildRequires: perl(XSLoader)
+# Tests
+BuildRequires: perl(File::Spec)
+BuildRequires: perl(FileHandle)
+BuildRequires: perl(SelectSaver)
+BuildRequires: perl(Test::More)
+BuildRequires: perl(threads)
+Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
+Requires: perl(HTML::Tagset) >= 3
+Requires: perl(HTTP::Headers)
+Requires: perl(IO::File)
+Requires: perl(URI)
+
+%{?perl_default_filter}
+%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}perl\\(HTML::Tagset\\)$
+
+%description
+The HTML-Parser module for perl to parse and extract information from
+HTML documents, including the HTML::Entities, HTML::HeadParser,
+HTML::LinkExtor, HTML::PullParser, and HTML::TokeParser modules.
+
+%package tests
+Summary: Tests for %{name}
+Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
+Requires: perl-Test-Harness
+
+%description tests
+Tests from %{name}. Execute them
+with "%{_libexecdir}/%{name}/test".
+
+%prep
+%setup -q -n HTML-Parser-%{version}
+chmod -c a-x eg/*
+
+# Help file to recognise the Perl scripts and normalize shebangs
+for F in t/*.t; do
+ perl -i -MConfig -ple 'print $Config{startperl} if $. == 1 && !s{\A#!.*perl\b}{$Config{startperl}}' "$F"
+ chmod +x "$F"
+done
+
+%build
+perl Makefile.PL INSTALLDIRS=vendor OPTIMIZE="%{optflags}" NO_PACKLIST=1 NO_PERLLOCAL=1
+%{make_build}
+
+%install
+%{make_install}
+file=%{buildroot}%{_mandir}/man3/HTML::Entities.3pm
+iconv -f iso-8859-1 -t utf-8 <"$file" > "${file}_" && \
+ touch -r ${file} ${file}_ && \
+ mv -f "${file}_" "$file"
+find %{buildroot} -type f -name '*.bs' -empty -delete
+%{_fixperms} %{buildroot}/*
+
+# Install tests
+mkdir -p %{buildroot}/%{_libexecdir}/%{name}
+cp -a t %{buildroot}/%{_libexecdir}/%{name}
+cat > %{buildroot}/%{_libexecdir}/%{name}/test << 'EOF'
+#!/bin/bash
+set -e
+# Some tests write into temporary files/directories. The easiest solution
+# is to copy the tests into a writable directory and execute them from there.
+DIR=$(mktemp -d)
+pushd "$DIR"
+cp -a %{_libexecdir}/%{name}/* ./
+prove -I . -j "$(getconf _NPROCESSORS_ONLN)"
+popd
+rm -rf "$DIR"
+EOF
+chmod +x %{buildroot}/%{_libexecdir}/%{name}/test
+
+%check
+export HARNESS_OPTIONS=j$(perl -e 'if ($ARGV[0] =~ /.*-j([0-9][0-9]*).*/) {print $1} else {print 1}' -- '%{?_smp_mflags}')
+make test
+
+%files
+%license LICENSE
+%doc Changes README TODO eg/
+%{perl_vendorarch}/HTML/
+%{perl_vendorarch}/auto/HTML/
+%{_mandir}/man3/*.3pm*
+
+%files tests
+%{_libexecdir}/%{name}
+
+%changelog
+* Thu Feb 02 2023 Chunmei Xu - 3.81-1
+- init from upstream