perlの任意の変数の値に格納されている値を取得する必要があります。例えば - $使用して値を$ bをフェッチする方法を今すぐperlの任意の変数の値に格納されている値を取り出す方法
$a = 'b';
$b = '10;
。
perlの任意の変数の値に格納されている値を取得する必要があります。例えば - $使用して値を$ bをフェッチする方法を今すぐperlの任意の変数の値に格納されている値を取り出す方法
$a = 'b';
$b = '10;
。
Here is a great summary of why it's a bad idea to use a variable as a variable name。
私は幼児に銃を装う方法を教えるようなので、それを行う方法を教えていません。
ここに必要なものはhash
です。ハッシュは、キーと値のペアであるperlデータ構造です。
#!/usr/bin/env perl
use strict;
use warnings;
my %stuff;
$stuff{'b'} = 10;
my $target = 'b';
print $stuff{$target};
素晴らしい感謝.. :-) – sas
私は自分のコードでこのアプローチを個人的に使用しませんでしたが、eval
を使用して1つの変数の文字列値を別の変数のperl変数名として評価することができます。
perl -e '$a='b'; $b=20; print eval("\$$a"), "\n";'
20
しかし、これは素晴らしい方法ではありません。あなたが他の変数の文字列名に基づいてある変数から値を得ることができる理由を説明したなら、あなたの質問はより良い答えになるでしょう。
あなたがしようとしていることは、symbolic referenceと呼ばれています。バージョン5以前では、これがPerlで参照を使用する唯一の方法でした。今日では、推奨されていないと考えられ、避けるべきです。代わりにハッシュを使用してください。私は例を提供しているだけなので、コードを維持して排除する必要があります。
記号参照は、動的変数に対してのみ機能します。つまり、変数はour
またはuse varsで宣言されます。また、それが機能するためにはuse strict refs
をオフにする必要があることに注意してください。
use strict;
use warnings;
my $x = 'y';
our $y = 10;
{
no strict qw(refs);
print ${$x}, "\n";
}
ところで、あなたはまた、$a
と$b
を使用しないようにしてください。それらはPerlのsort
によって使用され、混乱を招く可能性があります。
'$ a'は(スカラー)_variable_であり、値として文字列' b'(引用符 'b'でコーディングされています)を持ちます。あなたが尋ねるこの '$ b'は、他にはまったく無関係な、_variable_でしょう。 – zdim
@zdim Ok ..それを行う方法はありますか。 – sas
しかし、何をするには?あなたは "_fetch value $ b'_"と言っています - それはどういう意味ですか?値 '$ b'はありません。これは他の変数です。あなたのコード '$ a = 'b''には" _value '$ b'_"がありません。 – zdim