[問題] print special characters (\t,\n,...)

看板Perl作者 (wakaka)時間10年前 (2015/03/02 19:57), 編輯推噓1(105)
留言6則, 1人參與, 最新討論串1/1
我在學習regular expresion時, 寫了以下代碼 @pattern = ("ddd\t rrr", "ddd\tggg"); @match = ("d( |\t)+", "d "); foreach my $p (@pattern) { foreach my $m (@match) { if ($p =~ /$m/) { print ("p:$p match m:$m \n"); } } } print那一行的結果如下: p:ddd rrr match m:d( | )+ p:ddd ggg match m:d( | )+ 請教板上各位先進 是否有辦法print出raw string如下 p:ddd\t rrr match m:d( |\t)+ p:ddd\tggg match m:d( |\t)+ 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.160.10 ※ 文章網址: https://www.ptt.cc/bbs/Perl/M.1425297471.A.BB8.html

03/05 01:32, , 1F
雙引號內的跳逸字元會被解釋和替換成其他東西
03/05 01:32, 1F

03/05 01:33, , 2F
比如說 $tab = "\t" 就是存TAB進去,不是一個\跟著一個t
03/05 01:33, 2F

03/05 01:36, , 3F
所以 perl -e '$v = 'A\t7'; $v2 = eval( "qq{$v}" );'
03/05 01:36, 3F

03/05 01:39, , 4F
$v裡面有四個字元, 用eval()後$v2裡只有三個字元
03/05 01:39, 4F

03/05 01:41, , 5F
承上, print 'yes' if vt2 =~ /^$v$/ # 'yes'
03/05 01:41, 5F

03/05 01:42, , 6F
^$v2
03/05 01:42, 6F
文章代碼(AID): #1Kz50_ku (Perl)
文章代碼(AID): #1Kz50_ku (Perl)