Perl学习文档

参考:https://max.book118.com/html/2017/0514/106733478.shtm

文件句柄

1.保留句柄
ARGV,ARGVOUT,STDIN,STDOUT,STDERR,DATA
其中[]接受外部输入命令的传参,从0开始。
2.打开其他文件句柄

#打开名为A的文件句柄,并将它指向文件
open A,"bos" or die "No such file: bos\n$!\n";
#用<来声明此文件只是用来输入的
open IG,"<$gFile" or die "No such file: $gFile\n$!\n";
#用>会将输出送到名为${outPreffix}.s的新文件,会打开文件句柄O,并输入到新文件${outPreffix}.s。
open O,">${outPreffix}.s" or die "Can not creat such file: ${outPreffix}.s\n$!\n";
#显示标准错误,\t 表示tab空白,\n表示换行;
print STDERR "Random sampling task description:\n\tSampling method: Bootstrap\n\tChosen Batch: $batchs\n\tSampling times / group: $n_perGroup\n";

3.使用文件句柄

while(){
     chomp;#删除换行符
     next if(/^SampleId/);#跳过首行
      @F = split /\t/;#以空白符连接成数组
      next if(scalar (grep {$F[3] == $_} @Batchs) < 1); # 若当前批次不在指定的批次范围之内,则跳过;scalar计算数组的长度;grep返回 {$F[3] == $_}在@Batchs数组中匹配的元素个数或列表;
     #如果在%G中,不在在key为$F[2]的值的话,那么,将key为$F[2]的值赋值为@a,相当于重新构建哈希%G($F[2],@a),其中key为Group信息,值为SampleID信息;
     if(!defined($G{$F[2]})){
                my @a;
                $G{$F[2]}=\@a;
        }
      #push操作符,用于添加元素到数组的尾端;  
      push(@{$G{$F[2]}}, $F[0]);
      # 保存批次信息
      $Batch{$F[0]} = $F[3];
}

哈希

你可能感兴趣的:(Perl学习文档)