今天寫腳本遇到Can't use string ("bond2 Link encap:InfiniBand ") as a symbol ref while "strict refs" in use at test.pl line 的錯誤
google了一下,發現stackoverflow有這樣的錯誤,其中有一個是缺少一個分號導致的
例如:
open (FILE, "ifconfig | "); while (<FILE>) { my $line = $_; print $line sleep 1; }
運行之后是這個錯誤:
Ifconfig is obsolete! For replacement check ip.
Can't use string ("bond2 Link encap:InfiniBand ") as a symbol ref while "strict refs" in use at test.pl line 15, <FILE> line 1
我仔細檢查我自己的代碼,並未發現缺少分號,運行之后依然報錯
我的代碼是:就是運行data命令,把結果寫到data.log中
#!/usr/bin/perl use strict; sub TIME { my $time=readpipe("date"); return "$time\n"; } open(TIME,">date.log") or die "$!\n"; print TIME &TIME; close(TIME);
運行之后是這個樣子
Can't use string (XXXXX) as a symbol ref while "strict refs" in use at test.pl line 8.
並非缺少分號,我又仔細看了,發現函數名和文件句柄名都是TIME,就把文件句柄名改成別的,然后腳本就可以正常運行
原來perl 文件句柄和函數不能使用相同的名字,以后再遇到類似的錯誤,注意檢查一下文件名和分號