Hi all,
I'm really new in this field, so my problem may be so basic for you, please accept my apologize in advance. I faced with the following error during running a perl script
..Use of uninitialized value in concatenation (.) or string at sequence +_replacement.pl line 56, <TWO> line 48001. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48007. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48023. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48033. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48055. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48059. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48061. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48079. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48087. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48101. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48103. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48107. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48131. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48135. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48189. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48219. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48221. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48225. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48235. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48237. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48243. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48247. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48253. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48299. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48351. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48371. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48387. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48391. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48395. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48403. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48423. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48425. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48447. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48451. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48453. Use of uninitialized value in concatenation (.) or string at sequence_ +replacement.pl line 56, <TWO> line 48455.
The error was really large and sounds that it's for almost line, I put just small part of it. I would highly appreciate if you could please help me to solve the problem in a simple language
.Here is the code:
#!/usr/bin/perl use strict; use warnings; use Getopt::Long; #set variables my ($optHelp, $optFile1, $optFile2, $optList); #get program options GetOptions ('h' => \$optHelp, 'a=s' => \$optFile1, 'b=s' => \$optFile2 +, 'l=s' => \$optList); # there are better ways to do this but I like this strategy :) if($optHelp || !$optFile1 || !$optFile2 || !$optList ){ print "Usege:\n\n"; print "./program -a file1 -b file2 -l list<.tsv> \n\n"; print "Note: sequences from file2 are replaced with those in file1 a +ccording to the list -l\n\n"; exit(0); } #allocate memory (well, more of set variables) my %hash1 =(); my %list = (); #open files open (ONE, "<", $optFile1) or die "$!"; open (TWO, "<", $optFile2) or die "$!"; open (LIST, "<", $optList) or die "$!"; #load list which should look like: #file1_id <tab> file2_id while(<LIST>){ chomp; /^(.*?)\t(.*)/; $list{$1} = $2; #e } close LIST; #read file one into memory my $head; while(<ONE>){ chomp; if(/>(.*)/){$head = $1; next;} #e $hash1{$head} .= $_; } close ONE; #replace fasta record from file to with the one in file one if id is s +et in list file my $x = 0; while(<TWO>){ chomp; ## You can play with this if one line fasfa sequence is not what you + can use if(/>(.*)/){if(defined $list{$1}){print $_. "\n" . $hash1{$list{$1}} + . "\n"; $x = 1}else{$x = 0}} #e print $_ . "\n" if $x == 0; #e } close TWO;
In reply to Getting (famous) error during running perl script by Kati
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |