<?xml version="1.0" encoding="windows-1252"?>
<node id="1015541" title="Replacing values in an array" created="2013-01-26 17:49:23" updated="2013-01-26 17:49:23">
<type id="115">
perlquestion</type>
<author id="671690">
tonto</author>
<data>
<field name="doctext">
I am trying to renumber an array. I want the duplicated values in the original array to have the same new values in the renumbered array, and the first value should be changed to 1 and the next to 3 and so on, using odd numbers. The order of the array must be preserved. Here is my code:
&lt;code&gt;
#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

my @array = ("M94202", "M94150", "M94297", "M94150", "M94161", "M94161", "M94162");

my $z = 1;

foreach my $item (@array) {
    if ($item =~ m/M/g) {
        my $uniqitem = $item;
        foreach $uniqitem (@array) {
            $uniqitem =~ s/$uniqitem/$z/g;
            $z = $z +2;
        }
    }
}
print Dumper \@array;
print "\n";
&lt;/code&gt;

The output I am getting is (1,3,5,7,9,11,13)
What I want is (1,3,5,3,7,7,9)
Where have I gone wrong, please?
&lt;br&gt;
Thank you for reading!</field>
</data>
</node>
