識別子のリストを開き、別のファイルで一致するものを見つけたいです。このために、スクリプトごとにシステム関数として grep を使用しました。しかし、どこが間違っているのかわかりません。構文について教えてください。お時間をいただきありがとうございます!
open F, "$ARGV[0]" or die;
while(<F>)
{
`grep -A1 "$_" CAM_PROJ_BATS.read.fa > $_.txt`;
}
出力を期待していた場合は、何も表示されないため、何も表示されません。出力を表示するには、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がないためテストしていません)。