While you *could* do this in Perl, this isn't the kind of thing that Perl is particularly good at. You'd be far better off getting a copy of DJGPP for DOS/Windows, along with the Cygwin package. Alternatively, you can get the Borland (or whatever the heck they call themselves these days) for free, also.
Of course, if you do this in Perl, it'll be a great way to get lots of experience with pack()/unpack(). Perl does not excel at doing the types of data structures that are best suited for this kind of task.
And if you don't know C, you need to learn C, so you can help with the core Perl development, right?