Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 编译时出现Perl语法错误-“;使用「;不允许在表达式中使用_Macos_Perl_Perlbrew - Fatal编程技术网

Macos 编译时出现Perl语法错误-“;使用「;不允许在表达式中使用

Macos 编译时出现Perl语法错误-“;使用「;不允许在表达式中使用,macos,perl,perlbrew,Macos,Perl,Perlbrew,请容忍我,因为我是Perl新手,但我在编译use语句时遇到了一个错误,但我不完全确定为什么会出现这样的错误。我在Mac Sierra上使用perlbrew。perl版本是5.26.1 我不太确定从哪里开始。我做了一点研究,发现唯一接近我需要的是一条无效的shebang线,我没有使用它。我尝试了一个有效的shebang行没有改变 我确实评论了这句冒犯的话,看看会发生什么,但下一句就失败了,所以这是我的使用声明 use warnings; use strict; # Lib Folders; us

请容忍我,因为我是Perl新手,但我在编译use语句时遇到了一个错误,但我不完全确定为什么会出现这样的错误。我在Mac Sierra上使用perlbrew。perl版本是5.26.1

我不太确定从哪里开始。我做了一点研究,发现唯一接近我需要的是一条无效的shebang线,我没有使用它。我尝试了一个有效的shebang行没有改变

我确实评论了这句冒犯的话,看看会发生什么,但下一句就失败了,所以这是我的使用声明

use warnings;
use strict;

# Lib Folders;
use lib "/Users/user/perl5/lib/perl5/darwin-thread-multi-2level"

# Load Modules
use DBI;
use DBD::MariaDB;
use Text::CSV;
use Excel::Writer::XLSX;
use Time::Piece;
use Log::Log4perl qw(get_logger);
因为我无法编译超过这一点,所以我无法验证除此之外的任何东西是否都不起作用。我不知道为什么这会导致错误

如果我正确地编写了所有其他内容,我会期望出现另一个编译错误或成功编译

"use" not allowed in expression at report.pl line 8, at end of line
syntax error at report.pl line 8, near "use DBI"
BEGIN not safe after errors--compilation aborted at report.pl line 9.
Command terminated with non-zero status.
Command [perl report.pl] terminated with exit code 255 ($? = 65280) under the following perl environment:
Current perl:
  Name: perl-5.26.1
  Path: /Users/user/perl5/perlbrew/perls/perl-5.26.1/bin/perl
  Config: -de -Dprefix=/Users/user/perl5/perlbrew/perls/perl-5.26.1 -Aeval:scriptdir=/Users/user/perl5/perlbrew/perls/perl-5.26.1/bin
  Compiled at: Jun  4 2019 12:12:08

这是当我运行
perlbrew exec perl report.pl
时终端给我的信息。我一定漏掉了什么,但我不确定具体漏掉了什么。

您在
use lib“…”
行的末尾漏掉了一个分号。

您在第5行的末尾漏掉了一个分号


调试错误消息时的一个好的一般规则是检查报告发生错误的行之前的行。

在Perl中,始终检查分号。我想你少了一个,所以是个分号。关于错误报告的注意事项:Perl的诊断输出非常出色。但在某些情况下,它只是无法确定,然后你需要从它报告问题的地方往回看,仔细阅读你的代码。。。然后简单地找出错误。我认为可以公平地说,最愚蠢的语法错误是最难捕捉的(因为它们允许perl继续运行,直到稍后出现错误时才会崩溃),谢谢你的提示,但我不觉得自己像个傻瓜。但是它在编译DBI模块时自然会失败。@Marisa-正如这个答案所说,从报告的行中回顾一下。在本例中,Perl看到命令
use lib“…”use DBI
use lib“…”
部分没有问题,但随后它点击了
use DBI
,并在那一点上知道有问题,但它不确定问题到底是什么,因此它报告问题“接近
use DBI
”。例如,如果将
print
语句放在缺少的分号后面,则错误将报告为“near
print
”——它与DBI模块完全无关。