0

私は私を夢中にさせようとしています。

私は大丈夫だと思われる配列を持っています。私の配列には、ファイル名(キーとして)と配列の値のフルパスが含まれています。私はそれが動作していることを確認しました..ここまではOKです。これが私のコードです:

open (FILE, "comb_d.txt");
@l = <FILE>;
foreach $line (@l) {
    chomp($line);
    my @linea = split(/separator/,$line);
    $hash_d{$linea[0]} = $linea[1];
}

私が言ったように..私がそれを確認したので、それは動作します:

foreach my $llave (keys %hash_o) {
    print "$llave = $hash_o{$llave}\n";
}

そして、問題なく完全なハッシュが得られます..

ここで問題が発生します。アレイですべてのファイル名 (すべてのキー) を使用するのではなく、それらのセットだけを使用します。実際には、に格納されているキーのセットがあります@isect。しかし、私が実行すると:

foreach my $llave ( @isect ) {
    print "$llave = $hash_o{$llave}\n"; 
}

私の結果は次のとおりです。

filename1 = 
filename2 = 

@isectの要素が のキーとして存在することは確かです%hash_o

助けてください

ありがとう!!

4

1 に答える 1

1

このようなもののために、Data::Dumperあなたの友達です。

use Data::Dumper qw<Dumper>;

...

    $hash_d{$linea[0]} = $linea[1];
    say Dumper( \%hash_d );
}

そして後で:

say Dumper( \@isect );
say Dumper( \%hash_o );

あなたはData::Dumper軽食のために何をするかをするのに多くの時間を費やしています。そして、これを行おうとするたびに、それはPerlコードであり、Perlに慣れていない可能性があるため、解決策を実行するのではなく、デバッグコードのデバッグに時間を費やしています。

注:ここで説明するように、オブジェクト指向Perlでは、ダンプはオブジェクトのAPIを読み取るための許容可能な代替手段ではありません。しかし、特に祝福されていないハッシュ(またはを参照)では、取得方法を知りたいのは構造化されたデータだけであり、それが進むべき道です。blessperlobj

最後に、私のお気に入りのツールはSmart::Commentsです。これを行う場所:

use Smart::Comments;
...
### %hash_d
### @isect
### %hash_o

そして魔法を見てください。

于 2013-02-19T15:54:32.967 に答える