#!/usr/bin/perl use strict; use warnings; my %lista2 = ( 1 => "CAT00.3", 2 => "CAT43.1", 3 => "CAT40.3" ); # open filehandle for reading (check that open was successful or die) open my $AL, '<', 'file.txt' or die $!; # open filehandle for writing (check that open was successful or die) open my $OA, '>', 'file2.txt' or die $!; while (my $line = <$AL>) { if ($line =~ /^>(\d+)$/) { my $key = $1; if (exists $lista2{$key}) { $line =~ s/$key/$lista2{$key}/; } } print $OA $line; } close $AL or die $!; close $OA or die $!;