Although spawning two child process and using another language (the shell) to do a bit of string handling with a date is rather over the top. Wouldn't it be better done in Perl?
I understood the OP's code to be a simple example which shows the requirement, not as a complete specification of his end product. If the shell command was something distinctly non-trivial, or perhaps not the same command on each run of the Perl script, it may be much harder to implement the complete program purely in Perl.
Paul