このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1323566370/786
#  \rが30回登場したら30回目より後ろの文字を削除したいんですがどう記述したら良いでしょう。 
#  \rから次の\r間には任意の文字数の文字列があります 
#  言語はパールです 
#   
#  $s =~ s/(((.*?)\r){3})(.*$)//s; 
#  print "$1\n$2\n$3\n$4\n"; 
#  これではだめでした 
#   
# 
# 

'キャリッジ・リターンが30回登場したら30回目より後ろの文字を削除したい'(_文字列,_末尾を削除された文字列) :-
        atom_chars(_文字列,Chars),
        'キャリッジ・リターンが30回登場したら30回目より後ろを削除したい'(0,Chars,Chars_2),
        atom_list_concat(Chars_2,_末尾を削除された文字列).

'キャリッジ・リターンが30回登場したら30回目より後ろを削除したい'(30,L,[]) :- !.
'キャリッジ・リターンが30回登場したら30回目より後ろを削除したい'(_,[],[]) :- !.
'キャリッジ・リターンが30回登場したら30回目より後ろを削除したい'(_n,['\r'|R1],R2) :-
        _n_2 is _n + 1,
        'キャリッジ・リターンが30回登場したら30回目より後ろを削除したい'(_n_2,R1,R2),!.
'キャリッジ・リターンが30回登場したら30回目より後ろを削除したい'(_n,[A|R1],[A|R2]) :-
        'キャリッジ・リターンが30回登場したら30回目より後ろを削除したい'(_n,R1,R2),!.