perl Can't use string Cxxx) as a symbol ref while "strict refs" in use at XXXX.pl錯誤


今天寫腳本遇到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 文件句柄和函數不能使用相同的名字,以后再遇到類似的錯誤,注意檢查一下文件名和分號

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM