いくつかのタスクのために Perl プログラムを書くのに苦労しています。私は初心者であり、間違いを理解したいので、すべてのエラーを確認するのに非常に苦労しましたが、失敗しています. 願わくば、これまでのタスクと不完全なプログラムの説明が混乱を招かないことを願っています。
現在のディレクトリには、可変数の「.txt」があります。ファイル。(4、5、8、または任意の数のファイルを持つことができます。ただし、17 個を超えるファイルは得られないと思います。) 「.txt」ファイルの形式は同じです。空白で区切られた 6 つの列があります。これらのファイルの 2 つの列だけが重要です。2 番目の列はサンゴ礁の地域 ID (文字と数字で構成) で、5 番目の列は p 値です。各ファイルの行数は未定です。私がする必要があるのは、すべての .txt ファイルですべての共通の地域 ID を見つけて、これらの共通の地域を出力ファイルに出力することです。ただし、印刷する前に、それらを分類する必要があります。
以下はこれまでの私のプログラムですが、プログラムの後に含めたエラー メッセージを受け取りました。したがって、変数の私の定義は主要な問題です。プログラムを書くための提案があれば本当に感謝しています。
更新: 提案どおりに変数を宣言しました。プログラムを確認したところ、2 つの構文エラーが表示されました。
syntax error at oreg.pl line 19, near "$hash{"
syntax error at oreg.pl line 23, near "}"
Execution of oreg.pl aborted due to compilation errors.
上記のエラーの場所を含む編集済みプログラムの抜粋を次に示します。
#!/user/bin/perl
use strict;
use warnings;
# Trying to read files in @txtfiles for reading into hash
foreach my $file (@txtfiles) {
open(FH,"<$file") or die "Can't open $file\n";
while(chomp(my $line = <FH>)){
$line =~ s/^\s+//;
my @IDp = split(/\s+/, $line); # removing whitespace
my $i = 0;
# trying to define values and keys in terms of array elements in IDp
my $value = my $hash{$IDp[$i][1]};
$value .= "$IDp[$i][4]"; # confused here at format to append p-values
$i++;
}
}
close(FH);
これらは過去のエラーです:
Global symbol "$file" requires explicit package name at oreg.pl line 13.
Global symbol "$line" requires explicit package name at oreg.pl line 16.
#[And many more just like that...]
Execution of oreg.pl aborted due to compilation errors.