I'm not sure I really understand what you're asking for.
I have several questions/comments, though :
if you want to split with a pipe, you need to escape the pipe, since the pipe is a special character in regex :
split /\t/, $_;
$GU doesn't exist; you probably mean $GU_web.
structure_name is supposed to be a variable, you forgot "$", and you have a ">" which isn't supposed to be there.
What's in your "gly_structures.txt" ? I mean, can there be duplicate $ref_num ?
Why do you have this loop for ?
$i=1;
while (<info_web>) {
if (/^(\d+\.\d+)\D/) {$GU_web = $1;}
if ($i >1) { last;}
print "$GU_web\n";
$i++;
}
You're going through it only twice, assigning what you captured in the regex to $GU_web twice, and printing $GU_web only once.