是把 substr 切割结果放到 %hash 里,不是弄成 @DB_a建议你把完整程式码跟输入的资料直接贴到 GitHub Gist
https://gist.github.com/ 方便更多其他板友也能回答这边的概念是把 Perl 原生的 hash 型别来拿当作 set 用若存在一个 key 在某个 hash 容器中,key 肯定是唯一的举例像 $hash{"ATCG"} = 1; 这就是字串 ATCG 当键值对应的资料可任意的指定,上述的例子是一个数字 1你在第一层循环时,我猜你会将输入资料用 substr 切割因为你在第二层循环写说要跟 substr 的结果做比较因此储存到 %hash 的资料就会是那些 substr 的小片段由于 Perl 的 %hash 具备常数时间复杂度 O(1) 的能力在新增资料到 %hash 或者比较某个 key 是否在 %hash都是 O(1),进而使用"内存空间"来换取"CPU时间"