while ($s)
should be
while (length($s))
I personally believe that you're partially right: after all I may end up with $s eq "0"! D'oh! But then length would leave me with an uninitialized warning on the last iteration. Thus I'd use defined instead: worse luck, if it were not for 0 being a valid octal digit, I wouldn't have needed it in !defined $s above, either!
It would also be nice if the wrapping occurs after at most 60 characters, instead of after at least 60 characters (with no maximum!)
You're probably right: but to be fair, the splitting was more of an afterthought than anything else. I was primarily concerned with the conversion, and I hope not to have left errors there. (Now, if I had some spare time, I would make this into a Perl string literal converter, and then use eval to check... Perhaps, after lunch I'll do! ;)