ああ、やはり私の勘違いでした。
$data=sprintf("% 7d", 123);
これはちゃんと機能しておりました、問題はこの後の出力部でした。
$data=~ s/ /\ \;/g;
これを間に入れて解決しました。

大変お騒がせ致しました。
>>896 、 >>897 お二人さんありがとうございました。