我有这个字符串和哈希:
输入数据:
my $string = 'GATGCAGTTAGGCGTAGCAGAGTGAGACGACGACGATATTAGGACCCGGTAAGGCACAATATAGC';
my %coord_colors = (
10 => "red",
48 => "orange",
60 => "purple",
);
Run Code Online (Sandbox Code Playgroud)
我想要做的是在每个散列键位置"打开"字符串,并插入键值.查看所需的输出以了解我正在尝试解释的内容:
期望的输出:
GATGCAGTTAredGGCGTAGCAGAGTGAGACGACGACGATATTAGGACCCGorangeGTAAGGCACAATpurpleATAGC
Run Code Online (Sandbox Code Playgroud)
我知道substr和split函数是如何实现的,但我并没有激发如何"同时"分割几个部分的字符串,然后引入另一个字符串,最后加入.我已经考虑过做一个循环,并在添加第一个位置的同时改变位置,但我想知道找出这个任务的最佳方法.
您可以使用substr()左值并开始从右侧替换字符串,
my $string = 'GATGCAGTTAGGCGTAGCAGAGTGAGACGACGACGATATTAGGACCCGGTAAGGCACAATATAGC';
my %coord_colors = (
10 => "red",
48 => "orange",
60 => "purple",
);
substr($string,$_,0) = $coord_colors{$_}
for sort { $b <=> $a } keys %coord_colors;
print $string;
Run Code Online (Sandbox Code Playgroud)
产量
GATGCAGTTAredGGCGTAGCAGAGTGAGACGACGACGATATTAGGACCCGorangeGTAAGGCACAATpurpleATAGC
使用正则表达式,
$string =~ s|.{$_}\K|$coord_colors{$_}|s
for sort { $b <=> $a } keys %coord_colors;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |