如何解决出现错误错误消息:在te_analysis / transposonPSI_result_2fasta.pl行的模式匹配m //中使用未初始化的值$ _
我是Perl的新手,执行时在下面的脚本中,出现错误
Use of uninitialized value $_ in pattern match (m//) at te_analysis/transposonPSI_result_2fasta.pl line
我认为问题是在分配$_
值的同时,但不确定是否是原因。
如何解决。
#!/usr/bin/perl -w
use strict;
my $largest = 0;
my $contig = '';
if (@ARGV != 2) {
print "$0 fasta result\n";
exit;
}
my $filenameA = $ARGV[0];
my $result = $ARGV[1];
my %seqs = ();
open(IN,"$filenameA") or die "oops!\n";
my $read_name = '';
my $read_seq = '';
while () {
if (/^>(\S+)/) {
$read_name = "$1";
$read_seq = "";
while () {
if (/^>(\S+)/) {
$seqs{ $read_name } = $read_seq;
$read_name = "$1";
$read_seq = "";
} else {
chomp;
$read_seq. = $_;
}
}
}
}
close(IN);
$seqs{ $read_name } = $read_seq;
open(IN,"$result") or die "oops";
open OUT,">","$result.fa"
or die "oooooops\n";
while () {
if (/Chain\s+(\S+)\s+(\d+)-(\d+)\s+(\S+)\s+(\d+)-(\d+)/) {
print "$1\t$2\t$3\t$4\t$5\t$6\n";
my $seq = substr($seqs{ $4 },$5 - 1,($6 - $5 + 1));
print OUT ">$1.$2-$3.$4.$5-$6\n$seq\n";
}
}
解决方法
您正在针对$_
的内容进行匹配-/.../
是$_ =~ /.../
的缩写,但您从未为$_
分配任何内容。
两个实例
while ()
应该是
while (<IN>)
简写
while (defined( $_ = readline(IN) ))
我怀疑您是从结构不正确的HTML文档中复制了代码,导致<IN>
被解释为未知标签,而不是被显示。
可能还有其他问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。