0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

-- と -

Last updated at Posted at 2015-07-23

説明

% perl -- - foo
print $ARGV[0] . "\n" ;
^D
  • ^D は、 control + D
  • -- はコマンドラインオプションの終了を示す。
  • - は標準入力を明示するもの。

---perlrun に書かれてはいるものの、-- は説明すらない1

このまま直接、標準入力を編集するのは、いささか使い勝手が悪い。と言う事で。

$ perl -- <<"EOF" - foo
>print $ARGV[0] . "\n" ;
>EOF
  • このヒアドキュメントはシェルのヒアドキュメント。標準入力からのインプットとなるので、
    - を明示しなければならない。
    • - は本来のプログラムファイルを指定する位置に。
    • <<"EOF" の部分はコマンドラインのどこに置いても良い。

活用

perl の捨てスクリプト程ではないが、一つのファイルにして保存するのにはちょっとねえ。だけど、ワンライナーには長すぎる。そんなスクリプトは、上記の機能を使って *ashfunction にして *ashrc にでも入れる。

例えば、

function checkprim(){
    perl -- <<"EOF" - "$@"
    use v5.12 ;
    use warnings ;
    use autodie ;
    my $seq = '' ;
    open my $fh, '<', $ARGV[0] ;
    while (<$fh>){
        chomp ;
        next if />/ ;
        $seq .= $_ ;
    }
    close $fh ;

    ( my $prim = $ARGV[1] ) =~ tr/ACGT/N/c ;
    #( my $prim2 = reverse q{CTNTTNCCNCTTCACTCG} ) =~ tr/ACGT/TGCA/

    for my $i ( 0 .. ( length $seq ) - 1 ){
        my $score = 0 ;
        SEGMENT:
        for my $j ( 0 .. ( length $prim ) - 1 ){
            last SEGMENT if $i + $j >= length $seq ;
            my $q = substr $seq, $i + $j, 1 ;
            my $r = substr $prim, $j, 1 ;
            CHECK:
            {  
                last CHECK if $q eq $r ;
                last CHECK if $r eq 'N' ;
                next SEGMENT ;
            }
            $score ++ ;
        }
        printf "%s\n", join "\t", $score, $i + 1 ;
    }
EOF

}

プライマーを作成した際の簡易的なチェックに使う。
わざわざ、専用のアプリを立ち上げるのも、、、って時に、source しとけば、

$ checkprim SINGLEFASTA ACGTACGTACGT | sort | tail -2

てな事で貼る場所の見当が付く。

論文などに書かれてるプライマー配列は、往々にして R だの Y だの入っているが2、そこはバッサリと N に変換してカウントする形に3

  1. ま、説明の必要もないくらいあからさまに、使い方が示してあるわけで。

  2. http://www.ddbj.nig.ac.jp/sub/ref1-j.html

  3. 丁寧に見るなら、本気でスクリプトを書くか、しかるべきツールを使うかすればいい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?