私はRed Hat 5.2でApache 2.2.3でmod_perl 2を使用していますが、要求ヘッダーにアクセスしようとしていますが、Apache2 :: RequestRec headers_inメソッド(またはその戻り値)私が期待するように行動していない。mod_perl headers_in not working
コードフラグメント:4月::表へのアクセスとすぐに停止するように表示されて実行に
WARN version 2.000004
WARN r Apache2::RequestRec=SCALAR(0x2ae0598e9ef0)
WARN headers APR::Table=HASH(0x2ae06cad15a0)
が試みられている。
$logger->warn('version ' . $mod_perl::VERSION);
$logger->warn('r ' . $r);
my $headers = $r->headers_in;
$logger->warn('headers ' . $headers);
my $accept = $headers->get('Accept');
$logger->warn('got $accept');
$logger->warn($accept);
は、次のログ出力を提供します。
my $accept = $headers->{Accept};
が正確に同じログ出力を与える:すなわちにget('Accept')
ラインを変更 - 4月::テーブルの 縛らインタフェースが同じ効果を有していました。
上記のリンクのドキュメントによると:
この表は、だから私はアクセスできるように、PerlResponseHandler段階で実行されている、私のコードを期待するPerlHeaderParserHandler相
から始まる提供されていますヘッダー。
誰かが私が間違っているアイデアはありますか?
編集:データの使用:: Dumperは事実を全く明確にしていません。
コード:
use Data::Dumper;
$logger->warn(Dumper($r));
my $headers = $r->headers_in;
$logger->warn($headers);
$logger->warn(Dumper($headers));
$logger->warn('have dumped $headers');
が出力:
WARN $VAR1 = bless(do{\(my $o = '47143456365192')}, 'Apache2::RequestRec');
WARN APR::Table=HASH(0x2ae071b06fd0)
だから、でも、実行停止中のデータ:: Dumperの結果を通じて$ヘッダに取得しようとしているようです。
編集:ヘッダーの1つを設定しようとしても失敗します。
$logger->warn('reset accept');
$r->headers_in->{'Accept'}= 'everything';
$logger->warn('post set accept');
停止は
WARN reset accept
時点で出力をログ。私はset(Accept => 'everything')
の代わりに同じ結果を試しました。
$ headersオブジェクトには何がありますか?いくつかのData :: Dumper出力を表示できますか? –