2017-10-16 57 views
1

有沒有辦法將string變量插入code? 這就是我想要做的,當然它甚至不會編譯。Perl 6使用字符串編碼

my $cmd = " + 5 "; 
my $a = 3; 

$a = $a { $cmd }; 
say $a; 
+0

爲什麼'$ cmd'是一個字符串呢?它不應該是一個功能嗎? – melpomene

+0

當然,我明白如何用'sub'來做到這一點。這個問題(可能是一個愚蠢的問題)是,是否可以用'string'來做到這一點。 –

+3

'我的$ cmd = * + 5;'更好。那麼你可以做'$ a。= $ cmd;' –

回答

3

你可以嘗試使用EVAL,但請注意,使用EVAL是危險的,如果你沒有在那個將要計算的字符串完全控制(例如,考慮這樣的東西EVAL 'shell "rm -rf *"'):

use MONKEY-SEE-NO-EVAL; 
my $cmd = " + 5 "; 
my $a = 3; 
$a = EVAL(EVAL '$a ~ $cmd'); 
say $a; 

輸出

8 

$a = EVAL(EVAL '$a ~ $cmd')將串聯運算符合併到要評估的字符串中。如果沒有必要,你可以簡化爲$a = EVAL($a ~ $cmd)(如@ W4anD0eR96所示)

+0

謝謝!是的,我明白了,這真的很危險...... –