私のコードのあるセクションではうまくいくが、別のセクションではうまく機能しない変数があります。私は非常に長いコードを切り詰めて、何が起こっているのかを理解しようとします。問題の変数には単に「$ QuestionableVariable」という名前を付けます。Perl:変数がSCALAR(0x7faf2b804240)として表示されます
#!/usr/bin/perl
use warnings;
use strict;
my $QuestionableVariable = LongSubroutine("file.txt");
my $WindowSize = 16;
my $StepSize = 1;
my %hash =();
for (
my $windowStart = 0;
$windowStart <= 140;
$windowStart += $StepSize
)
{
my $Variable_1 = substr($$QuestionableVariable, $windowStart, $WindowSize); #here $QuestionableVariable works well
my $Variable_2 = 'TAGCTAGCTAGCTAGC';
my $dist = AnotherLongSubroutine($Variable_1, $Variable_2);
$hash{$dist} = $Variable_1;
ここでは、読みやすさのために長いサブルーチンを省略します。私は彼らがエラーなしに私の期待される出力を生成すると信じているので、私は彼らがこの問題を解決するのに役立たないと仮定しています。 $ QuestionableVariableは上のコードセクションではうまくいきますが、私はプログラムがうまく動作しないサブルーチンが出現した後にそれを表示します。
my @keys = sort {$a <=> $b} keys %hash;
my $BestMatch = $hash{keys[0]};
print "Distance_of_Best_Match: $keys[0] Sequence_of_best_match: $BestMatch", "\n", "$QuestionableVariable", "\n";
コードがエラーなしで実行されますが、$ QuestionableVariableの値の代わりに私がSCALAR(0x7faf2b804240)を取得します。 代わりに変数の値を取得するにはどうすればよいですか? ありがとう
ところで、 'my%hash =();'は冗長です。単に 'my%hash;'と書くことができます。 – melpomene