Because I don't want to spend time and energy configuring CPAN, accounting for the company proxy, downloading a module, finding somewhere to put it, worrying about accidentally installing files in the wrong place, making the perl command refer to that location, etc. for every temporary webserver I want to make.
While you may think all that is "easy", you can't honestly think it's as easy, fast and convenient as typing "python -m SimpleHTTPServer" or any other built-in one-liner?
Yes, this is hard to read, hard to remember, and generally a stupid idea.
(And yes, I'm kind of violating my own rule.)
The clean way is to use a script.
Also, writing a module optimized for using in a one-liner isn't that hard:
use Exporter qw( import );
our @EXPORT=qw( serve );
Whatever::Webserver::you::like->new(port => $port)->run();