use strict; use warnings; my $str = do { local $/, }; my @fnote = qw(footnote1 footnote1 footnote1); #Already retrived footnotes my %hash; for (@fnote) { $hash{$1} = $_ if ($_ =~ /<(FN\d+)>/); } $str =~ s|<(FN\d+)ref>|$hash{$1}|g; print $str; __DATA__

Here some text and some text Here some text and some text Here some text and some text

afsdfsaf afsdfsaf afsdfsaf outputs: --------

Here some text footnote1 and some text Here some text footnote1 and some text Here some text footnote1 and some text

afsdfsaf afsdfsaf afsdfsaf