新的perl;得到一些我不确定的错误

时间:2013-02-11 16:43:27

标签: perl

我似乎无法弄清楚为什么我在尝试运行.pl脚本时遇到此错误。

这是脚本:

# mini script for creating diff files in a single directory

# directory of patch files
$patchDir = "c:\oc\Patch Files";

if ($#ARGV != 1 && $#ARGV != 2)
{
    print "Usage: diff <file name> [-s]\n";
    print "Example:  \n";
    print "   |Diff relative to Index (staged)|  :  diff MOM00123456_1.patch \n";
    print "   |Diff Staged|                      :  diff MOM00123456_1.patch -s \n";
    exit;
}

$fileName = $ARGV[0];

if ($#ARGV == 2)
    $stagedArg = $ARGV[1];

if ($stagedArg)
    if ($stagedArg == "-s" || $stagedArg == "-S")
        system("git diff --staged --full-index > $fileName $patchDir");
    else
    {
        print "Unknown argument:  $stagedArg\n";
        exit;
    }
else
    system("git diff --full-index > $fileName $patchDir");

测试:

  

diff.pl test.patch -s

输出:

  

Scalar找到了操作符在C:\ utils \ diff.pl第18行附近

的预期位置      

“)

     

$ stagedArg“

     

(在$ stagedArg之前缺少运算符?)语法错误在C:\ utils \ diff.pl第18行,靠近“)

     

$ stagedArg“语法错误在C:\ utils \ diff.pl第21行,靠近”)

     

如果“由于编译错误而导致C:\ utils \ diff.pl的执行中止。

     

由于编译错误,C:\ utils \ diff.pl的执行中止。

有人可以解释一下吗?

1 个答案:

答案 0 :(得分:9)

Perl if语法是:

if (condition) {
    statements;
}

你不能省略花括号。


您可能会发现use diagnostics;有用。给出一个简单的测试脚本:

use strict;
use warnings;
use diagnostics;
if (1) 
    print 1;

我们得到:

syntax error at - line 5, near ") 
    print"
Execution of - aborted due to compilation errors (#1)
  

(F)可能意味着您遇到语法错误。常见原因包括:

     
      
  • 关键字拼写错误。
  •   
  • 缺少分号。
  •   
  • 缺少逗号。
  •   
  • 缺少一个开括号或右括号。
  •   
  • 缺少一个开口或右手大括号。
  •   
  • 缺少结束语。
  •   
     

通常会有与语法相关的其他错误消息   错误提供更多信息。 (有时打开-w会有帮助。)   错误消息本身通常会告诉您它在行中的位置   它决定放弃。有时,实际错误是几个令牌   在此之前,因为Perl善于理解随机输入。   有时,行号可能会产生误导,一旦出现在蓝色的月亮中   找出触发错误的唯一方法就是调用   perl -c反复,每次砍掉一半程序看   如果错误消失了。排除20个问题的控制论版本。

Uncaught exception from user code:
    syntax error at - line 5, near ") 
        print"
    Execution of - aborted due to compilation errors.