Re: [問題] 取值

看板Perl作者 (下一個未來)時間10年前 (2014/04/14 12:06), 10年前編輯推噓5(5013)
留言18則, 5人參與, 最新討論串6/6 (看更多)
那可能要先定義一下甚麼叫做一行了 假設陣列格式很簡單 到是有辦法寫出"偽一行" @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

04/14 12:18, , 1F
依我理解: 'ID2*1,2,3*2,3,4*'
04/14 12:18, 1F

04/14 12:20, , 2F
原 po 要的應該是:
04/14 12:20, 2F

04/14 12:21, , 3F
ID2 A1
04/14 12:21, 3F

04/14 12:21, , 4F
ID2 A2
04/14 12:21, 4F

04/14 12:21, , 5F
ID2 B2
04/14 12:21, 5F

04/14 12:21, , 6F
ID2 A3
04/14 12:21, 6F

04/14 12:21, , 7F
ID2 B3
04/14 12:21, 7F

04/14 12:21, , 8F
ID2 B4
04/14 12:21, 8F

04/14 12:23, , 9F
sort by numerical , alphabetical(A,B)
04/14 12:23, 9F
原來是忘了排序 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

04/14 20:24, , 10F
沒想過還有sub這招 XD
04/14 20:24, 10F

04/15 09:40, , 11F
sub 這招好厲害,從沒看過。不知道哪邊有相關介紹,請指教
04/15 09:40, 11F

04/16 15:40, , 12F
老實說 第一次看到這種用法是在這版上看到的 忘記是Lilo
04/16 15:40, 12F

04/16 15:41, , 13F
還是cindy的文章了 這可能要請教他們這些高手
04/16 15:41, 13F

04/16 15:44, , 14F
謝 abliou 大 :)
04/16 15:44, 14F

04/17 23:44, , 15F
感謝您~
04/17 23:44, 15F

04/18 23:42, , 16F
(驚)
04/18 23:42, 16F

04/18 23:42, , 17F
其實是寫 javascript 的常用寫法.. XD
04/18 23:42, 17F

04/18 23:42, , 18F
(function(){....})(); 用在 js 有製造 scope 的效果 :p
04/18 23:42, 18F
文章代碼(AID): #1JIrxRx9 (Perl)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 6 之 6 篇):
問題
1
4
問題
1
2
問題
5
18
文章代碼(AID): #1JIrxRx9 (Perl)