http://qs321.pair.com?node_id=1048304


in reply to Re: search and replace a word in a column
in thread search and replace a word in a column

Hi Lakssreedhar
Use a 2D array to read a file column wise. Then adopt the folowing steps :

1. count the number of lines of your file.
2. Use some regular expression to split the file with respect to the column delimiters i.e tab in your case . Thus build the 2D array.
3. Use a sub routine to get all the values of the 9th column and push them in an array.
4. Process the array to look where at which index I is preceded by O. Find those indexes.
5. open your data file again and using the 2D matrix just replace those positions .
The following code could be a bit help to you

my @matrix; my $row = 0; # count no. of lines open(DATA, "< data.txt"); my @lines = <DATA>; close(DATA); my $c = @lines; open(DATA, "< data.txt"); push @{$matrix[$row++]}, split while <DATA>; dd @matrix; &colprint(\@matrix); close(DATA); my @arrayOfninth_col; sub colprint { my $matrix_ref = shift; for (1 .. $c) { print "$matrix_ref->[$c-1][9] \n"; my $value = $matrix_ref->[$c-1][9]; push @arrayOfninth_col , $value; } # process the array @arrayOfninth_col for indexes }

Replies are listed 'Best First'.
Re^3: search and replace a word in a column
by lakssreedhar (Acolyte) on Aug 07, 2013 at 10:02 UTC

    i have just split the columns using tab and then again split the 9th column and checked if value of a particular index is I and index-1 is o.But the substitution is not working properly

      which substitution, paste your code here