2016-12-02 69 views
-2

需要獲取存儲在perl中任何變量值的值。 例如 -如何獲取存儲在perl中任何變量值的值

$a = 'b'; 
$b = '10; 

現在如何使用$一個獲取價值$ B;

+0

'$ a'是一個(標量)_variable_,它具有字符串'b'作爲它的值(用引號''b''編碼)。你詢問的這個'$ b'會是另外一些完全不相關的_variable_。 – zdim

+0

@zdim好的..有沒有辦法做到這一點.. – sas

+0

但是,做什麼?你說「_fetch value'$ b'_」 - 你是什麼意思?沒有值'$ b' - 這將是一些其他變量。你的代碼'$ a ='b''裏面沒有「_value'$ b'_」。 – zdim

回答

-3

我不會在我自己的代碼中親自使用這種方法,但考慮到您提出的問題,您可以使用eval來評估一個變量的字符串值作爲另一個變量的Perl變量名稱。

perl -e '$a='b'; $b=20; print eval("\$$a"), "\n";' 
20 

但是,這不是一個很好的做事方式。如果你解釋了爲什麼你希望能夠根據另一個變量中的字符串名稱從一個變量中獲取值的目的,也許你的問題會得到更好的答案。

+2

' s /不是一個好方法/一個非常糟糕的方式/' – Sobrique

+2

'eval'是誤導性的:不需要它。'perl -e'$ a ='b'; $ b = 20;打印$$ a,「\ n」'工作得很好 – Borodin

+0

@Borodin - 哦,我沒有意識到, –

1

你正在做的事情叫做symbolic reference。在版本5之前,這是Perl使用引用的唯一方法。如今,它被認爲已被棄用,應該避免。改爲使用散列。我只是提供一個例子,所以你可以在任何你必須維護和消除的代碼中發現它。

符號參考僅適用於動態變量,即變量聲明爲ouruse 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使用,並可能導致混淆。

相關問題