If "ugly is as ugly does," your code ain't ugly.
That's not to say you're wrong is assuming there are more perl-ish ways, especially including those that don't require recourse to a system utility, line 5, "$header=`cut -f1,2,$_ ...." But whether those are more effective, more elegant or less "ugly" is pretty much in the eye of the beholder... and what amounts to self-deprecation is far from obligatory. Remember,
TIMTOWTDI
Maybe you'll consider labeling your issues with code that works, as a search for other ways to do it.
If you didn't program your executable by toggling in binary, it wasn't really programming!