Re: [問題] 關於搜尋字串

看板Perl作者時間14年前 (2010/11/08 03:46), 編輯推噓3(302)
留言5則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《n1lk5g2 (不決定習慣自由)》之銘言: : 標題: [問題] 關於搜尋字串 : 時間: Sat Nov 6 17:25:55 2010 : : 下面是我自己寫的一個程式 : : my $input = shift; : : my $string = "你好嗎"; : : if ($string =~ /$input/) { : : print "有在其中\n"; : }else{ : : print "沒有\n"; : } : : 但遇到一個小bug : : 就是如果輸入的是空格 依然會顯示"有在其中" : : 想問一下問題出在哪 : : 謝謝 請記得開啟 use strict; use warnings; my $pattern = undef; if ("test_string" =~ m/$pattern/) { print "match\n"; } Use of uninitialized value $pattern in regexp compilation at ... : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 140.114.217.81 : 推 rkcity:檢查一下你$input 猜測是你沒有正確讀入"空白字元" 11/06 20:25 : → n1lk5g2:不懂大大意思 請問是? 11/07 00:37 : → rkcity:$input的內容真的是'空白字元'嗎? 11/07 04:38 : → rkcity:command line可以傳空白字元當引數嗎._.? 可以的話我也想學 11/07 18:11 # ./test.pl " " 1 2 3 用引號括住應該就可以傳入空白字元 : → rkcity:改用$input = <STDIN>讓使用者輸入吧 11/07 18:12 : → rkcity:你應該還需要用到chomp把input後面的換行字元去掉 11/07 18:13 : ※ 編輯: n1lk5g2 來自: 140.114.217.81 (11/07 21:31) : → n1lk5g2:那我chomp應該怎麼用呢? 抱歉我是新手 看著書學的... 11/07 21:31 : → n1lk5g2:很不會perl...只有按照書上寫出排數字大小的程式而已 11/07 21:32 : → drm343:chomp($input = <STDIN>); 11/07 21:55 : → drm343:其實我也想知道為什麼 shift 會導致 if 為真 11/07 22:01 : → drm343:另一個解決 bug 的方法是在比對之前,先比對 $input,這樣 11/07 22:08 : → drm343:就不需要改變 shift 的輸入方式, 11/07 22:08 : → drm343:if ( $input eq "" ){exit;} 11/07 22:08 my $input = shift; 應該就是 shift 出 @ARGV,也就是 $ARGV[0] 根據上面推斷,沒有帶參數,但 shift,所以 $input 是 undef, 而用 undef 去做 regexp 比對會是 match! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.64.130 ※ 編輯: liyih 來自: 140.114.64.130 (11/08 11:46)

11/08 13:45, , 1F
喔喔! 原來我用錯引號了 單引號會被當成字元讀入._."
11/08 13:45, 1F

11/08 14:23, , 2F
單引號或是雙引號應該是和 shell 有關...
11/08 14:23, 2F

11/08 16:57, , 3F
所我我的程式碼應該怎麼改寫呢 有點不知道問題出在哪
11/08 16:57, 3F

11/08 16:57, , 4F
抱歉我剛學perl不久 很多東西都不懂 麻煩各位大大了
11/08 16:57, 4F

11/08 19:52, , 5F
感謝!第一次知道 undef 的 regexp 會是 match!
11/08 19:52, 5F
文章代碼(AID): #1Crt9xpk (Perl)
討論串 (同標題文章)
本文引述了以下文章的的內容:
1
13
14年前, 2010/11/06 09:25
完整討論串 (本文為第 2 之 2 篇):
3
5
14年前, 2010/11/08 03:46
1
13
14年前, 2010/11/06 09:25
文章代碼(AID): #1Crt9xpk (Perl)