$self->{DES} ->{$id} = join("\t",@tmp[0 ..7]);
这一行是构造函数所在的perl类内部函数的一部分
sub new {
my $class=shift;
my $self ={};
bless($self,$class);
return $self;
}
Run Code Online (Sandbox Code Playgroud)
我解释它的方式是我们将id行存储为类变量DES,它是一个散列,其成员是$ id:.它是否正确?
我还想对=~运算符进行一些澄清(它似乎总是在正则表达式之前).据我所知,它基本上与python中的相同,re.X其中X依赖于perl中的正则表达式之后的标志(例如i).它是否正确?
我试图理解一段代码循环一个文件,做各种赋值,然后输入一组if语句,其中一个字符串似乎与什么都没有比较.这里有什么/nonsynonymous/和/prematureStop/被比较的?我对python很有经验.
open(IN,$file);
while(<IN>){
chomp $_;
my @tmp = split /\t+/,$_;
my $id = join("\t",$tmp[0],$tmp[1]-1);
$id =~ s/chr//;
my @info_field = split /;/,$tmp[2];
my $vat = $info_field[$#info_field];
my $score = 0;
$self -> {VAT} ->{$id}= $vat;
$self ->{GENE} -> {$id} = $tmp[3];
if (/nonsynonymous/ || /prematureStop/){...
Run Code Online (Sandbox Code Playgroud) 如果我在perl中有这条线
$cds_score{$score}{$id} = 1;
Run Code Online (Sandbox Code Playgroud)
其中cds得分是一个哈希,最好的python等价
cds_score = {}
cds_score[score] = id
Run Code Online (Sandbox Code Playgroud)
从更一般的意义上讲,我很困惑为什么我经常在perl的哈希末尾看到= 1.在python中,似乎更有意义的是使这些列表附加而不是像{NC} -> {$id} =1我在python中写的那样的dict NC.append(id).这个想法只是在perl中存储长列表作为哈希比作为数组更好,如果你试图查找任意成员?
我有两个单独的数据库文件,每个文件的表都具有匹配的主键,但数据不同。我想根据另一个表中的值从一个表中提取行。在 CLI for 中sqlite3,我会这样做:
.open data.db
.open details.db
attach 'data.db' as data;
attach 'details.db' as details;
select details.A.colA from data.A join details.A using ('key') where data.A.colB = 0 and data.A.colC = 1;
Run Code Online (Sandbox Code Playgroud)
如何使用 重新创建这样的跨数据库连接pysqlite?