2017-08-24 79 views
-3

好的,我有這行代碼,我不知道,如果有人可以幫助我,它會很好。我正在製作一個地理位置perl腳本作爲我的項目的一部分。如果聲明失敗

這裏是代碼

$isps = $info->{'isp'}; 

if ($isps = "Time Warner Cable") 
{ 

    print "Isp found, go to $website for more information\n";  
} 

if ($isps = "Google") { 

    print "Isp found, go to $website for more information\n";  
} else { 

    print "No ISP located! No way of Contact via this terminal!"; 
} 

好了,所以基本上我試圖讓該語句讀取JSON代碼,使如果具體名稱列出其打印某些文本行。我在文件中添加了更多的ISP,但現在只是這兩個ISP。

如果任何人都可以用這行代碼來幫助我,因爲我真的無法弄清楚。

+2

什麼問題_exactly_? – litelite

+1

我認爲OP顯示某種類型的僞代碼,所以投票關閉的原因,但這應該作爲一個副本[如何比較Perl中的兩個字符串?](https://stackoverflow.com/q/1175390/100754)或作爲錯字。如果有人能夠找出一個體面的標題,這將是非常棒的。這與JSON無關,但我想不出一個體面的,描述性的標題。 –

+1

@SinanÜnür我剛剛投票關閉印刷錯誤,不可重現(等) – zdim

回答

5

=是賦值運算符。您需要改爲字符串比較運算符eq

在這一行中,您將字符串"Time Warner Cable"分配給$isps變量。然後if - 傳統查看字符串並將其解釋爲true。下一個條件相同。

if ($isps = "Time Warner Cable") 

相反,你想:

my $isps = $info->{'isp'}; 

if ($isps eq "Time Warner Cable") { 
    print "Isp found, go to $website for more information\n";  
} 
elsif ($isps eq "Google") { 
    print "Isp found, go to $website for more information\n";  
} else { 
    print "No ISP located! No way of Contact via this terminal!\n"; 
} 
+2

可能值得注意的是''嚴格使用''使用警告;'告訴你這個。 '找到=有條件的,應該是==' – Sobrique

1

你應該更新你的問題,告訴我們你當前的代碼出了什麼問題。

一個主要問題是=是賦值運算符。要平等比較字符串,使用eq操作:

if ($isps eq "Time Warner Cable") # ... 

(該==運營商進行數字比較。)

欲瞭解更多信息,perldoc perlop,可在線here

+0

哇,我覺得啞巴。有點知道perl本身。我沒有意識到這會很容易。非常感謝!我從我的錯誤中學習。 – Roto