我正在尝试检查具有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)
有什么想法吗?
答案 0 :(得分:5)
my $direction = '/home/users/' . $hash
此行缺少分号,导致编译错误。
答案 1 :(得分:4)
如果您在near ") {"
,if
,unless
,while
,{until
的BLOCK(for
)开头遇到语法错误,{ {1}},foreach
或when
语句,检查前一个语句是否缺少分号(;
)。
同样,如果您在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())