perl中的编译错误是什么?我没有看到语法问题

时间:2011-08-18 19:58:59

标签: perl

#!/usr/bin/perl
use strict;
use warnings;

open(TEST, "leet.txt") or die "Can't open leet.txt: $!\n";
while(my $line = <TEST>) {
    if($line =~ tr/34/ea/)
        print <<EOF;
$line
EOF
}

它产生了这个:     语法错误在./practice.pl第11行,靠近“)                 打印”     由于编译错误,./practice.pl的执行中止。

3 个答案:

答案 0 :(得分:6)

您必须将if命令括在{ }块中,即使它只有一个命令。与其他语言不同,在Perl中,这不是可选的。

    if($line =~ tr/34/ea/) {
        print <<EOF;
$line
EOF
    }

答案 1 :(得分:0)

我想你最后跳过了两个“}”。然后添加“{”:

if($ line = ~tr / 34 / ea /) {

答案 2 :(得分:0)

要有条件地运行单个语句,请将条件放在语句之后。例如,这两个语句具有相同的行为:

if ($bar) { print "foo!\n"; }
print "foo!\n" if ($bar);

就您的代码而言,您可以这样编写:

#!/usr/bin/perl
use strict;
use warnings;

open(TEST, "leet.txt") or die "Can't open leet.txt: $!\n";
while(my $line = <TEST>) {
        print <<EOF if ($line =~ tr/34/ea/);
$line
EOF
}
close TEST;