看板 Perl 關於我們 聯絡資訊
那可能要先定義一下甚麼叫做一行了 假設陣列格式很簡單 到是有辦法寫出"偽一行" @data = ('ID2*1,2,3*2,3,4*','ID3**2*','ID4***' ) ; sub{ (length($_[1])+length($_[2])==0)? print "$_[0]\n" : sub{ print "$_[0] $_\n" for @_[1..$#_] }->(($_[0]), (map{'A'.$_}(split',',$_[1])), (map{'B'.$_}(split',',$_[2]))) }->(/(.+)\*(.*)\*(.*)\*/) for @data ; 我是覺得 有點難讀 如果三個月後哪個倒楣鬼要改會有點麻煩 (套句Larry的話 三個月後的倒楣鬼通常是自己) ※ 引述《AntaresStar ()》之銘言: : 這樣就沒辦法那麼少行啦... : my @a = split /\*/; : my $id = shift @a; : $a[0] =~ s/(\d+)/A$1/g; : $a[1] =~ s/(\d+)/B$1/g; : @a = grep {/\S/} map {split /,/} @a; : @a ? map {print "$id $_\n"} sort {substr($a,1)<=>substr($b,1)} @a : : print "$id\n"; : 看有沒有人有興趣弄出更少行的 XD : ※ 引述《yalent ( 心只有妳 )》之銘言: : : 非常感謝您的回答~ : : 目前又遇到一個問題,在原始檔的*之中, : : 都會有一組數字如下的1,2,3等 : : ID2*1,2,4*2,3,4* : : ID3**2* : : ID4*** : : 但是我想將第一組數字1轉成 A1,2轉成 A2,4轉成 A4 : : 至於第二組數字的2 轉成B2,3轉成 B3,4轉成 B4 : : 之後再對內容作排序 : : 想將內容轉為 : : ID2 A1 : : ID2 A2 : : ID2 B2 : : ID2 B3 : : ID2 A4 : : ID2 B4 : : ID3 B2 : : ID4 : : 那這部份取代的寫法,我要怎麼寫呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.44.131 ※ 文章網址: http://www.ptt.cc/bbs/Perl/M.1397448411.A.EC9.html ※ 編輯: abliou (123.195.44.131), 04/14/2014 12:19:13
cutekid:依我理解: 'ID2*1,2,3*2,3,4*' 04/14 12:18
cutekid:原 po 要的應該是: 04/14 12:20
cutekid:ID2 A1 04/14 12:21
cutekid:ID2 A2 04/14 12:21
cutekid:ID2 B2 04/14 12:21
cutekid:ID2 A3 04/14 12:21
cutekid:ID2 B3 04/14 12:21
cutekid:ID2 B4 04/14 12:21
cutekid:sort by numerical , alphabetical(A,B) 04/14 12:23
原來是忘了排序 XDDDD sort一下吧 sub{ (length($_[1])+length($_[2])==0)? print "$_[0]\n" : sub{ print "$_[0] $_\n" for @_[1..$#_] }->(($_[0]), sort{@{[split'',$a]}[1]<=>@{[split'',$b]}[1]}((map{'A'.$_}(split',',$_[1])), (map{'B'.$_}(split',',$_[2])))) }->(/(.+)\*(.*)\*(.*)\*/) for @data ; ※ 編輯: abliou (123.195.44.131), 04/14/2014 12:29:30
AntaresStar:沒想過還有sub這招 XD 04/14 20:24
cutekid:sub 這招好厲害,從沒看過。不知道哪邊有相關介紹,請指教 04/15 09:40
abliou:老實說 第一次看到這種用法是在這版上看到的 忘記是Lilo 04/16 15:40
abliou:還是cindy的文章了 這可能要請教他們這些高手 04/16 15:41
cutekid:謝 abliou 大 :) 04/16 15:44
yalent:感謝您~ 04/17 23:44
CindyLinz:(驚) 04/18 23:42
CindyLinz:其實是寫 javascript 的常用寫法.. XD 04/18 23:42
CindyLinz:(function(){....})(); 用在 js 有製造 scope 的效果 :p 04/18 23:42