2013-08-05 163 views
-1
$dir =~ s/\$\&/\$src/g; 
$pattern =~ s/\$\&/\$src/g; 

$dir1 = eval($dir); 
$file = eval($pattern); 

關於上述問題,$ dir是一個目錄,$ pattern是某個文件名的模式。 eval完成了什麼?似乎它將字符串中的$ &替換爲變量& src作爲字符串文字,但eval如何在目錄路徑或文件名上工作?目錄路徑上的eval是什麼?

回答

0

事實上,這些字符串碰巧包含類似路徑的信息與它所做的無關。

第2行用'$ src'替換'$ &'。

第2行(evals)強制重新插入字符串,用$ src的內容替換'$ src'。 (當然,還可以擴展任何其他在字符串中命名的變量)。

除非你離開了一些重要的東西,這些可以都在一個單一的步驟通過從替代替換字符串反斜線完成,像($dir1 = $dir) =~ s/\$\&/$src/g