2009-06-24 1 views
4

Perlで単一文字列を比較するにはどうすればよいですか?今、私は「EQ」を使用するトラインだ:なぜ、私の文字列の等価性テストでは、1文字の仕事ができないのですか?

print "Word: " . $_[0] . "\n"; 
print "N for noun, V for verb, and any other key if the word falls into neither category.\n"; 
$category = <STDIN>; 

print "category is...." . $category . "\n"; 

if ($category eq "N") 
{ 
    print "N\n"; 
    push (@nouns, $_[0]); 
} 
elsif($category eq "V") 
{ 
    print "V\n"; 
    push (@verbs, $_[0]); 
} 
else 
{ 
    print "Else\n"; 
    push(@wordsInBetween, $_[0]); 
} 

をしかし、それは動作しません。入力に関係なく、常にelseブロックが実行されます。

答えて

13

どのように$categoryの値を受け入れていますか?だけで正常に動作し当量の比較

chomp(my $category = <STDIN>); 
2

イコールです。おそらく$カテゴリは "N"でもなく "V"でもありません。

たぶん$カテゴリで予期しない空白がありますか?

+0

はい、ユーザーがで入力する必要がある改行。それを追い払う。 –

2
***@S04:~$ perl -we '$foo = "f"; print "Success\n" if ($foo ne "e")' 
Success 
***@S04:~$ perl -we '$foo = "f"; print "Success\n" if ($foo eq "e")' 
***@S04:~$ 

$categoryが実際に何を確認しようとしましたか?時にはこれらのことが私たちの最善の人によってさえスリップする可能性があります...おそらくそれは小文字か、全く違うものです。

私は予期しないエラーが出た場合、私は私が印刷したいものを周りの区切り文字で印刷を使用する傾向があるので、それが実際に開始と終了(私の心が解釈かもしれないものではなく)どこ私は知っています。

print "|>${category}<|"; 

ノートの何か他のものは、Data::Dumper次のとおりです。

use Data::Dumper; 
print Dumper(\$category); 
0

:それはmy $category = <STDIN>のように行われている場合は、で終わりに改行をムシャムシャ食べる必要があります。たぶん、あなたは、出力あなたの他のブロックで$カテゴリの値はそれが本当にあるかを確認する必要がありますか?周囲の空白があるかどうかを確認できるように、出力を引用符で囲みます。あなたは比較は大文字と小文字を区別しないようにしたい場合は

また、試してみてください。

if (uc($category) eq 'N') { 
0

ここで私は5.10を使用することができれば、私はそれを書くだろうかです。

#! perl 
use strict; 
use warnings; 
use 5.010; 

our(@nouns, @verbs, @wordsInBetween); 
sub user_input{ 
    my($word) = @_; 
    say "Word: $word"; 
    say "N for noun, V for verb, and any other key if the word falls into neither category."; 
    $category = <STDIN>; 
    chomp $category; 

    say "category is.... $category"; 

    given(lc $category){ 
    when("n"){ 
     say 'N'; 
     push(@nouns, $word); 
    } 
    when("v"){ 
     say 'V'; 
     push(@verbs, $word); 
    } 
    default{ 
     say 'Else'; 
     push(@wordsInBetween, $word); 
    } 
    } 
} 
関連する問題