ハッシュを格納するためにグローバル%ENVを(ab-)使用します。これは%ENVでは通常のハッシュよりも異なるように見えます。下のプログラムでは、$ENV{myhash}
にはまだ'myhash' => 'HASH(0x7ffad8807380)'
が含まれており、%ahash
は依然として周囲にあります。その文字列を単に格納するのではなく、その位置のポイントに戻ることが可能ですか?私は、代わりにハッシュをシリアライズしてシリアル化することができたと思います。これを行う正しい方法は何ですか?perlが%でハッシュを格納ENV
#!/usr/bin/perl -w
use common::sense;
use Data::Dumper;
my %QENV = (nohash => 'noh');
my %ahash= (hv1 => 'htext1', hv2 => 'htext2');
$QENV{'myhash'} = \%ahash;
print "works: ". Dumper(\%QENV)."\n\n\n";
$ENV{'myhash'} = \%ahash;
print "fails: ". Dumper(\%ENV)."\n";
いいえ。システム環境変数はperlとは関係ありません。 perlのデータ構造を格納することはできません。プレーンテキストにシリアル化してから、そのシリアル化されたテキストをvarに格納する必要があります。 –
これをやりたがっている理由は何ですか? – stevieb
たとえば、あるモジュールでhttpセッションハッシュを%ENVに保存すると、他のperlモジュールやルーチンがhttpセッションが存在するかどうかを確認できます。私たちがそれを持っているかどうかによって違うことをしているだけで、定義された($ ENV {'myhash'}と... ...)の実行だけで、私は '' no strict vars ''のトリックを知っていますか?私は%ENVがプロセス自体にバックアップを継承していないと考えました –