Dav*_*d B 6 string quotes perl
我通常使用简单的引号,但有时我得到很长的行,我不能打破,也需要使用转义字符,所以我得到这样的东西:
my $str = "select query_accession,query_tag,hit_accession,hit_tag,significance from summaryTables where query_id = \'$query_id\';"
Run Code Online (Sandbox Code Playgroud)
我知道在Perl中有各种其他方法来表示字符串.你会推荐什么?
更新 感谢所有人提供与SQL相关的建议.我学到了一些有价值的东西,但是,我的问题仍然存在(作为一般的问题,不管SQL):是否有一些运算符允许引用而不会捕获换行符?
我现在做的是:
my $str = "123 123 456 sdndfnd sdfdmd " .
"dfsdjkfs 343489 dfjsdj 3 34kdfsk kd " .
"fd kd9534 rfg 546 5";
Run Code Online (Sandbox Code Playgroud)
这很难看.
bri*_*foy 10
我喜欢这里的文档,虽然有些人鄙视它们,因为终结器必须出现在行的开头,尽管你的缩进级别.
my $str = <<"SQL";
SELECT
query_accession,
query_tag,
hit_accession,
hit_tag,
significance
FROM
summaryTables
WHERE
query_id = ?
SQL
Run Code Online (Sandbox Code Playgroud)
我也喜欢格式化我的SQL,所以我可以很容易地看到语句中的结构.
不。Perl 5 的所有字符串创建方法都知道并包含换行符。您可以像在问题中那样使用串联运算符,也可以抽象出解决问题所需的代码:
#!/usr/bin/perl
use strict;
use warnings;
sub single_line {
my @strings = @_;
for (@strings) {
s/\s+/ /g;
s/^\s+|\s+$//g;
}
return wantarray ? @strings : $strings[0];
}
my $sql = single_line "
select query_accession,query_tag,hit_accession,hit_tag,significance
from summaryTables
where query_id = ?;
";
print "[$sql]\n";
Run Code Online (Sandbox Code Playgroud)