尝试使用ifdef时出现语法错误

时间:2014-04-15 20:56:05

标签: perl syntax-error

我有:

if($^O eq 'MSWin32'){
  export WINDOWS=1
else{
  export UNIX=1
}

=begin WINDOWS
  use feature qw(switch);
=cut
=begin UNIX
  use Switch;
=cut

我得到了:

  

语法错误在C:\ build.pl第6行,靠近" else"   错误后BEGIN不安全 - 编译在C:\ build.pl第17行中止。

2 个答案:

答案 0 :(得分:8)

在Perl程序中包含bourne shell命令......不太可能正常工作。

if ($^O eq 'MSWin32') {
   $ENV{WINDOWS}=1;
}else{
   $ENV{UNIX}=1;
}

我不明白接下来的内容。然后,您将代码标记为文档,但这似乎并不是您要执行的操作。您似乎正在尝试执行以下操作:

use if $^O eq 'MSWin32', 'feature', qw( switch );
use if $^O ne 'MSWin32', 'Switch';

但这没有任何意义。交换机功能和交换机模块绝不可互换,并且都可以在Windows和非Windows系统上运行。

答案 1 :(得分:2)

您忘记在if (...) {之前放置一个}来关闭else块。即改变这一点:

else{

到此:

}else{