检查Perl是否存在目录

时间:2017-02-23 13:40:33

标签: linux perl

我正在尝试检查具有Perl的UNIX系统中是否存在目录。

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";
    }

}

但是我收到了这个错误:

  

全局符号“$ direction”需要显式包名称   Perl.pl第31行。在Perl.pl第31行附近的语法错误   “){”Perl.pl第35行语法错误,附近“}”执行   Perl.pl由于编译错误而中止。

在这种情况下,第31行是:

if(-d $direction)

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

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

此行缺少分号,导致编译错误。

答案 1 :(得分:4)

如果您在near ") {"ifunlesswhile,{until的BLOCK(for)开头遇到语法错误,{ {1}},foreachwhen语句,检查前一个语句是否缺少分号(;)。

同样,如果您在C-style for语句(near "<something>;")的分号(for (...; ...; ...;) { ... })处遇到语法错误,请检查前一个语句是否缺少其分号(;)。

如果你想写

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

但你写了

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

Perl认为你在BLOCK之前错过了一个分号

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

因为以下是有效的Perl:

f() if (g())