I have a file like this.
>;1;
AACTCTGGGACAATGGCACACGGGAAACAGATAATGAACGATCAGCACAGGGAACTAGCG
>;2;
AACTCTGGGACAATGGCACACGGGAAACAGATAATGAACGATCAGCACAGGGAACTAGCG
>;3;
AACTCTGGGACAATGGCACACGGGAAACAGATAATGAACGATCAGCACAGGGAACTAGCG
I would like to change each number to a corresponding string.
I wrote the following Perl program but I don't know what is wrong with it.
%lista2 = (
    1  => "CAT00.3",
    2  => "CAT43.1",
    3  => "CAT40.3"
);
open(OA, ">file2.txt");
foreach $key ( keys %lista2 ) {
    open(SAL, "file.txt");
    while ( <SAL> ) {
        chomp;
        if( />/ ) {
            @w = split("\t");   
            $r = 0;
            s/\;//g;
            if ( /%lista2[i]/ ) {    
                print OA "$_ $lista2{$key}\n" ;
                $r = 1;
            }
        }
    }
}
close(SAL);
close(OA);
I want to get this
>CAT00.3
AACTCTGGGACAATGGCACACGGGAAACAGATAATGAACGATCAGCACAGGGAACTAGCG
>CAT43.1
AACTCTGGGACAATGGCACACGGGAAACAGATAATGAACGATCAGCACAGGGAACTAGCG
>CAT40.3
AACTCTGGGACAATGGCACACGGGAAACAGATAATGAACGATCAGCACAGGGAACTAGCG
But I don't know how do that.