I'm again going to disagree. What you've written is neither C nor Perl, and something kinda awful in between. Perl experts will wince, and C experts will lack the Perl understanding to pick it up.
Either make it native Perl, or don't write it in Perl.
It's also broken as Perl. You return from the middle of the subroutine that sets $", but you don't reset it! That breaks the rest of the program. Use
this instead (if you must):
Then no matter what exit you take, the caller's value of $" is preserved.
local $" = '';
-- Randal L. Schwartz, Perl hacker