$num=~s/(\d{1,3})(?=(?:\d{3})+(?!\d))/$1,/g;正規表現の拡張構文を使って1行でできます。
(\d{1,3})が、数字1-3桁にマッチ。
(?=(?:\d{3})+(?!\d))続く部分は拡張構文なので一致の確認は行うが置換対象にはならない。
(?:\d{3})+数字3の倍数桁に一致。
(?!\d)続く文字が数字以外。
$num=1234567890;一番最後の文字が数字以外に一致ですので、末尾のみ一致する。
$num=~s/(\d{1,3})(?=(?:\d{3})+(?!\d))/$1,/g;