in reply to Script printing undesired format

A few points spring to mind. Firstly, it is strongly recommended that you put use strict; and use warnings; at the top of your scripts. This will force you to declare your variables, which helps avoid typos, and gives sanity warnings regarding dubious code.

When slurping files it is worth localising the change to $/ within a small scope to avoid unwanted side effects elsewhere in the script

my $header = <INFO>; my $sequence; { local $/; $sequence = <INFO>; }

Once out of the code block, the previous value of $/ will be restored.

I don't think the code as you have posted it will even compile as it looks as if you have mismatched braces now that the foreach is commented out.

This line

$commentout = $commentout .= $position;

looks a bit wonky. Do either

$commentout = $commentout . $position;

or

$commentout .= $position;

Better still, just use one line

my $commentout = '$' . $position;

Double quotes interpolate variables, single quotes don't.

As GrandFather points out, including samples of the input files and the expected output will help us to help you.

Cheers,

JohnGG