2013-01-07 81 views
-3

截至目前我有一臺新電腦,我仍然在安裝perl我需要一些人來測試我的程序輸出是什麼(如果它甚至工作)如果不是,請告訴我什麼我可以做修復(配置:: INI :: Reader是一個CPAN類,所以你可能要得到它,如果你沒有它需要幫助的Perl程序

Perl代碼:

#!/usr/bin/perl 

use warnings; 
use strict; 
use IO::Socket; 
use Config::INI::Reader; 

my $file = "ServerSettings.ini"; 
my $ini = Config::INI::Reader->read_file($file); 
my $server_info = $ini->{'ServerInfo'}; 
my $version = $ini->{'Version'}; 
my $host = $server_info->{'address'}; 
my $port = $server_info->{port}; 
my $server = new IO::Socket::INET(Proto=>'tcp',PeerAddr=>$host,PeerPort=>$port); 

die "Connection Failed \n" unless $server; 

print "Connection Established \n"; 
print "James Server" . $version->{ver} . "\n"; 
print "Hello From James Server"; 

這裏是ini:

[ServerSettings] 
port=1234 
address"localhost" 

[Version] 
ver="1.0.3" 
+2

應該不會是地址=在ini文件? – emil

+1

不應該'server_info'是'$ server_info'?發佈不起作用的代碼時,一個比較好的主意是發佈錯誤消息。不這樣做很奇怪。這就像去看醫生說:「所以,有什麼不對,猜猜它是什麼?」 – TLP

+3

「......我需要一個人來爲我測試...」不是一個非常有用的問題,也沒有表明你已經做了很多工作來自己解決問題。考慮下一次添加你已經嘗試過的東西以及在建立環境後發生了什麼錯誤。 –

回答

1
#!/usr/bin/perl -l 

use warnings; 
use strict; 
use Config::INI::Reader; 

my $file = "/tmp/l.ini"; 
my $ini = Config::INI::Reader->read_file($file); 
my $server_info = $ini->{ServerSettings}; 
my $version = $ini->{Version}; 

my $host = $server_info->{address}; 
my $port = $server_info->{port}; 
my $ver = $version->{ver}; 

print $host; 
print $port; 
print $ver; 

你在ini文件中一個錯字,缺一=

[ServerSettings] 
port=1234 
address="localhost" 

[Version] 
ver="1.0.3" 
+0

在shebang中隨機的'-l'開關? – TLP

+2

你是什麼意思隨機?它的作用與'say'相同:print newlines。需要'chmod + x script.pl; 。/ script.pl'正常工作... –

+0

隨機我的意思是說,它似乎沒有理由。我相信它有所作爲,但也許你應該提及你的意圖。或者至少強調它在那裏。如果你只想讓你的代碼添加新行來打印,也許你應該考慮使用'use feature'say''來代替。或者把'$ \'設置爲'「\ n」'。在shebang中使用開關是一種行爲,當有人不明白你的腳本爲什麼會自動輸入輸入時會引起混淆。 – TLP