in reply to Word matching in string

Without any information on what is in @name, what the input is, what the output should be and what doesn't work, I can only use ESP:
for (0 .. $#name) { $phylo =~ s/\Q$name[$_]\E/$_+1/e; }
please read how (not) to ask a question.

Cheers.

Replies are listed 'Best First'.
Re^2: Word matching in string
by Jaya (Acolyte) on Mar 25, 2005 at 01:59 UTC
    I am sorry about that

    @name consists of
    CH7 1CP5 1LHT 1SPG 1FAW 1HBR 1WMU 1F5P 1UC3 3LHB 1IT2
    the input $phylo consists of
    9 -2393.2 (((CH7,1CP5),1LHT),1SPG,1FAW,1HBR,1WMU)))),((1F5P,3LHB),1UC3),1IT2);

    on running the code, i get
    9 -2393.2 ((((CH7,2),3),(4,(5,(6,7)))),((8,10),9),11);
    and it supposed to be
    9 -2393.2 ((((1,2),3),(4,(5,(6,7)))),((8,10),9),11);

    to my knowledge my code is correct and i am not able to figure out the error

    the code is

    for($i = 0,my $k = 1; $i<= $#name; ++$i,++$k){ $phylo =~ s/($name[$i])/$k/;} print("$phylo\n");

      Jaya, for me it is working perfectly.

      @name = qw (CH7 1CP5 1LHT 1SPG 1FAW 1HBR 1WMU 1F5P 1UC3 3LHB 1IT2); $phylo = "9 -2393.2 (((CH7,1CP5),1LHT),1SPG,1FAW,1HBR,1WMU)))),((1F5P, +3LHB),1UC3),1IT2)"; for($i = 0,my $k = 1; $i<= $#name; ++$i,++$k){ print "$name[$i]\t$i\t$k\n"; $phylo =~ s/($name[$i])/$k/; } print("$phylo\n");

      output:

      CH7 0 1 1CP5 1 2 1LHT 2 3 1SPG 3 4 1FAW 4 5 1HBR 5 6 1WMU 6 7 1F5P 7 8 1UC3 8 9 3LHB 9 10 1IT2 10 11 9 -2393.2 (((1,2),3),4,5,6,7)))),((8,10),9),11)

      Prasad

        Thank You very much

        It sounds awesome

        But it does not work for me!!

        And I am stuck up here .

        Asha