これをエスケープする方法はわかりませんでした。2つのループの内側にある変数を出力します。
私は変数$rfam_column
を印刷したいと思います。これは2つのループの内側にあります。しかし、$rfam_column
が表示されている場所の直後にprint
コマンドを書くことはできません。なぜなら、ループ外にある他のものを印刷して印刷されたコンテンツに結合したいからです。
ここで間違っていることについては助言をいただきたいと思います。
use warnings;
use strict;
my $in;
GetOptions('input' => \$in) or die;
if ($in) {
my $input = $ARGV[0] or die;
open (my $fh, '<', $input) or die "Can't open $input $!\n";
chomp (my @db_file = <$fh>);
close $fh;
my @list = grep /RNA/, @db_file;
my $column;
my @column =();
foreach $column (@list) {
my @all_columns = split (/\t/, $column);
my $rfam_column = $all_columns[0];
# insert "|" between RFs
foreach $_ ($rfam_column) {
s/^/|/;
}
}
}
print "$rfam_column";
Global symbol "$rfam_column" requires explicit package name at script_vbeta.pl line 90. Execution of script_vbeta.pl aborted due to compilation errors.
すべてのコード入力の情報を含めるように編集 - 示唆されるように出力を:
入力ファイルは、このようなn行対n列を有するテーブル(Iありますそれ以外の場合は、1行で表現するのにはかなり時間がかかります)。
RF00001 1302 5S ribosomal RNA
RF00006 1307 Vault RNA
RF00007 1308 U12 minor spliceosomal RNA
RF00008 1309 Hammerhead ribozyme (type III)
出力は次のようになりますこの:
|RF00001|RF00006|RF00007
とコード(使い方:script.pl -i INPUT_FILE):
use warnings;
use strict;
use Getopt::Long;
Getopt::Long::Configure("pass_through");
my $in;
GetOptions('input' => \$in) or die;
if ($in) {
my $input = $ARGV[0] or die;
open (my $fh, '<', $input) or die "Can't open $input $!\n";
chomp (my @db_file = <$fh>);
close $fh;
my @list = grep /RNA/, @db_file;
my $column;
my @column =();
foreach $column (@list) {
my @all_columns = split (/\t/, $column);
my $rfam_column = $all_columns[0];
# insert "|" between RFs
foreach $_ ($rfam_column) {
s/^/|/;
}
}
}
print "$rfam_column";
をしたいと思いますし、どのような出力、あなたの本当のプログラムをご提示ください – ysth
欠けています。あなたが 'Undefined subroutine&main :: GetOptions'で死んだことを示しています – Borodin
あなたがプログラムを読みやすくするためには、多くの助けになります。 ysthと私はあなたのためにここでそれを読んでくれました。 – Borodin