文字列と複雑なデータ構造はまったく別のものです。
文字列は、コードポイント/書記素/バイトのシーケンスです(探している方法によって異なります)。文字列はばかげています。文字列は、複雑なデータや階層データを含めるのが苦手です。(場合のポイント:XMLは純粋な苦痛です)
ただし、参照を使用して、任意のPerlデータ構造をスカラー変数に入れることができます。角かっこは、匿名配列への参照を作成します。
これらの行のグループは、変数名が導入されていることを除いて同等です。
DataB::testTable::Manager->get_testTable( query => [ id => $id, name => $name ] );
my @query = (id => $id, name => $name);
DataB::testTable::Manager->get_testTable(query => \@query); # the "\" takes a reference to a value
my @query = (id => $id, name => $name);
DataB::testTable::Manager->get_testTable(query => [@query]); # using "[]" to make the arrayref. The reference points to a copy of @query.
# this solution is probably best:
my $query = [ id => $id, name => $name ]; # "[]" makes an arrayref
DataB::testTable::Manager->get_testTable(query => $query);
データ構造への参照を使用する方が、文字列を使用するよりも優れています。
(を介して文字列をPerlソースコードとして解釈できますeval
。これは非常に強力ですが、すべてが同等のデータ構造に評価できる形式に文字列化されるわけではありません。よく考えられたメタプログラミングを除いて、string-evalを使用しないでください。 。)
参照と複雑なデータ構造の詳細については、perlref、perlreftut、perldscがおもしろいかもしれません。