簡體   English   中英

評估從文件中讀取的字符串 perl

[英]Evaluate a string read from a file in perl

組成的例子(perl):

my $x = read_input_from_file();

# $x now contains string $ENV{SOMETHING}/dir/$ENV{SOMETHING_ELSE}
my $y = eval($x);  # doesnt work

如何在腳本中獲取 $x 中包含的字符串的值?

到目前為止,我已經嘗試使用不生成任何 output 的eval 。我希望 perl 中已經存在一些東西,並且不需要解析和評估這些字符串表達式。

“字符串”評估有點具體:

eval在其所有 forms 中用於執行一個小的 Perl 程序。
...
在字符串 eval 中,首先解析表達式的值(它本身在標量上下文中確定),如果沒有錯誤,則在當前 Perl 程序的詞法上下文中作為一個塊執行。

所以這會評估代碼,並且對於包含字符串文字的要評估的變量,我們有一個“裸詞”(“未加引號的字符串”),這通常是不好的。 在您的情況下, $x中的那些/會造成額外的麻煩。

如果要評估的變量的內容是字符串文字(不是代碼),則需要引用它

my $y = eval q(") . $x . q(");  # double-quote so that it interpolates

我使用單引號的運算符形式q() 它下面引用的是雙引號,因為$x本身似乎包含需要評估(插值)的變量。

請記住,從外部源運行代碼可能是一個嚴重的安全問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM