in reply to Extract the matching strings

something like:

LINE: while ( <PROTEIN> ) { if ( /^VERSION\s+(\S+)/ ) { # extracts the first non-space sequence after the VERSION-token $protname = $1; next LINE; } if ( /^DBSOURCE\s+.*\s(\S+)\s*$/ ) { # extracts the last non-space sequence on the DBSOURCE line $rna = $1; next LINE; } }
You first need to determine the syntax of the lines you want, and the location of the values you want to extract:
Is the "YP_001648463.1" always the first field after the VERSION? Is the RNA always last on the DBSOURCE lines?
You should consider what to do with invalid input: what happens if DBSOURCE is not present or $protname does not match the ACCESSION-value...
For more info on regular expressions, check out perldoc perlre.