有关句柄含有变量内插的问题
本帖最后由 kingwmj 于 2011-05-18 11:13 编辑
因为有大量的重复,所以希望用一个循环来完成,所以我的句柄是有变量内插的。结果不对。请高手看看问题出在哪里了。
use IO::File;
my $out=new IO::File(">/home/sciwmj/workspace/R/biopython/total_new_feature.txt") or die "$!";
my @arr_para=("CN","HSEAU","HSEBU","HSEAD","HSEBD","RD","RDa");
my $in_b=new IO::File("</home/sciwmj/workspace/R/biopython/b_factor/total_b_factor.txt") or die "$!";
my $in_CN=new IO::File("</home/sciwmj/workspace/R/biopython/CN/total_CN.txt") or die "$!";
my $in_HSEAU=new IO::File("</home/sciwmj/workspace/R/biopython/HSEAU/total_HSEAU.txt") or die "$!";
my $in_HSEAD=new IO::File("</home/sciwmj/workspace/R/biopython/HSEAD/total_HSEAD.txt") or die "$!";
my $in_HSEBD=new IO::File("</home/sciwmj/workspace/R/biopython/HSEBD/total_HSEBD.txt") or die "$!";
my $in_HSEBU=new IO::File("</home/sciwmj/workspace/R/biopython/HSEBU/total_HSEBU.txt") or die "$!";
my $in_RD=new IO::File("</home/sciwmj/workspace/R/biopython/RD/total_RD.txt") or die "$!";
my $in_RDa=new IO::File("</home/sciwmj/workspace/R/biopython/RDa/total_RDa.txt") or die "$!";
while(defined($l=<$in_b>)){
chomp $l;
print $out "$l";
for $para (@arr_para){
my $l2=readline('$in_'."$para"); #问题可能出在这里。
my @list=split/\s+/,$l2; #切片
print $out " $list[-1] " #取最后一个数值
}
print $out "\n";
}
因为有大量的重复,所以希望用一个循环来完成,所以我的句柄是有变量内插的。结果不对。请高手看看问题出在哪里了。
use IO::File;
my $out=new IO::File(">/home/sciwmj/workspace/R/biopython/total_new_feature.txt") or die "$!";
my @arr_para=("CN","HSEAU","HSEBU","HSEAD","HSEBD","RD","RDa");
my $in_b=new IO::File("</home/sciwmj/workspace/R/biopython/b_factor/total_b_factor.txt") or die "$!";
my $in_CN=new IO::File("</home/sciwmj/workspace/R/biopython/CN/total_CN.txt") or die "$!";
my $in_HSEAU=new IO::File("</home/sciwmj/workspace/R/biopython/HSEAU/total_HSEAU.txt") or die "$!";
my $in_HSEAD=new IO::File("</home/sciwmj/workspace/R/biopython/HSEAD/total_HSEAD.txt") or die "$!";
my $in_HSEBD=new IO::File("</home/sciwmj/workspace/R/biopython/HSEBD/total_HSEBD.txt") or die "$!";
my $in_HSEBU=new IO::File("</home/sciwmj/workspace/R/biopython/HSEBU/total_HSEBU.txt") or die "$!";
my $in_RD=new IO::File("</home/sciwmj/workspace/R/biopython/RD/total_RD.txt") or die "$!";
my $in_RDa=new IO::File("</home/sciwmj/workspace/R/biopython/RDa/total_RDa.txt") or die "$!";
while(defined($l=<$in_b>)){
chomp $l;
print $out "$l";
for $para (@arr_para){
my $l2=readline('$in_'."$para"); #问题可能出在这里。
my @list=split/\s+/,$l2; #切片
print $out " $list[-1] " #取最后一个数值
}
print $out "\n";
}
作者: kingwmj 发布时间: 2011-05-18
楼主牛啊,用这么多从来没用过的东西。 readline 从来没用过啊,一般都用<> ,词法变量是不能用名字访问的。
Perl 会自动转化变量,所以不需要 die "$!" 直接 die $! 就可以了。
Perl 会自动转化变量,所以不需要 die "$!" 直接 die $! 就可以了。
作者: zhlong8 发布时间: 2011-05-18
本帖最后由 kingwmj 于 2011-05-18 12:27 编辑
楼上就不要笑话我了,你可是拿过大奖的人。我这都是基本的数据处理, 以前不用循环,全手动列出来,现在想偷懒了。
<>以前试过,那次我是用数组当句柄用,结果不行,用readline就可以了。
这一次我也试过,<>不行,readline也不行。
词法变量是啥意思啊,经常见,不知其意。
QUOTE:
楼主牛啊,用这么多从来没用过的东西。 readline 从来没用过啊,一般都用 ,词法变量是不能用名字访问的。
...
zhlong8 发表于 2011-05-18 11:18
...
zhlong8 发表于 2011-05-18 11:18
楼上就不要笑话我了,你可是拿过大奖的人。我这都是基本的数据处理, 以前不用循环,全手动列出来,现在想偷懒了。
<>以前试过,那次我是用数组当句柄用,结果不行,用readline就可以了。
这一次我也试过,<>不行,readline也不行。
词法变量是啥意思啊,经常见,不知其意。
作者: kingwmj 发布时间: 2011-05-18
你把句柄组放在HASH或者Array里面处理好了
作者: ttcn_cu 发布时间: 2011-05-18