Everything has limits, and Perl is no exception. Although it is true that Perl has a very rich function set, there are things it just cannot do.
If you need to do some task very quickly, for example, Perl might not be able to run fast enough for your needs. Or you might not be able to control your machine in a particular way with Perl. This is why extensions are written.
Because so many extensions have been written, most people never need to write their own extension; instead, you can use one that someone else made. Usually people upload their extensions to the Comprehensive Perl Archive Network (CPAN), where you can get them whenever you need them (http://www.cpan.org/).
Sometimes, however, even the extraordinary ...