1

を使用してコードを記述しようとしていた場合perl hash。未定義の値や改行はありません__DATA__(ファイルから同じ入力を試みました)。しかし、データダンパーまたは従来の方法を使用して印刷しているときに''、キーとundefその値として取得しています。なぜこうなった ?明らかな何かが欠けていますか?

プログラム:

use strict;
use Data::Dumper;

my %i_hash = undef;
my %p_hash = undef;

while (<DATA>) {
    chomp;
    my @line = split(/\h+/);
    $i_hash{ $line[0] } = $line[1];    # Interactions Hash
    $p_hash{ $line[0] } = $line[2];    # PMIDs Hash

}
print Dumper( \%i_hash, \%p_hash );

__DATA__
AAA     BBB     PMID_1
BBB     AAA     PMID_2
CCC     AAA     PMID_3
DDD     CCC     PMID_4
EEE     FFF     PMID_1
FFF     GGG     PMID_6

出力:

$VAR1 = {
      '' => undef,
      'FFF' => 'GGG',
      'CCC' => 'AAA',
      'BBB' => 'AAA',
      'EEE' => 'FFF',
      'DDD' => 'CCC',
      'AAA' => 'BBB'
    };
$VAR2 = {
      '' => undef,
      'FFF' => 'PMID_6',
      'CCC' => 'PMID_3',
      'BBB' => 'PMID_2',
      'EEE' => 'PMID_1',
      'DDD' => 'PMID_4',
      'AAA' => 'PMID_1'
    };
4

1 に答える 1

3

常に使用してuse warnings;ください!

my %i_hash = undef;
my %p_hash = undef;

与える

Odd number of elements in hash assignment at a.pl line 6.
Use of uninitialized value in list assignment at a.pl line 6.
Odd number of elements in hash assignment at a.pl line 7.
Use of uninitialized value in list assignment at a.pl line 7.

value 要素に値を指定しなかったためundef、警告を発行した後に使用されます。

キーは文字列であり、の文字列化undefは空の文字列ですが、そうすると警告が発行されます。

あなたがしたい:

my %i_hash;
my %p_hash;
于 2013-12-26T04:27:34.503 に答える