質問

いたい書けない"DBQuery"機能を含んでいナを送るSQLステートメントを受け、配列のハッシュ、すなわちは、recordset.しかし、私はラインの課題とPerlの書式は(そも奇数ポインタースーパーコンピュータを用いた問題)を防止から梱包の情報からのハッシュをしているところからのデータベースです。サンプルコードを以下に示します。

のデータを取得できます"ジム"のハッシュ内の配列をこの文:

print $records[$index]{'firstName'}

を返します"-ジム-"

だいコピーのハッシュ記録の配列に独自のハッシュ変数は、その不思議なアクセスのデータとなるハッシュ:


    %row = $records[$index];
    $row{'firstName'};

を返します""(空白)

ここではサンプルコードの問題です。のお役に立てるようです。


my @records = (
   {'id' => 1, 'firstName' => 'Jim'},
   {'id' => 2, 'firstName' => 'Joe'}
);
my @records2 = ();

$numberOfRecords = scalar(@records);
print "number of records: " . $numberOfRecords . "\n";
for(my $index=0; $index < $numberOfRecords; $index++) {

   #works
   print 'you can print the records like this: ' . $records[$index]{'firstName'} . "\n";

   #does NOT work
   %row = $records[$index];
   print 'but not like this: ' . $row{'firstName'} . "\n";

} 
役に立ちましたか?

解決

入れ子のデータ構造体にハッシュ 参考, ではなく、ハッシュ.

# Will work (the -> dereferences the reference)
$row = $records[$index];
print "This will work: ", $row->{firstName}, "\n";

# This will also work, by promoting the hash reference into a hash
%row = %{ $records[$index] };
print "This will work: ", $row{firstName}, "\n";

だった深いPerlのデータ構造、利益からの印刷を用いて データ::ダンパー 印刷で人間が読む(Perl-構文解析可能な)形式です。

他のヒント

配列のハッシュになっハッシュを含まな 参考文献 めのハッシュ.このライン:

%row = $records[$index];

付け%列と入力します。鍵は、 スカラー:

   {'id' => 1, 'firstName' => 'Jim'},

を参照のハッシュの値は空白にします。

何をしたいです

$row = $records[$index];
$row->{'firstName'};

釈:

$row = %{$records[$index];}
$row{'firstName'};

その他たハッシュvs hashrefs.一つのものを感じるべきではなく平和的話し合いを行い、おDBQuery機能のようでいいというのは、とても部分に内蔵していますDBI?かご質問に正解でしようとしているこのようなものを再現 selectall_arrayref:

このユーティリティメソッドを併せ持"準備"、"execute"、"fetchall_arrayref"を単一ます。を返しますへの参照を格納する配列への参照の配列(またはハッシュ、下記を参照してください)各行のデータを取得.

追加の回答、またしなければなりません、いつも、いつもあり、"常に"es)を使用利用"警告"上部のコードです。またいいの警告"参照の見所もサイズのリストが期待で-eライン1."

だったの配列はhashrefではなく、ハッシュ.だが理解できないようなこのコンセプトそのも価値の読み込み perlref ます。

のハッシュだけ

my %hash = %{@records[$index]};

例えば.

my @records = (
     {'id' => 1, 'firstName' => 'Jim'}, 
     {'id' => 2, 'firstName' => 'Joe'}
  );

  my %hash = %{$records[1]};

  print $hash{id}."\n";

が.なんなのか、なぜいいのない限り、そのための学術目的での利その他いかfetchall_hashref/fetchall_arrayref、DBIモジュールを使うクラス::DBI.

も良いperlムを利用する

for my $rowHR ( @records ) {
   my %row = %$rowHR; 
   #or whatever...
}

反復処理の一覧です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top