我似乎无法弄清楚为什么我在尝试运行.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的执行中止。
有人可以解释一下吗?
答案 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.