in reply to system and &>/dev/null

Aside from the previous suggestions regarding opening file internal to perl, AFAIC, you had the original re-direction wrong - it should've been >&, instead of the &> - that would run the dd(1) command in the background, totally ignoring the & ... which is why the 2>/dev/null, worked for you (twas the right way round).

If you want to ignore all output i.e. STDOUT _&_ STDERR, then use >/dev/null 2>&1

A user level that continues to overstate my experience :-))