in reply to why embed C into Perl
The main reason I embed C (actually, XS) is where an interface is available to C but not to Perl. This is particularly the case with operating system APIs.
Sometimes Perl API wrappers are provided but might not offer the particular range of features needed, or be very awkward. For example, if I need to call a series of four or five APIs, passing values between them, it can be tedious and slow to convert values from C to Perl then back again (often using pack/unpack) - it makes sense to write all the calls in C and package it.
These needs are specialised: you may well find that you do not have that need or that someone else has boldly gone before, and you can download the package from CPAN.