MVRS has asked for the wisdom of the Perl Monks concerning the following question:
hi friends , here a perl script written by me to merge link files
my input(link) is as following
link1 myco1 16 13013 color=chr1
link1 myco2 7419028 7432025 color=chr1
link2 myco1 13016 31245 color=chr1
link2 myco2 7432026 7450255 color=chr1
link3 myco1 31569 50386 color=chr1
link3 myco2 7450876 7469693 color=chr1
link4 myco1 53241 82019 color=chr1
link4 myco2 7472518 7501295 color=chr1
link5 myco1 82667 85039 color=chr1
link5 myco2 7511397 7513769 color=chr1
link6 myco1 85052 162535 color=chr1
link6 myco2 7513770 7591243 color=chr1
link7 myco1 3519888 3527802 color=chr10
link7 myco2 6192981 6200895 color=chr10
link8 myco1 3531711 3535088 color=chr10
link8 myco2 6200982 6204356 color=chr10
link9 myco1 3537764 3568351 color=chr10
link9 myco2 6204393 6234981 color=chr10
link10 myco1 3585050 3670398 color=chr10
link10 myco2 6236328 6321680 color=chr10
use strict; use warnings; my $JOB = $ARGV[0]; my $threshold = $ARGV[1]; my $fh = "/home/Desktop/merge/$JOB/src/link.txt"; open (INFILE_link,"<$fh") or die $!; my @file_array; while (my $line = <INFILE_link>) { chomp $line; my @line_array = split(/\s+/, $line); push (@file_array, \@line_array); } my $arraySize_link = scalar (@file_array); my $ix=1; my ($i, $a, $b, $c, $d, $x, $w, $y, $z, $ta, $tb, $tc, $td); $a= $b= $c= $d= $x= $w= $y= $z= $ta = $tb =$tc =$td= 0; #open (FILE,'>'."$fh"); for ( $i=0; $i<$arraySize_link; $i+=2) { $ta = $file_array[$i][2]; $tb = $file_array[$i][3]; $tc = $file_array[$i+1][2]; $td = $file_array[$i+1][3]; if ($a=$b=$c=$d=$x=$w=$y=$z = 0) { $a = $x = $ta ; $b = $y = $tb ; $c = $w = $tc ; $d = $z = $td ; last; } if ( ($ta-$a) < $threshold && ($tc-$c) < $threshold) { # copy tabcd to abcd $a = $ta ; $b = $tb ; $c = $tc ; $d = $td ; } else { print "$file_array[$i][0] $file_array[$i][2] $file_array[$i+2] +[3]\n$file_array[$i+1][0] $file_array[$i+1][2] $file_array[$i+3][3]\n +"; $a = $x = $ta ; $b = $y = $tb ; $c = $w = $tc ; $d = $z = $td ; } } # end of for loop if ($a=$b=$c=$d=$x=$w=$y=$z != 0) { print "$file_array[$i][0] $file_array[$i][2] $file_array[$i][3 +]\n$file_array[$i+1][0] $file_array[$i+1][2] $file_array[$i+1][3]\n"; }
My out put
link1 16 31245
link1 7419028 7450255
link2 13016 50386
link2 7432026 7469693
link3 31569 82019
link3 7450876 7501295
link4 53241 85039
link4 7472518 7513769
link5 82667 162535
link5 7511397 7591243
link6 85052 3527802
link6 7513770 6200895
link7 3519888 3535088
link7 6192981 6204356
link8 3531711 3568351
link8 6200982 6234981
link9 3537764 3670398
link9 6204393 6321680
link10 3585050
link10 6236328
please help me in fixing the error and in the last two lines the numbers were not getting in the output please help me in fixing the problem and also help me in fixing the code with out warnings
here in the output as perl toolic reply he is right , please somebody suggest me in fixing this problem how can i change the code to fix this problem of for loop
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Use of uninitialized value in concatenation (.) or string
by toolic (Bishop) on May 16, 2013 at 02:28 UTC | |
|
Re: Use of uninitialized value in concatenation (.) or string
by Cristoforo (Curate) on May 16, 2013 at 03:27 UTC | |
|
Re: Use of uninitialized value in concatenation (.) or string
by Anonymous Monk on May 16, 2013 at 05:56 UTC | |
|
Re: problem in for loop
by hdb (Monsignor) on May 16, 2013 at 07:07 UTC | |
by MVRS (Acolyte) on May 16, 2013 at 07:24 UTC | |
by hdb (Monsignor) on May 16, 2013 at 07:50 UTC | |
by MVRS (Acolyte) on May 16, 2013 at 08:06 UTC | |
by hdb (Monsignor) on May 16, 2013 at 08:12 UTC | |
| |
|
Re: problem in for loop
by space_monk (Chaplain) on May 16, 2013 at 10:04 UTC |