学习Perl6: slice fastq file

需求:
只获取 ath 物种的 hairpin 序列
文件格式如下所示,以>打头的为 header,紧跟的为序列[AUCG]+ (Perl5 regexp 格式

#!/usr/bin/env perl6
my Bool $now = False ;
# 词法变量还是用 my 声明
# 此外,perl5中的 local 在6 中是没有的
# our, state
# temp let 可以作用于声明好的变量上
my  Str $seq;

for @*ARGS[0].IO.lines -> $l {
# Perl5中的 @ARGV 在 perl6 中使用 动态变量@*ARGS 来代替,

  # $now = False ;
  if $l ~~ /^>/ {
 #Perl6 正则中除了 a-z A-Z 和下划线不用转义,其他的都需要转义。
    if $l ~~ /^ > ath / {
 #perl6 正则中的空白可以随便加,不作为匹配部分,你可以副词:s (:sigspace)来关闭
      say $seq.flip.trans('A' => 'T','U' => 'A','C' => 'G','G' => 'C') if $seq.Bool;
       # 把 pri-RNA 转成 cDNA
       # 先反转整个序列,再 AUCG -> TAGC
      $seq = '';
      $now = True ;
      say $l ;
      next
    }else{
      $now = False
    }
  }
  if $now and $l ~~ /^ <[AUCG]> + $/ {
    say $l
  }
}
  1. Perl6的正则表达式和 perl5 不是一会事儿了

文件 hairpin.fa

>ame-mir-9865 MI0031791 Apis mellifera miR-9865 stem-loop
AAGAUGGAAUUGAUUUAUGUGGUGAUUGUGCAGUAGCACAAUUAGAAGCUGAAAAACCAC
UGCACGAUACAUUACAUAGAUUACUUCCUAUUAA
>ame-mir-9866 MI0031792 Apis mellifera miR-9866 stem-loop
GAUGAGAGGAUUCGAGUCGGCGGGGUAUGAGUAAUACGUUCAGGCAUGUACCUCGUAUCC
CCUUGGCUCGCAAUGCCCUCUCCCU
>ame-mir-9867 MI0031793 Apis mellifera miR-9867 stem-loop
UCCUGAGGCAAGACGGUAUGGACGGUAGAGACGAGUCAUGAUCCUCGUCCUGCCGCGUCA
CCGUUAUCCUCAUCC
>ame-mir-9868 MI0031794 Apis mellifera miR-9868 stem-loop
UCGGCGAUAAAAGCUCGGCGUUUCAUCGAUGCCUGGCCUGCUCUUUCCCCGUGGUUAAGC
UCGAUGAAGUCGUCGGGUUUAGCCGG
...
>ath-MIR8167d MI0031739 Arabidopsis thaliana miR8167d stem-loop
CAUCUUUGAGAUUUUACACAGUAGUCAUGGAGUUUUUGGAAGAGAGAAAGUGGAGAUGUG
GAGAUCGUGGGGAUG
>ath-MIR8167e MI0031740 Arabidopsis thaliana miR8167e stem-loop
CAUCUUUGAGAUUUUACACAGUAGUCAUGGAGUUUUUGGAAGAGAGAAAGUGGAGAUGUG
GAGAUCGUGGGGAUG
>ath-MIR8167f MI0031741 Arabidopsis thaliana miR8167f stem-loop
CAUCUUUGAGAUUUUACACAGUAGUCAUGGAGUUUUUGGAAGAGAGAAAGUGGAGAUGUG
GAGAUCGUGGGGAUG
.....
天和地是灰色的,砖和瓦也是灰色的。临街的墙几经风化,几经修补,刷过黑灰、白灰,涂过红漆,书写过不同内容的标语,又终于被覆盖;风雨再把覆盖层胡乱地揭下来,形成一片斑驳的杂色,融汇于灰色的笼罩之中。路旁的树木苍黑,瓦楞中芳草青青。 远处,炊烟缭绕。迷蒙的曙色中,矗立着...
原文地址:https://www.cnblogs.com/raybiolee/p/5615420.html