批量处理

#!/usr/bin/perl
use strict;
use warnings;
use File::Basename;

open (OUT, ">text.file")|| die "can not open the text.file\n";

my %data;
my @files = glob "*.vcf";
for my $file (@files) {
        my $file_name = basename ($file);
        print "$file_name\n";
        open my $fh, '<', $file or die $!;
        while (<$fh>) {
                next if /^\s*$/;
                next if /^gene_number/;
                next if /^#/;
                
                $_ =~s/[\n\r]//g;
                my @array = split/\t/,$_;
                my ($num, $pos, $snp) =($array[0],$array[1],$array[3]."|".$array[4]);
                print "$num\t$pos\t$snp\n";
                chomp;
                #my ($num, $pos, $snp) = split;
                $data{$num}{$pos}{$file_name} = $snp;
        }
        close $fh;
}
  print OUT"reference\tposition";
for my $file (sort @files) {
        my $file_name = basename ($file);
        my @new_file_name=split/_/,$file_name;
        print OUT"\t$new_file_name[0]";
}
print OUT"\n";

   for my $num (sort keys %data) {
        for my $pos (sort keys %{$data{$num}}) {
                print OUT"$num\t$pos";
                for my $file (sort @files) {
                        my $file_name = basename ($file);
                        if (exists $data{$num}{$pos}{$file_name}) 
                        {
                                print OUT"\t$data{$num}{$pos}{$file_name}";
                        } else 
                        {
                                print OUT"\t.";
                        }
                }
                print OUT"\n";
        }
}      
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容