我使用的是perl软件包(Biomart),它包含一个名为addFilter()的子程序.该子程序需要一些参数,包括一个需要格式为"nr:nr:nr"的参数.
如果我按如下方式使用子程序,它可以正常工作:
$query->addFilter("chromosomal_region", ["1:1108138:1108138","1:1110294:1110294"]);
Run Code Online (Sandbox Code Playgroud)
但是,如果我像这样使用它,它不起作用:
my $string = '"1:1108138:1108138","1:1110294:1110294","1:1125105:1125105"';
$query->addFilter("chromosomal_region", ['$string']);
Run Code Online (Sandbox Code Playgroud)
由于我在for循环中构造了成千上万的这些参数,我真的需要第二种工作方式......可能导致这种情况的原因是什么?我希望有人可以帮助我,非常感谢!
hob*_*bbs 11
因为你似乎试图用不是Perl的语言写.'"this","that","another"'不是数组,它是一个字符串.并且'$string'不会$string以任何方式进行插值或包含,因为它使用单引号.它只生成一个以美元符号开头并以"string"结尾的字符串.
更像你想要的东西:
my @things = ("1:1108138:1108138","1:1110294:1110294","1:1125105:1125105");
$query->addFilter("chromosomal_region", \@things);
Run Code Online (Sandbox Code Playgroud)
-要么-
$query->addFilter("chromosomal_region", [ @things ] );
Run Code Online (Sandbox Code Playgroud)
要动态构建它,您可以简单地push @things, $value循环或任何您需要的东西.
'$string'字面意思是"$ string"; 变量不会被其内容替换.丢失单引号.
当然,不太可能将引用传递给由单个逗号分隔的字符串组成的数组,其中嵌入了引号,这与将引用传递给字符串数组的方式相同.
尝试类似的东西:
my $ref = ["1:1108138:1108138","1:1110294:1110294"];
$query->addFilter("chromosomal_region", $ref);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |