我想从当前目录中的所有文件名中删除test.extra
for filename in *.fasta;do
echo $filename | sed \e 's/test.extra//g'
done
Run Code Online (Sandbox Code Playgroud)
但它抱怨没有创建file.echo是确保它正确列出.
我想要一个哈希结构,每个以>开头的行是键,而直到下一个>的行是该键的值:
while (<DATA>) {
$line1 = $_;
chomp($line1);
if ($line1 =~ /^>/) {
while (<DATA>) {
last if $line1 =~ /^>/;
$value .= $_;
}
$hash{$line1} = $value;
}
}
foreach my $key(%hash) {
print "$key :$hash{$key}\n";
}
__DATA__
>label1
line1\n
line2\n
>label2
line1\n
line2\n
Run Code Online (Sandbox Code Playgroud) 我在Perl子查找文件中有一个子程序,我必须传递一个引用值"*/*"作为输入参数,因为它没有引用而抱怨,另一方面在我的子程序中我需要它不加引号(可能是!)问题是我打印值检查,我没有看到任何引用,或任何事情,但可能有一些特殊的隐藏字符或我不知道的东西?当我直接使用*/*时,我的代码正常工作,但是当我将它作为输入参数传递时,我的代码是否正常你有什么想法?
sub findfiles {
$dirname=$_[0];
my @temp = grep {-f} <$dirname>;
print @temp;
}
&findfiles("*/*"); doesnot work
but
sub findfiles {
$dirname=$_[0];
my @temp = grep {-f} <*/*>;
print @temp;
}
Run Code Online (Sandbox Code Playgroud)
做它的工作
在我的脚本中,我正在处理打开文件和写入文件.我发现我尝试打开的文件存在一些问题,文件存在,它不是空的,我正在将正确的路径传递给文件句柄.
我知道我的问题可能听起来很奇怪但是当我调试我的代码时,我在我的脚本中放入以下命令来检查一些文件
system ("ls");
Run Code Online (Sandbox Code Playgroud)
然后我的脚本运行良好,当它被删除它不再正常工作.
my @unique = ("test1","test2");
open(unique_fh,">orfs");
print unique_fh @unique ;
open(ORF,"orfs")or die ("file doesnot exist");
system ("ls");
while(<ORF>){
split ;
}
@neworfs=@_ ;
print @neworfs ;
Run Code Online (Sandbox Code Playgroud) 我有一个不同行的文件,每行都有一个重复的模式.我需要一个propper数据结构来解析我的文件,例如:
cluster1:gene1(genome1) gene2(genome2) gene3(genome3)
cluster2:gene4(genome4) gene5(genome5)
Run Code Online (Sandbox Code Playgroud)
姓名是任意的.
我曾经想过一个哈希数据结构的哈希
%hoh=("cluster1" => {
"gene1"=>"genome1"
"gene2"=>"genome2"
"gene2"=>"genome2"
}, "cluster2" => {
"gene4"=>"genome4"
"gene5"=>"genome5"
}
)
Run Code Online (Sandbox Code Playgroud)
我有两个问题:第一:我如何在每一行中寻找重复的模式?
其次,我如何制作哈希哈希?
编辑:发布Zaid的请求
#!/usr/bin/perl -w
use strict; use warnings;
my %HoH;
while(<DATA>){
my $line=$_;
chomp($line);
my ( $cluster, $genes ) = split (/:/,$line);
$HoH{ $cluster } = { split/[( )]+/ , $genes };
}
foreach $cluster (keys %HoH){
print "$cluster: ";
foreach $genes (keys %{$HoH{$cluster}}){
print "$genes = $HoH{$cluster}{$genes} ";
}
print "\n";
}
__DATA__
cluster1:gene1(genome1) gene2(genome2) gene3(genome3) …Run Code Online (Sandbox Code Playgroud)