1

文字列を含むファイルから部分文字列を抽出しようとしています。ファイルは次のようなものです:

    >scaffold30     24194
    CTTAGCAGCAGCAGCAGCAGTGACTGAAGGAACTGAGAAAAAGAGCGAGCTGAAAGGAAGCATAGCCATTTGGGAGTGCCAGAGAGTTGGGAGG GAGGGAGGGCAGAGATGGAAGAAGAAAGGCAGAAATACAGGGAGATTGAGGATCACCAGGGAG.........
    .................

部分文字列の抽出には、部分文字列の開始と終了の座標を持つファイルを使用しています。私が書いたスクリプトは次のとおりです。

open my $coords_info, $coords_file or die "Could not open $coords_file: $!";
open my $chr_info, $chrom or die "Could not open $chrom: $!";
my $count = 0;


while(my $sline = <$chr_info>) {
    if ($sline!~ m/^>/) {
            chomp $sline;
            print $sline;
    foreach(my $cline = <$coords_info>) {
            my@data = split('\t', $cline);
            my $start = $data[0];
            my $end = $data[1];
            my $offset = $end - $start;
           $count++;
           my $sub = substr($sline, $start+1, $offset);
           print ">conserved $count\n";
           print $sub;
            }
    }
}

私の問題は、ファイルのすべての文字列を sline 変数にロードすることです (各反復で行ごとにロードするのではなく、その後、foreach で部分文字列を抽出するのではありません。些細な問題に聞こえることはわかっていますが、助けてください?? ありがとう...

4

2 に答える 2

2

ズルズルしたいようです。

Perl Maven投稿は、Slurp の原則に専念しています。ゼロから実装する方法、またはCPAN モジュールから File::Slurp モジュールを使用して実装する方法について説明します。

別のアプローチは、Chromatic で説明されているこのワンライナーを使用することです。

my $contents = do { local $/ = <$fh> };

Perl6::Slurpモジュールは、Perl 6 slurp組み込み関数を実装する便利な方法でもあります。

于 2013-08-29T11:48:07.793 に答える