2013-08-23 107 views
-1

好吧,這讓我瘋狂!我的Perl語句有什麼問題?

看了很多例子,並閱讀了perl中的if語句,並且所有內容對我來說都是正確的,所以其他人可以發現錯誤嗎?

#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) {' 

人有什麼想法?

+8

這個Perl怎麼樣? – Jean

+0

其開始的perl腳本...#!/ usr/bin/perl ..它怎麼樣? – Fuzzybear

+2

這主要寫在'sh'中,除了結尾的條件和'%ENV'哈希。使用錯誤的shebang不會奇蹟般地解決這個問題。 Perl沒有'echo'。變量被賦值爲'$ foo ='$ ENV {HOME}/test /「;'(注意LHS上的$ $ sigil) – amon

回答

6

上面的所有行「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"; 
} 
+3

'嚴格使用;使用警告;'被認爲比'-w更好 - 使用嚴格;' –

+1

@KithithThompson我同意,「使用警告」這個文件只比在程序範圍內使用「-w」更好,並且冒着煩人任何模塊的風險使用。 (我通常在可以的時候戳掉「-w」。) – kjpires

+0

絕妙的答覆感謝你,也從這一切中學到了一些新東西...... shebang必須在第一行......或者它只會解釋它如同sh。感謝您的建設性意見:) – Fuzzybear

1

改寫爲最小變化:

#!/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!" 
} 

強烈建議使用use strict;use warnings;雖然。

+0

「print」後面的分號文件存在!「'? – rutter

+1

@rutter在塊中的尾部分號是可選的:'{foo()}'與'{foo();;;;;}' – amon

+0

'相同如果不使用'use strict',Perl會容忍它:) – Jean