2017-02-23 75 views
0

我想用Perl檢查一個目錄是否存在於UNIX系統中。用Perl檢查一個目錄是否存在

while (my @row = $sth->fetchrow_array) { 
    my $id = $row[0]; 
    my $hash = $row[1]; 
    my $direction = '/home/users/' . $hash 

    if(-d $direction){ 
     print "$direction exists"; 
    } 

} 

但我得到這個錯誤:

Global symbol "$direction" requires explicit package name at Perl.pl line 31. syntax error at Perl.pl line 31, near "){" syntax error at Perl.pl line 35, near "}" Execution of Perl.pl aborted due to compilation errors.

線31在這種情況下是:

if(-d $direction) 

任何想法?

+4

使用'strict'的好工作! :) – simbabque

回答

5
my $direction = '/home/users/' . $hash 

此行缺少分號,導致編譯錯誤。

4

如果你在的BLOCK(near ") {")開始出現語法錯誤的ifunlesswhileuntilforforeachwhen聲明,檢查前面的語句丟失了分號(; )。

同樣,如果您在C語言的語句(for (...; ...; ...;) { ... })的分號(near "<something>;")處遇到語法錯誤,請檢查前面的語句是否缺少其分號(;)。


如果你的意思寫

f(); 
if (g()) { h() } 

,但你寫

f() 
if (g()) { h() } 

的Perl認爲你之前的程序

f() 
if (g()) HERE { h() } 

,因爲還缺少一個分號以下是有效的Perl:

f() if (g()) 
相關問題