-3

識別子のリストを開き、別のファイルで一致するものを見つけたいです。このために、スクリプトごとにシステム関数として grep を使用しました。しかし、どこが間違っているのかわかりません。構文について教えてください。お時間をいただきありがとうございます!

open F, "$ARGV[0]" or die;
while(<F>)
{
    `grep -A1 "$_" CAM_PROJ_BATS.read.fa > $_.txt`;
} 
4

1 に答える 1

2

出力を期待していた場合は、何も表示されないため、何も表示されません。出力を表示するには、print ステートメントを追加します。(出力を確認する必要はないかもしれませんが、少なくとも grep コマンドでエラーを確認するのに役立ちます)。

また、入力ファイルの行の最後に改行があります。おそらくそれをgrepに渡したくありません。実際、改行を追加すると、シェルでのコマンドの実行が台無しになることさえあります。chomp改行を削除するために使用します。

use strict;
use warnings;

open F, "$ARGV[0]" or die "Can't open file: $!";
while(<F>)
{
    chomp;
    print `grep -A1 "$_" CAM_PROJ_BATS.read.fa > $_.txt`;
} 

(grepがないためテストしていません)。

于 2012-10-19T15:03:13.570 に答える