我的if-perl语句有什么问题?
好吧,这让我发疯了 看了很多例子,阅读了perl中的if语句,我觉得一切都是正确的,那么其他人能发现错误吗我的if-perl语句有什么问题?,perl,if-statement,Perl,If Statement,好吧,这让我发疯了 看了很多例子,阅读了perl中的if语句,我觉得一切都是正确的,那么其他人能发现错误吗 #Start of script #!/usr/bin/perl -w ########################## #### Define Variables #### ########################## echo $PWD; mainDirectory=$ENV{HOME}"/test/"; file='report.txt'; backupDirector
#Start of script
#!/usr/bin/perl -w
##########################
#### Define Variables ####
##########################
echo $PWD;
mainDirectory=$ENV{HOME}"/test/";
file='report.txt';
backupDirectory=$ENV{HOME}"/test/backup";
number_to_try=0;
##################################
#### Check if the file exists ####
##################################
filename=$mainDirectory$file;
echo $filename;
if (-e $filename) {
print "File Exists!"
}
我收到的错误消息是:
./perl.pl: line 18: syntax error near unexpected token `{'
./perl.pl: line 18: `if (-e $filename) {'
有人有什么想法吗?用最小的改动重写:
#!/usr/bin/perl -w
##########################
#### Define Variables ####
##########################
#echo $PWD;
$mainDirectory=$ENV{HOME}."/test/";
$file='report.txt';
$backupDirectory=$ENV{HOME}."/test/backup";
$number_to_try=0;
##################################
#### Check if the file exists ####
##################################
$filename=$mainDirectory.$file;
#echo $filename;
if (-e $filename) {
print "File Exists!"
}
强烈建议使用严格使用代码>和使用警告代码>虽然。上面的所有“if”行都是无效的Perl;我相信你想做:
#!/usr/bin/perl
use strict;
use warnings;
##########################
#### Define Variables ####
##########################
my $mainDirectory = "$ENV{HOME}/test";
my $file = 'report.txt';
my $backupDirectory = "$ENV{HOME}/test/backup";
my $number_to_try = 0;
##################################
#### Check if the file exists ####
##################################
my $filename = "$mainDirectory/$file";
print "$filename\n";
if (-e $filename) {
print "File Exists!\n";
}
您可能需要阅读更多关于Perl基础知识的教程,尤其是语法
标量变量的前缀应为$
连接字符串时
什么是$PWD
什么是回声 这个perl怎么样?这是一个perl脚本,我正在启动…#/usr/bin/perl。。怎么不是呢?这主要是用sh
编写的,除了结尾的条件和%ENV
散列之外。使用错误的shebang并不能神奇地解决这个问题。Perl没有回声。变量的赋值方式类似于$foo=“$ENV{HOME}/test/”
(注意LHS上的sigil)您有大量没有sigil的变量(小的$or@marker),而且您似乎混合了php和perl函数以及语法。您应该会收到更多的错误消息。其中大部分看起来像是有效的sh/bash语法,而不是有效的Perl语法。Perl没有内置的echo
命令。如果mainDirectory
应该是一个变量,那么它必须是$mainDirectory
$ENV{HOME}/“test/”
应该是“$ENV{HOME}/test/”
。等等。print“File Exists!”
?@rutter块中的尾随分号是可选的:{foo()}
与{foo();;}
相同,如果不使用使用strict
:)啊哈,对了。我比编译器更挑剔的少数情况之一@amon尽管在块中尾随分号是可选的,但我发现如果在(阻塞结束)语句的末尾总是有分号,那么在添加额外的行时出错的可能性要小得多;使用警告代码>被认为比-w。。。严格使用
@KeithThompson我同意,“使用警告”仅用于此文件比在程序范围内使用“-w”要好得多,并且可能会干扰您使用的任何模块。(当我可以的时候,我通常会把“-w”去掉。)谢谢你的精彩回复,同时也从这一切中学到了一些新的东西。。。shebang必须在第一行。。或者它只会将其解释为sh。感谢您的建设性意见:)