私は次のコードを持っている:
しかし、同様のコードがエラーを生成しません:私は、私はエラーを取得するCan't use an undefined value as a HASH reference at ...
some_sub
を呼び出すと
$headers;
some_sub(%$headers);
を
$headers->{ x };
なぜdoesnの」最初の例でも2番目の例と同じようにautovivificationが動作しますか?
UPD
私は@ThisSuitIsBlackNotによって指摘。私は実際に尋ねる:
why my $h; $h->{foo} works and my $h; %$h doesn't
UPD
実際のコード:サブに渡されたとき
my $email = Email::Simple->create(()
,header => [()
,To => $address
,From => $cnf->{ from }
,Subject => $subject
,'Content-Type' => 'text/html; charset="utf8"'
,%$headers
]
,body => $body
);
まあ、エラーメッセージが何を言っていますか? 'HASH参照として未定義の値を使用することはできません...'それはどういう意味ですか?それは '$ headers'について何を伝えますか? –
そのコードは完成していますか?もしそうなら、 '$ headers'はその値として' undef'を持ち、あなたが参照していない 'hash'を逆参照することはできません。あなたは 'use strict;最低限、警告を使用してください。あなたは 'my $ headers = {};を考慮することもできます。 'perl autovivification'のような用語であなたの検索は何を返しましたか?私はGoogleを使い、Wikipedia、Perl Maven、Perl Monksに従うのに役立ついくつかの探している記事を手に入れました。そのうち、[Explaining Autovivification](http://www.perlmonks.org/?node_id=691557)が最も適切と思われます。 –
そのエラーは発生しません。あなたは完全な例を提供できますか? – Schwern