in reply to system and &>/dev/null

Sounds like perl either isn't using bash or is using bash but calling it in such a manner that it's acting like vanilla sh (see the bash man page for how it changes its behavior based on the name it's called). The output from perl -V:sh may be illuminating.

Update: And as for creating sparse files, just open the a file for writing, seek to the desired size, and truncate.

The cake is a lie.
The cake is a lie.
The cake is a lie.