[問題] 關於搜尋字串

看板Perl作者 (不決定習慣自由)時間14年前 (2010/11/06 17:25), 編輯推噓1(1012)
留言13則, 3人參與, 最新討論串1/2 (看更多)
下面是我自己寫的一個程式 my $input = shift; my $string = "你好嗎"; if ($string =~ /$input/) { print "有在其中\n"; }else{ print "沒有\n"; } 但遇到一個小bug 就是如果輸入的是空格 依然會顯示"有在其中" 想問一下問題出在哪 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.217.81

11/06 20:25, , 1F
檢查一下你$input 猜測是你沒有正確讀入"空白字元"
11/06 20:25, 1F

11/07 00:37, , 2F
不懂大大意思 請問是?
11/07 00:37, 2F

11/07 04:38, , 3F
$input的內容真的是'空白字元'嗎?
11/07 04:38, 3F

11/07 18:11, , 4F
command line可以傳空白字元當引數嗎._.? 可以的話我也想學
11/07 18:11, 4F

11/07 18:12, , 5F
改用$input = <STDIN>讓使用者輸入吧
11/07 18:12, 5F

11/07 18:13, , 6F
你應該還需要用到chomp把input後面的換行字元去掉
11/07 18:13, 6F
※ 編輯: n1lk5g2 來自: 140.114.217.81 (11/07 21:31)

11/07 21:31, , 7F
那我chomp應該怎麼用呢? 抱歉我是新手 看著書學的...
11/07 21:31, 7F

11/07 21:32, , 8F
很不會perl...只有按照書上寫出排數字大小的程式而已
11/07 21:32, 8F

11/07 21:55, , 9F
chomp($input = <STDIN>);
11/07 21:55, 9F

11/07 22:01, , 10F
其實我也想知道為什麼 shift 會導致 if 為真
11/07 22:01, 10F

11/07 22:08, , 11F
另一個解決 bug 的方法是在比對之前,先比對 $input,這樣
11/07 22:08, 11F

11/07 22:08, , 12F
就不需要改變 shift 的輸入方式,
11/07 22:08, 12F

11/07 22:08, , 13F
if ( $input eq "" ){exit;}
11/07 22:08, 13F
文章代碼(AID): #1CrHycYY (Perl)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 1 之 2 篇):
文章代碼(AID): #1CrHycYY (Perl)