2011-02-03 100 views
3

剛開始學習Perl,即學習程序流程 - 評估字符串和數字以及使用適當的運算符之間的主要區別。簡單的腳本,我在這裏讓我瘋狂,因爲它是一個超級簡單的,如果其他語句應該在「麥克風」輸入時運行並且不起作用。它會輸出else語句。請幫助爲什麼不能用我的字符串輸入工作?

#!C:\strawberry\perl\bin\perl.exe 

use strict; 
#use warnings; 
#use diagnostics; 

print("What is your name please?"); 
$userName = <STDIN>; 


if($userName eq "mike"){ 
    print("correct answer"); 
} 
else{ 
    print("Wrong answer"); 
} 
+3

您是否嘗試過調試您的程序?什麼是$ userName的價值? – BlackBear 2011-02-03 20:27:11

+0

$ userName值將是用戶輸入的任何內容,作爲使用的標量變量。 – 2011-02-03 20:29:59

+1

沒錯。但它包含用戶也輸入的換行符。您的比較沒有考慮到這一點。 – 2011-02-03 20:32:04

回答

1

當我讀到你的問題時,我以爲你將在字符串和數值中出現問題。考慮以下情況:

#!/usr/bin/env perl 

use strict; 
use warnings; 

print("What is the meaning of life, the universe and everything? "); 
chomp(my $response = <STDIN>); 

if ($response == 42) { 
#if (42 ~~ $response) { 
    print "correct answer\n"; 
} else { 
    print "Wrong answer\n" ; 
} 

嘗試使用兩種不同的if語句。回答好像family的東西,看看會發生什麼。 ~~是智能匹配運算符,它在Perl中幫助解決了這個問題。詳細瞭解它here(在「智能匹配詳細」下)。還要注意chomp運算符的內聯使用。

11

嘗試增加呼叫時,從標準輸入得到你的價值後的Chomp:

$userName = <STDIN>; 
chomp($userName); 

因爲從STDIN讀入的值將會對最終換行符。內置的chomp()將從字符串的末尾刪除換行符。

相關問題