Perl では、文字列に基づいてグローバル変数を作成することは可能ですか?
たとえば、次のような関数があるとします。
sub create_glob_var {
my ($glob_var_str) = @_;
# something like this ( but not a hash access).
our ${$glob_var_str};
};
そして私はそれを次のように呼びました:
create_glob_var( "bar" );
create_glob_var
というグローバル変数を実際に作成するように変更するにはどうすればよい$bar
ですか?
私のプロジェクトは perl 5.8.5 を使用しています。
編集
以下は機能しません。
use strict;
BEGIN {
sub create_glob_var {
my ($glob_var_str) = @_;
no strict 'refs';
$$glob_var_str = undef; # or whatever you want to set it to
}
create_glob_var("bah");
};
$bah = "blah";
プロデュース:
変数「$bah」が /nfs/pdx/home/rbroger1/tmp2.pl 行 12 でインポートされません。 グローバル シンボル「$bah」には、/nfs/pdx/home/rbroger1/tmp2.pl 行 12 で明示的なパッケージ名が必要です。 コンパイル エラーのため、/nfs/pdx/home/rbroger1/tmp2.pl の実行が中止されました。
注:グローバル変数を使用すると、オゾンが枯渇し、男性型脱毛症が発生することを認識しています。グローバル変数の使用ですでに完全に感染しているいくつかのレガシー コードをクリーンアップしようとしています。一度に 1 つのリファクタリング...