use strict; use warnings; my $Text="LOC100282561 [Source:RefSeq peptide;Acc:NP_001148941]"; my %VisitedLinks=(); #Searching for NCBI Entrez Gene IDs $_ = $Text; my @OriginalArray = /(LOC\d{9})/g; for (my $i=0; $i < @OriginalArray; $i++) { if (!defined($VisitedLinks{$OriginalArray[$i]})) { $VisitedLinks{$OriginalArray[$i]} = 1; my $Link = EntrezGeneLinks($OriginalArray[$i]); my $Find = $OriginalArray[$i]; $Text =~ s/$Find$/$Link/g; } } print $Text,"\n"; sub EntrezGeneLinks { my ($ID) = @_; return ''.$ID.''; }