在 Perl 5.20中不推荐在变量名中使用文字控制字符:
变量名中的文字控制字符
这种弃用会影响源代码$\cT
中\cT
的文字控件(例如 aNAK
或NEGATIVE ACKNOWLEDGE
字符)之类的东西。令人惊讶的是,最初这似乎是作为访问变量的规范方式,例如$^T
,插入符号形式仅作为替代添加。
文字控制形式被弃用有两个主要原因。它有一些可能无法修复的错误,例如$\cI
不能作为. [perl #119123]$^I
$^T
\cT
导致此问题的代码已在 2016 年通过此提交在PintOS 中修复:
committer Ben Pfaff <blp@cs.stanford.edu>
Tue, 9 Feb 2016 04:47:10 +0000 (20:47 -0800)
Modern versions of Perl prefer a caret in variable names over literal
control characters and issue a warning if the control character is used.
This fixes the warning.
diff --git a/src/utils/pintos b/src/utils/pintos
index 1564216..2ebe642 100755 (executable)
--- a/src/utils/pintos
+++ b/src/utils/pintos
@@ -912,7 +912,7 @@ sub get_load_average {
# Calls setitimer to set a timeout, then execs what was passed to us.
sub exec_setitimer {
if (defined $timeout) {
- if ($\16 ge 5.8.0) {
+ if ($^V ge 5.8.0) {
eval "
use Time::HiRes qw(setitimer ITIMER_VIRTUAL);
setitimer (ITIMER_VIRTUAL, $timeout, 0);
Perl 5.26使在变量名中使用文字控制字符成为致命错误。
修复它的方法是确保您使用的是最新版本的 pintOS。该命令git clone git://pintos-os.org/pintos-anon
应该这样做。