2012-07-05 4 views
2

아래 perl 오류가 발생합니다.perl strict ref error

Can't use string ("") as a symbol ref while "strict refs" in use at test173 line 30. 

아래 코드를 붙여 넣습니다. 30 행은 열린 진술입니다. open 문에서 이 실패했습니다. 스크립트에 use strict;use warnings;이 있습니다. 오류는 무엇을 나타 냅니까? 오류를 해결하기 위해 코드를 어떻게 변경합니까?

my $file = 'testdata'; 
open($data, '<', $file) or die "Could not open '$file'\n"; 
print "file data id:$data\n"; 
@iu_data = <$data>; 
$totalLineCnt = @iu_data; 
print "total line cnt: $totalLineCnt". "\n"; 

답변

5

이전에 $ data에 값을 할당하지 않았는지 확인하십시오. 당신이 그것을 사용하기 전에 $data을 정의를 해제 할 수 있습니다 또는

use strict; 
my $data = ''; 
{ 
    my $data; 
    open($data, '<', 'test.txt'); 
    close($data); 
} 

: 당신은 새로운 영역을 만들어 예를 들어 문제를 해결할 수 있습니다

use strict; 
my $data = ''; 
open($data, '<', 'test.txt'); 

: 난 그냥 세 가지 라인으로 문제를 재현 할 수

use strict; 
my $data = ''; 
undef $data; 
open($data, '<', 'test.txt'); 
close($data); 

기타 ...