我正在编写一个代码来创建以数组中的一列命名的文件,然后在其中包含另一列的所有常用值.我已成功完成此操作,但现在我想消除文件名之间的空白区域并将其转换为下划线.我怎么做?
#!/usr/local/bin/perl
use strict;
my @traitarray;
my $traitarray;
my $input ;
my %traithash ;
my $t_out ;
my $TRAIT;
my $SNPS;
open ($input, "gwas_catalog_v1.0-downloaded_2015-07-08") || die () ;
while(<$input>) {
@traitarray = split (/\t/);
$TRAIT = $traitarray[7];
$SNPS = $traitarray[21];
if (!exists $traithash {$TRAIT}) {
open ($t_out, ">outputFiles/".$TRAIT.".txt");
print ($t_out "$SNPS\n");
$traithash {$TRAIT} = 1 ;
push (@traitarray, $TRAIT) ;
}
else {
print $t_out "$SNPS\n";
}
}
foreach ($traitarray) {
close "$TRAIT.txt";
}
Run Code Online (Sandbox Code Playgroud)
我曾尝试寻找答案,但许多问题要么包含其他内容,要么在bash终端中如何解决这个问题,我还不熟悉,因为我还是新编码.
该文件是10947980行,有33列.
我一直在研究一个项目,我基本上要说下一个目标
"在第[27]栏中,如果值大于
10^-8删除文件"
如何写10^-8一个程序?
#!/usr/local/bin/perl
use strict;
use warnings;
my @traitarray;
my $traitarray;
my $input ;
my %traithash ;
my $t_out ;
my $TRAIT;
my $SNPS;
open ($input, "gwas_catalog_v1.0-downloaded_2015-07-31.tsv") || die () ;
while(<$input>) {
@traitarray = split (/\t/);
$TRAIT = $traitarray[7];
$SNPS = $traitarray[21];
if (!exists $traithash {$TRAIT}) {
$TRAIT =~ tr/ /_/ ;
$TRAIT =~ tr/:/-/ ;
$TRAIT =~ tr/\//-/ ;
$TRAIT =~ tr/*/-/ ;
open ($t_out, ">outputFiles/".$TRAIT.".txt");
print $t_out "$SNPS\n";
$traithash {$TRAIT} = 1 …Run Code Online (Sandbox Code Playgroud)