Perlでリクに答えるス ..
357:デフォルトの名無しさん
05/12/01 18:04:14
>>343
Yahooにまで…。
URLリンク(messages.yahoo.co.jp)
しかも誰か答えちゃってるし。
358:350
05/12/01 18:08:14
なんで煽られてるのかが分からんのだが・・中学生か?
359:デフォルトの名無しさん
05/12/01 18:24:26
>>343の答えは
スレリンク(php板:965-967番)
でもう出てる
360:デフォルトの名無しさん
05/12/01 18:28:38
>>358
変な奴はほっとけ
361:デフォルトの名無しさん
05/12/01 18:38:49
VIPが出来てから馬鹿が流入してきた
362:デフォルトの名無しさん
05/12/03 23:36:45
馬鹿というかガキなんだよな。煽り方も知らないような。
363:デフォルトの名無しさん
05/12/06 21:25:33
ネットショップで○○時から○台限定で販売、とかいうのを買おうとすると
真っ先にスクリプターに買い占められちゃうんだけど
そういうのに対抗できる自動購入スクリプトってPerlで組めませんか?
364:デフォルトの名無しさん
05/12/06 23:39:56
組めたとしてもここで公開されれば対策される。
対策されなくても公開されている以上大勢が使う。
意味がない。
365:デフォルトの名無しさん
05/12/07 00:01:35
>>363
組めます
366:デフォルトの名無しさん
05/12/07 04:17:29
。゚(゚∩д∩゚)゚。
確かに仰るとおりですね・・・
367:デフォルトの名無しさん
05/12/07 08:47:31
楽天のなら作った事ある
368:デフォルトの名無しさん
05/12/07 09:24:49
ビックカメラのは組めませんか?
369:デフォルトの名無しさん
05/12/07 09:30:28
楽天のは空売りですよ
370:367
05/12/07 09:41:05
いや、俺は楽天で1円で1GBのmp3プレーヤゲットしたんだがw
サンプルページはないのか
ビックカメラの
仕様が分からんとどうにもならんだろ
371:デフォルトの名無しさん
05/12/07 10:57:09
ビックカメラの場合
こういう場合のと
URLリンク(www.biccamera.com)
こういう場合のがあるんだけどなんか違うの?
URLリンク(www.biccamera.com)
372:デフォルトの名無しさん
05/12/10 15:47:01
age保守
373:PAJA
05/12/10 16:52:51
はじめまして、PAJA といいます。
# Vine Linux 3.1 の Perl v5.8.2 です。
./trial.pl の中で、
`vi ./hoge.txt`
と記述したところ、下記のようなメッセージがでてしまいました。
" Vim: 警告: 端末への出力ではありません"
やりたいことは、./trial.pl を実行すると "./hoge.txt を vi で開く"
ようにすることです。
どうすれば、できるようになるでしょうか。
よろしく、お願いします。
374:デフォルトの名無しさん
05/12/10 17:23:42
system "vi hoge.txt";
375:PAJA
05/12/10 19:41:10
>> 374
ちゃんと開くことが出来るようになりました。
ありがとうございました。
376:デフォルトの名無しさん
05/12/11 05:44:49
>>373
実行したものからの出力を受け取らないならバッククォートは使わない
と覚えておくといいよ。
377:デフォルトの名無しさん
05/12/14 15:28:53
すいません。教えてください。
$_ = "AI今日U<KAKIKU>SASISU明日<TATI*TU>NANI";
であるとき
$s1が"AI今日U<KAKIKU>SASISU%sNANI"、
$s2が"明日"、
$s3が"明日TU"、
$s4が"TATITU"
となるようにするプログラムを教えてください。
どうかよろしくお願いします。
378:デフォルトの名無しさん
05/12/14 15:53:09
>>377
$s1 = "AI今日U<KAKIKU>SASISU%sNANI";
$s2 = "明日";
$s3 = "明日TU";
$s4 = "TATITU";
それだけしか条件がないとこれでもいいわけだが(笑)
どういう規則でそうなるのか例だけじゃわかんね。
379:377
05/12/14 16:18:46
>378
すいません。 $_ = "AI今日U<KAKIKU>SASISU明日<TATI*TU>NANI";が条件です。
自分では以下のようにしてやってみていたのですが、うまくいきません。
@list = split (/,/, $_);
if ($list[2] =~ /<[A-Z]+\*[A-Z]+>/) {
($s1 = $list[2]) =~ s/[^A-Z][^<]*<[A-Z]+\*[A-Z]+>/%s/g;
@s2 = $list[2] =~ /([^A-Z][^<]*)<[A-Z]+\*[A-Z]+>/o;
$s2 = $s2[0].$s2[1];
@s3 = $list[2] =~ /([^A-Z][^<]*)<[A-Z]+\*([A-Z]+)>/o;
$s3 = $s2[0].$s2[1];
@s3 = $list[2] =~ /<([A-Z]+)\*{1}([A-Z]+)>/g;
$s3 = $s3[0].$s3[1];
}
380:デフォルトの名無しさん
05/12/14 16:30:10
だめだ。問題を説明する能力のない人らしいので
エスパーさん出番です。
381:ヽ(´ー`)ノ ◆.ogCuANUcE
05/12/14 16:48:42
こうかな。
$_ = "AI今日U<KAKIKU>SASISU明日<TATI*TU>NANI";
(my $s1 = $_) =~ s/([^A-Z<]+)<([A-Z]+)\*([A-Z>]+)>/\%s/;
my $s2 = $1;
my $s3 = $1 . $3;
my $s4 = $2 . $3;
use Data::Dumper;
print Data::Dumper->Dump([$s1, $s2, $s3, $s4], [map { 's'.$_ } (1 .. 4)]);
>>377
誰にでも理解できるように仕様を説明するように。
具体的に言うと、小学生にも分かるように。
382:377
05/12/14 17:07:42
というか、解決?かどうかまだ不明ですが一応出来ました。
379は貼り間違いました。↓は解決?したものです。
$_ = "AI今日U<KAKIKU>SASISU明日<TATI*TU>NANI";
($s1 = $_) =~ s/[^A-Z][^w]{1,3}<[A-Z]+\*[A-Z]+>/%s/g;
print "$s1\n";
@s2 = $_ =~ /([^A-Z][^w]{1,3})<[A-Z]+\*{1}[A-Z]+>/o;
print "@s2\n";
@s3 = $_ =~ /([^A-Z][^w]{1,3})<[A-Z]+\*{1}([A-Z]+)>/o;
print "@s3\n";
@s4 = $_ =~ /<([A-Z]+)\*{1}([A-Z]+)>/g;
print "@s4\n";
これで一応目的の動作をするのですが、
2行目が特によくわかりません。
[^A-Z][^w]{1,3}は何でしょうか?
[^w]って何?ワード文字?ワード文字は\wですよね?
[^w]を普通に読むとwという文字以外すべてだと思うのですが。
383:377
05/12/14 17:14:38
>381
わかりにくくてすいません。
目的は文字列中の<*を含む英大文字>の部分とその直前の漢字の展開です。
384:デフォルトの名無しさん
05/12/23 19:01:41
メートル単位の長さを与えて、それをヤードに変換して表示するプログラムを教えてください。
1メートルは1.1ヤードとしてください。
385:デフォルトの名無しさん
05/12/23 19:03:08
インボカントって何か教えてください
386:384
05/12/23 19:11:02
追記します。
メートル単位の長さをヤードに変換したり、ヤード単位の長さをメートルに変換するプログラムを教えてください。
>>384でかいたような一方通行のプログラムでしたら分かります。
上のような場合、どうやって分岐(?)させればよいのでしょうか?
387:384
05/12/23 19:17:39
>>384について考えたプログラムを載せておきます。
どなたか、>>386のように改変してください。。。
use strict;
my ($meter, $yard);
print "長さをメートルで入力してください";
$meter = <STDIN>;
chomp ($meter);
$yard = $meter * 1.1;
print "$meterメートルは$yardです。\n";
388:デフォルトの名無しさん
05/12/23 20:02:18
>>387
入力値がメートルとした場合のヤードの値
入力値がヤードとした場合のメートルの値
を計算して結果を2行書けばいいんじゃね?
389:デフォルトの名無しさん
05/12/23 22:21:41
>>388
なるほど。
入力時の数字が、10だったら
10メートルは***ヤードです。
10ヤードは***メートルです。
とすれば良いのですね。
逆転の発想ですね!ありがとうございます。
390:デフォルトの名無しさん
05/12/24 00:19:30
それなんて宿題
391:デフォルトの名無しさん
05/12/24 17:51:13
age
宿題でもどーんとこいや
392:デフォルトの名無しさん
05/12/25 18:26:07
perl -MO=Xref,-r hoge.pl の結果から以下のような結果を整形してみたいです。出してください。
■結果
hoge.pl 250<0>main()
hoge.pl 160├<1>get_home_directory()
hoge.pl 135│└<2>usage()
hoge.pl 190├<1>read_configration()
hoge.pl 220│└<2>get_string()
<<略>>
393:ヽ(´ー`)ノ ◆.ogCuANUcE
05/12/25 19:31:09
>>392
-r 付けなきゃそれっぽくならんかね。
394:デフォルトの名無しさん
05/12/26 00:01:42
あれだと、エディタのタグジャンプ使えないし、みづらいので。
cの関数コールグラフ書くフリーウェアのfunctreeみたいな使い勝手
のものが欲しいです。
395:デフォルトの名無しさん
05/12/26 11:49:52
>>386
引数で数値の後に m が付いていたらメートル、yが付いていたら
ヤード、ということにするならこんな感じか。
#!/usr/bin/perl -w
use strict;
for(@ARGV) {
if(/^(\d+(\.\d+)?)(m|y)$/) {
if ($3 eq 'm') {
print "$1 メートル = " . ($1 * 1.1) . " ヤード\n";
} else {
print "$1 ヤード = " . ($1 / 1.1) . " メートル\n";
}
} else {
print STDERR "$_: 解釈できません。\n";
}
}
396:デフォルトの名無しさん
06/01/13 16:15:09
1
INDATEというファイルの中身を読み込んで処理するものであること。(INDATEも提出すること)
2
少なくとも一個のif文をつかっている。
3
for.while.foreachなどの繰り返しを少なくとも一個は使っている。
4
少なくとも一個の配列を使っている。
5
少なくとも一個の引数を使っている。
6
以下の様に実行することでOUTDATEに結果が出力される。
%KADAI3<INDATE>OUTDATE
注:3は引数である。
という課題です。頼みます。
397:デフォルトの名無しさん
06/01/13 16:17:49
>>396
教科書に答えが。
398:デフォルトの名無しさん
06/01/13 16:18:35
>>397
う・・・
399:デフォルトの名無しさん
06/01/13 16:40:59
なんだその意味不明な課題
俺が馬鹿なだけかもしれんが、何をしたいのか訳わからん
400:デフォルトの名無しさん
06/01/13 16:44:17
>>399
1〜6を満たす自由な機能のプログラムを作るって課題なんですが…
401:デフォルトの名無しさん
06/01/13 16:47:08
ああそういう意味か
%KADAI3<INDATE>OUTDATE
まだこれの意味が分からんが
402:デフォルトの名無しさん
06/01/13 16:56:45
>>401
Terminalで入力したらってことだからあまり関係ないです。ごめんなさい。
403:デフォルトの名無しさん
06/01/13 17:28:01
それDATEじゃなくてDATAだろ
404:デフォルトの名無しさん
06/01/13 17:37:44
>>403
そうです。ほんとごめんなさい。
405:デフォルトの名無しさん
06/01/13 21:34:26
結局>>397でFAだな
406:デフォルトの名無しさん
06/01/14 07:43:38
そんなぁ・・・
407:デフォルトの名無しさん
06/01/14 09:42:00
#!/usr/bin/perl
use LWP::Simple;
$url = 'URLリンク(girls.twistys.net)';
for ($i=1; $i<=500; $i++) {
$num = sprintf("%03d", $i);
$_ = get($url.$num."/");
s/\w*\d{1,2}\.jpg/push @jpgs, $&/eg;
foreach $jpg (@jpgs) {
getstore($url.$num."/".$jpg, $num.$jpg);
}
}
408:デフォルトの名無しさん
06/01/16 08:50:23
仲間分けについてのプログラムについて教えてください
1番と3番
1番と5番
1番と7番
2番と6番
2番と8番
3番と5番
3番と11番
が仲間です
配列には上から
1\t3
1\t5 ……のように入っています
この時1,3,5,7,11 と 2,6,8 のように仲間に分けるプログラムを作ってください
409:ゆみ
06/01/16 11:24:17
Perl初心者です。教えてください。
日付,メールアドレス
日付,メールアドレス
日付,メールアドレス
・
・
・
と数万行も続くデータから、重複メールアドレスが存在したときは
その行を取り除くということは出来るのでしょうか。
困っています(;;)教えてください。
410:デフォルトの名無しさん
06/01/16 11:39:46
できるよ
411:ゆみ
06/01/16 11:44:33
どうやればいいのでしょうか?
是非教えてください。。。
412:デフォルトの名無しさん
06/01/16 11:44:49
>>409
perl -ne "/,(.+)/ && !$dup{$1}++ && print" in.csv > out.csv
413:ゆみ
06/01/16 11:51:59
>>412
ありがとうございます(*^^*)
これはコマンドプロンプト(PC)上で行う処理方法でしょうか?
サーバー上のCGIファイルの中で処理する場合の書き方はありますか?
またin.csvというのが元のデータファイルで、out.csvというのが
出力された新しいファイルですよね?
414:ゆみ
06/01/16 12:02:04
perl -ne "/,(.+)/ && !$dup{$1}++ && print" in.csv > out.csv
これも試してみましたがうまくいきません。
1万行以上あるのに新しく作られたファイルは60行足らず。
もしかすると私の説明不足なのかもしれません。
重複したメールアドレスの存在しない日付,メールアドレス
のリストを作りたいのですが。。。
意味わかりますでしょうか(**)ごめんなさい。。。
415:デフォルトの名無しさん
06/01/16 13:54:12
>414
m月d日に誰からメールが来てるかのリストを作るのか?
だったらDBに読み込んでクエリ書いた方が手っ取り早いと思われ。
SELECT dateval, addr FROM infile GROUP BY dateval, addr;
416:デフォルトの名無しさん
06/01/16 15:43:02
>>414
てことはまず日で分けて、その中に同じアドレスがあっても1つで出すということだな。
じゃあこれを参考に作れ。
my %data;
while (<>) {
chomp;
if (/^([^,]+),(.+)$/) {
$data{$1}{$2} = 1;
}
}
for my $day (sort keys %data) {
for my $addr (sort keys %{$data{$day}}) {
print "$day,$addr\n";
}
}
417:デフォルトの名無しさん
06/01/16 15:45:47
>>408
何がどう仲間なのか全然分からん。
もっと詳しく説明するように。
418:デフォルトの名無しさん
06/01/16 19:15:13
>>408
こんなのか?データは標準入力から。
my @ary=();
my @index=();
sub pushme($$)
{
my ($ary,$val)=@_;
my $i;
for($i=$val;!UNIVERSAL::isa($ary->[$i],'ARRAY');$i=$ary->[$i]){}
push(@{$ary->[$i]},$val);
}
while($_=<STDIN>){
/^(\d+)\t(\d+)$/;
if(defined($ary[$1])){
$ary[$2]=$1;
pushme(\@ary,$2);
}elsif(defined($ary[$2])){
$ary[$1]=$2;
pushme(\@ary,$1);
}else{
my @newary=($1,$2);
$ary[$1]=\@newary;
$ary[$2]=$1;
}
foreach(@ary){
if(ref($_) && ref($_) eq 'ARRAY'){
print join(",",@$_)."\n";
}
}
419:418
06/01/16 19:18:56
本当は sub pushme に \@ary 渡すのは蛇足。
渡さなくともここでは @ary は有効なスコープ。
420:デフォルトの名無しさん
06/01/16 20:08:55
>>408
@list = ( "1\t3", "1\t5", "1\t7", "2\t6", "2\t8", "3\t5", "3\t11" );
$tmpstr .= join ':', map "\t$_", @list;
1 while $tmpstr =~ s/(\t\d+)((?:\t\d+)*):((?:[^:]*:)*)((?:\t\d+)*)\1((?:\t\d+)*)(?::|$)/$1$2$4$5:$3/;
1 while $tmpstr =~ s/(\t\d+)((?:\t\d+)*)\1(?=\t|:)/$1$2/;
@grouping = map [/(\d+)/g], split ':', $tmpstr;
$" = ",";
print "@{$grouping[0]}と@{$grouping[1]}\n";
421:408
06/01/16 21:04:13
配列に@nakamaに上から
$nakama[0]="1\t3";
$nakama[1]="1\t5";
……
という風に入っていて、それぞれ1と3は仲間、1と5は仲間という意味になっています。
1と3が仲間で、3と11が仲間であれば1と11も仲間とします。
これで>>408を 1,3,5,7,11と 2,6,8に分けたいのです。
422:デフォルトの名無しさん
06/01/16 21:06:04
>>420
おお、更新していなくて分かりませんでした。
それでうまく出来ました。ありがとうございます!
423:ゆみ
06/01/16 23:00:24
409です。>>416さん有難う御座います。。。
私はホントに初心者で・・・説明べたで申し訳御座いません。
416さんのは同じ日付内で同じメアドがあった場合、排除するという
内容でしょうか?
たとえば
1月1日,aaa@aaa.aa.aa
1月1日,bbb@bbb.bb.bb
1月1日,ccc@ccc.cc.cc
1月2日,aaa@aaa.aa.aa
1月2日,bbb@bbb.bb.bb
1月3日,bbb@bbb.bb.bb
1月3日,aaa@aaa.aa.aa
1月4日,ccc@ccc.cc.cc
とあった場合、
↓↓↓変換後↓↓↓↓
1月3日,bbb@bbb.bb.bb
1月3日,aaa@aaa.aa.aa
1月4日,ccc@ccc.cc.cc
というように同じメアドが重複しないように更に日付は最新(最下段)
の日付を付けてリスト化したいのです。。。
日付は最上段のものでも構いませんが。。。
出来れば。。。できれば。。。データファイルの読み込み部分から
解説して頂けないでしょうか。。。DBではなく、テキストファイルなんです。。。
本当にすみません(><)(;;)
424:デフォルトの名無しさん
06/01/16 23:19:38
ファイル読み込みくらいなら、perl入門のサイトや本で調べられるだろ
425:デフォルトの名無しさん
06/01/16 23:25:50
>>423
初心者初心者連呼するならエクセルのフィルタ使うとかにしたほうがいいんでない?
426:ゆみ
06/01/16 23:33:08
>>424厳しいお言葉・・・有難う御座います。
ではファイルの読み込み部分は結構です。。。
>>425それでは意味がないのです。。。
お願いします!!!(;;)
427:デフォルトの名無しさん
06/01/16 23:39:52
こんな擦れ合ったのか〜
次の答えを教えてください。
以下のタグを結合したい。
(1)<M>hogeM</M><X>hogeX</X> → <X>hogeMhogeX</X>
(2)<X>hogeX</X><M>hogeM</M> → <X>hogeXhogeM</X>
(3)<M>hogeM</M><X>hogeX</X><M>hogeM</M> → <X>hogeMhogeXhogeM</X>
※<M>hogeM</M><X>hogeX</X><M>hogeM</M><X>hogeX</X> は結合しない。
<例>
※以下は一行で、\ は連結の意味です。
......hoge.......<M>hogeM</M><X>hogeX</X>.....\
........hoge......<X>hogeX</X><M>hogeM</M>.....\
.....hoge.........<M>hogeM</M><X>hogeX</X><M>hogeM</M>...\
.........<X>hogeX</X>................<M>hogeM</M>..\
..<M>hogeM</M><X>hogeX</X><M>hogeM</M><X>hogeM</X>
↓
......hoge.......<X>hogeMhogeX</X>.......\
......hoge......<X>hogeXhogeM</X>..........hoge....\
.....<X>hogeMhogeXhogeM</X>............<X>hogeX</X>...\
.............<M>hogeM</M>...\
.<M>hogeM</M><X>hogeX</X><M>hogeM</M><X>hogeM</X>
正規表現でも、何でもOKなのでお願いします。
428:デフォルトの名無しさん
06/01/16 23:52:53
難しかったかな?
429:デフォルトの名無しさん
06/01/17 00:12:25
>>427
ヒント: 解く奴も人間
430:デフォルトの名無しさん
06/01/17 00:36:53
>>427
無理
431:デフォルトの名無しさん
06/01/17 01:53:26
>>426
意味がないってどういうこと?
csvをエクセルに読み込んで重複を消すだけじゃないの?
知識らしい知識もいらんし煽りじゃなくあなたのような人向けだと思うが。
432:デフォルトの名無しさん
06/01/17 01:59:03
>>413でCGIで動かしたいってあるよ
433:デフォルトの名無しさん
06/01/17 02:50:39
>>423
while (<$fh>) {
chomp;
my($date, $mail) = split /,/;
$mails{$mail} = $date;
}
後は自分で何とかしろ。
434:ゆみ
06/01/17 10:20:52
>>433さん 素敵です!
あまりハッシュって使ったこと無かったので・・・
出来ました!!!有難う御座います!!!
435:デフォルトの名無しさん
06/01/25 21:48:54
<2></2>を削除する正規表現教えて
(例)
.....<1>.....<2>....</2>....<1>.....
↓
.....<1>.............<1>.....
436:デフォルトの名無しさん
06/01/25 21:50:42
s/.....<1>.....<2>....</2>....<1>...../.....<1>.............<1>...../g
437:デフォルトの名無しさん
06/01/25 21:51:45
>>435だけど
間違えた。
<2></2>を削除する正規表現教えて
(例)
.....<1>.....<2>....</2>....</1>.....
↓
.....<1>.............</1>.....
438:デフォルトの名無しさん
06/01/25 23:08:10
正規表現の基礎の基礎じゃないか
439:マル
06/01/26 01:37:34
掲示板スクリプトで、名前が「あ」か「い」か「う」の人以外は書き込みできない、
という風にする場合
if ($name !/あいう/) { &error("名前が間違っています",'NOLOCK'); }
ではないですよね。
「あ」か「い」か「う」というのはどう書けばいいでしょうか。
440:& ◆p8OCeNXbYU
06/01/26 01:43:21
すみません。実際には「あ」か「い」か「う」ではなく、
「一」か「二」か「三」か・・・「三十五」か「三十六」という風になります。
一〜三十六までの漢数字を入れなければ投稿できない、という風にしたいのです。
自動で貼られてしまう広告よけのためなのですが、
何卒よろしくお願い致します。
441:マル
06/01/26 01:50:09
440=439です。
442:& ◆p8OCeNXbYU
06/01/26 02:34:09
すみません。できました。
|で区切ればorの意味になるようでした。
if ($name !~/一|二|三/) { &error("名前が間違っています",'NOLOCK'); }
というような感じで動きました。失礼しました。
443:デフォルトの名無しさん
06/01/26 03:41:24
これも正規表現の基礎の基礎の基礎だよな・・
マジで・・
444:デフォルトの名無しさん
06/01/26 10:33:45
<2>.*?</2>
445:デフォルトの名無しさん
06/01/26 12:21:36
>>444
><2>.*?</2>
".*?"という文字列はGoogleで検索できないため、申し訳ありませんが、
意味を教えていただけますでしょうか?
.*は文字の0個以上(.+は1個以上)にマッチだと思いますが、これに?が付いた
.*?がいまいち、よく分かりません。
446:デフォルトの名無しさん
06/01/26 12:50:59
>>445
Perl はググる前に perldoc 。
URLリンク(www.kt.rim.or.jp)
447:デフォルトの名無しさん
06/01/27 11:51:12
>>442
use encoding でエンコード指定しておいて
$name !~ /[あいう]/ で判定する方がいいと思う。
448:デフォルトの名無しさん
06/01/27 11:54:17
>>445
最小マッチ
デフォルトは最大でマッチする。
たとえば 'abcabcabcabc' という文字列に対して /a.*a/ は 'abcabcabca'
の部分がマッチするが /a.*?a/ だと 'abca' がマッチする。
449:sage
06/01/27 17:48:26
>>448, 446
ありがとうございます。
>最小マッチ
Perl歴17年ですが、この正規表現は見落としていました。
わざわざ、(1)のような書き方をしてきましたが、
(1) <2>[^<]*</2>
(2)の方が読みやすいですね?
(2) <2>.*?</2>
勉強になりました。
450:デフォルトの名無しさん
06/01/27 17:53:34
はぁ、どうして下らない嘘をつくかな
451:デフォルトの名無しさん
06/01/27 17:54:23
>>449
詳説 正規表現 第2版まじおすすめ
452:デフォルトの名無しさん
06/01/27 19:28:06
Perl 歴 17 年で正規表現もまともに使えないなんて、そんなの「歴」のうちに入らんよ。
453:449
06/01/27 21:55:45
>>452
>Perl 歴 17 年で正規表現もまともに使えない
正規表現の基本が分かっていなかったので、人にPerlを教える
のは無理でしょうが、研究機関の仕事を主にPerlでこなして
きたことは嘘ではありません。どんな書き方でも、限られた
時間内にバグがないスクリプトが書ければ、仕事がこなせま
す。
perlの良いところは、Larry Wallが言うように、>> 449 の
(1)でも(2)でも、様々な方法で目的が達成できる点です。
454:デフォルトの名無しさん
06/01/27 22:01:37
なんつーか・・
一生VB・HSPやってるようなモンだな
進歩がなけりゃただの・・
455:デフォルトの名無しさん
06/01/27 22:12:42
449 の2しか知らん
456:デフォルトの名無しさん
06/01/27 23:32:19
>>453
こなせてないじゃん。
>>435 程度のことも人に聞かないと出来ないんだろ?
457:デフォルトの名無しさん
06/01/28 14:14:55
Perl って1987年12月生まれなんだな。18年前か
URLリンク(history.perl.org)
まあ17年前からPerl(というかUNIX)やってて正規表現知らないなんて
ありえない
458:デフォルトの名無しさん
06/01/28 15:43:49
「Perlプログラマのレベル10」
URLリンク(d.hatena.ne.jp)
のレベル5に
> 多くの人たちがこのレベルを超えないのは、たとえ非効率であっても、
> 再利用可能なコンポーネントの作成を除けば、ほどんど何でもできるからである。
とあるように、必要性を感じられなければそれ以上のものはなかなか知ることが出来ないんだろうね…人間ってのは。
この機会にPerl5の奥深さを学んでみたらどうだ?その霧の先には素晴らしい世界が広がっているぞ
459:デフォルトの名無しさん
06/01/28 17:48:46
>>457
最短マッチが使えるようになったのはPerl5以降だよ。
それ以前に覚えた正規表現をそのまま使い続けていたんだろうね。
460:デフォルトの名無しさん
06/01/28 18:00:14
ああ、最短マッチを知らなかったってことだったのか
斜め読みしてた
461:デフォルトの名無しさん
06/01/30 15:42:23
>>449
くっ。負けた。俺、Perl歴16年。
462:デフォルトの名無しさん
06/01/31 17:18:44
お願いします。
♂チームと♀チームが2つのコートで♂♀別総当り戦をしたく
両コート同時進行として
♂が4チーム・♀が2チームの場合・・・
【Aコート】 【Bコート】
♂1-♂2 ♂3-♂4
♀1-♀2 ♂1-♂3
♂2-♂4 ♀1-♀2
↑の3回戦で総当りになる。
では♂が7チーム・♀が3チームってなったとき
どう組み合わせればよいかみたいなのを計算させたいです。
できれば3連チャンとかで試合することにならないように・・・
463:デフォルトの名無しさん
06/01/31 17:30:13
>>462
♀1-♀2 が2回あるのはただの総当りではないと思われるが
どういう規則なのかね?
464:デフォルトの名無しさん
06/02/01 11:03:17
>>463
スミマセン間違いです・・・。
♂が4チーム・♀が2チームの場合・・・
【Aコート】 【Bコート】
♂1-♂2 ♂3-♂4
♀1-♀2 ♂1-♂3
♂2-♂4 -
465:デフォルトの名無しさん
06/02/05 15:52:03
>>462
こうですか? わかりません。
use strict;
use warnings;
local($a,$b);
my(@t,@p,@f,@ct,$w,$i,$j,$k);
($t[0],$p[0])=('',$f[0]='0');
$t[$_]='♂'.$_,$p[$_]=0,$f[$_]='011111111000',substr($f[$_],$_,1)='0' for (1..8);
$t[$_]='♀'.($_-8),$p[$_]=0,$f[$_]='000000000111',substr($f[$_],$_,1)='0' for (9..11);
@ct=('A:',' B:');
do {
++$_ for (@p);
for (@ct) {
$a=$b=$w=0;
for $k (1..$#p) {
$i=$j=0;
($i,$j) = ($p[$_]>$j && substr($f[$_],$k,1))?($_,$p[$_]):($i,$j) for ($k..$#f);
($a,$b,$w) = ($k,$i,$j<$p[$k] ? $j : $p[$k]) if $p[$k] && $j && ($w<$p[$k] || $w<$j);
}
print $_,$t[$a],'−',$t[$b];
$b=$p[$a]=$p[$b]=substr($f[$a],$b,1)=substr($f[$b],$a,1)=0;
}
print "\n";
$b+=/1/ for (@f);
} while($b);
466:デフォルトの名無しさん
06/02/06 13:29:43
>>462
CPAN には、順列、組み合わせを扱う Algorithm::Permute
というモジュールがある。これが使えるんじゃないの?
(オレは使ったことは無いけど)
467:デフォルトの名無しさん
06/02/08 10:27:13
総当たりの全組合せを求めた後で、それの並べ方を考えればいいのでは
ないだろうか。同じチームがなるべく連続しないようにするなど。
そして最後にコート分けする。
468:デフォルトの名無しさん
06/02/11 11:07:49
直リンクが不可能なアップローダー cgi あったら便利だと思う
直リンクされたことによって消滅するアップローダは多いからな
perl で書かれたものキボン
469:デフォルトの名無しさん
06/02/11 13:48:02
マルチ
スレリンク(tech板:308番)
470:デフォルトの名無しさん
06/02/11 13:49:32
>>468
ってかんなもんすでにあんだろが
471:デフォルトの名無しさん
06/02/12 06:11:09
>>470
直リンクを不可能にするような状態のcgiアップローダのスクリプトって配布されてる?
されていないんじゃ?
472:デフォルトの名無しさん
06/02/12 11:00:38
REFERER が期待する値以外だったらリジェクトするだけじゃん
473:デフォルトの名無しさん
06/02/24 06:43:47
URLリンク()にソケット飛ばしてHTMLデータを引っ張ってくるにはどうしたらいいですか?
474:デフォルトの名無しさん
06/02/24 08:44:13
>>473
ソケットは飛ばない。
perl -MLWP::Simple -e "get q|URLリンク(www.example.com)"
475:デフォルトの名無しさん
06/02/27 01:08:32
ファイル内の *.gif を *.bmpへ変換するプログラム作ってもらえませんか?
正規表現だったらどうなるでしょうか?
476:デフォルトの名無しさん
06/02/27 01:11:06
拡張子だけ(名前の変更(M))だけ、できればよいので、、、。
変更しなければならないものが100近くあるので^^;助けてください
477:デフォルトの名無しさん
06/02/27 01:21:50
>>475
そんな見当違いな質問をしてると
perlのスクリプトを書いても「どうやって実行するんですか?」
とか聞かれそうだと思われて誰にも相手されないよ
478:デフォルトの名無しさん
06/02/27 01:28:06
>>475
名前の変更(M)とか書いてる所を見るとWindowsだと思うが、
ファイル名をマジで変えるだけなら、DOS窓で
C>CD 変えたいファイルがあるディレクトリ
C>RENAME *.gif *.bmp
でいいんじゃマイカ?
UNIX系なら
% cd 変えたいファイルがあるディレクトリ
% mv *.gif *.bmp
どちらにしろ同じか。
※ データ形式は変わらないから開けなくてもしらん。
479:デフォルトの名無しさん
06/02/27 01:48:34
>>478
> % mv *.gif *.bmp
> % mv *.gif *.bmp
> % mv *.gif *.bmp
> % mv *.gif *.bmp
> % mv *.gif *.bmp
> % mv *.gif *.bmp
480:デフォルトの名無しさん
06/02/27 03:01:53
>>478
それは Windows/DOS じゃないと使えない技だぞ。
481:デフォルトの名無しさん
06/02/27 03:34:00
「名前の変更(M)」って書いてるくらいだから
Windows前提で答えれば良いっしょ
482:デフォルトの名無しさん
06/02/27 11:36:48
>>475はファイル名だけ変えたいんだね。
拡張子がbmpであるgifファイルを作りたいんだね。
いや、きっとそうなんだろうね。質問の内容からして
そうだし、他の人もそう理解しているようだし。
483:デフォルトの名無しさん
06/02/27 12:17:25
perl -pi -e "s/\.gif/\.bmp/g" <ファイル>
484:デフォルトの名無しさん
06/02/27 15:27:57
>>478
有難うございました。WinとLinux(UNIX)では、コマンドが違うからsystem()関数を使っても
同じプログラムとはいかないわけでしたね。
それに、Perlを使わなくてもできるんですね。
Cで書かれたコマンドがすでにあるからこれを使わない手は無いですね。OSにです。
485:デフォルトの名無しさん
06/02/27 15:30:28
今だCでプログラム書いたり、Cで書かれたexeばかり使っているので、手持ちのperlスクリプトを増やしたかった訳でした。。
486:デフォルトの名無しさん
06/02/27 15:31:53
いつもCで事足りてしまうみたいです。。有難うございました。
487:デフォルトの名無しさん
06/02/27 15:34:07
UNIX(Linux)とWindowsのコマンドが違う以上、汎用的なものを作るのってなかなか難しいですね。。。。?
488:デフォルトの名無しさん
06/02/27 15:35:30
本当、Cプログラマで良かったとつくづく思います。。
489:デフォルトの名無しさん
06/02/27 19:52:06
日記はチラシの裏に
490:デフォルトの名無しさん
06/02/28 00:02:26
リアルで会ったら頭蹴り飛ばしてやんのに
491:デフォルトの名無しさん
06/02/28 00:24:24
>>490
乙w死ねw
492:デフォルトの名無しさん
06/02/28 00:26:39
>>490
リアルで会ったら頭蹴り飛ばして殺してやるのにw
493:490
06/02/28 00:32:52
人格異常者だと思われてるから、普段リアルで誰にも相手されないよ〜
494:490
06/02/28 00:37:48
会社訪問した際、面接官に目が包丁のようだよと言われますた。
腹が立ったので、帰る際後ろから面接官の頭蹴り飛ばしてやりました。
電車に乗ると、たくさんのひとの頭を蹴り飛ばさなければならないので
怖くて乗れません。
495:490
06/02/28 00:39:55
別にいつ死んでもいいので、PG組んでます。
496:デフォルトの名無しさん
06/02/28 00:42:55
(;´д`)
497:デフォルトの名無しさん
06/02/28 00:45:32
世の中みんないい人ばかりじゃないしねぇ
498:490
06/02/28 00:46:15
ファイル内って書いてて答えがこれ?
C>RENAME *.gif *.bmp
死ね
499:490
06/02/28 00:53:16
491-495
で、だれ?おまえら
500:デフォルトの名無しさん
06/02/28 00:58:17
おれだよ、おれ
500
501:デフォルトの名無しさん
06/02/28 01:00:00
とりあえずここには
>>478以外、まともな人間はいなさそうだw
502:490
06/02/28 01:01:11
これ書いてる奴が?
% mv *.gif *.bmp
503:デフォルトの名無しさん
06/02/28 01:03:27
>>490
(;´д`) いや 話しかけてこないで。さよなら
504:デフォルトの名無しさん
06/02/28 01:45:20
ローマ字で入力すれば、あらゆるその読みの文字にマッチするスクリプト
gyouで行やら業やらぎょうやらギョウやらgyouやら
505:デフォルトの名無しさん
06/02/28 02:04:59
migemo
506:デフォルトの名無しさん
06/02/28 17:45:14
だってあれ完璧じゃないんだもん
507:デフォルトの名無しさん
06/02/28 18:53:11
>>506
migemo の「辞書」が完璧じゃないんだろ?
「辞書」をしっかり作れ。Perlでmigemoみたいなこと
をやるにせよ、辞書が命だ。
508:505
06/02/28 23:27:34
おまえも>503おまえも>506
死ね
509:デフォルトの名無しさん
06/03/01 17:08:44
>>508
うはwwwカッコヨスwwww
俺にも氏ねって言ってぇぇvvvvvv
510:505
06/03/02 04:09:38
>509
しねしねしねー♪从´∇`从
511:デフォルトの名無しさん
06/03/06 21:20:04
カウンターで
0=あ
1=1
略
49=を
50=ん
って感じに変換するにはどーすればいいんですか?
512:デフォルトの名無しさん
06/03/06 21:24:12
日本語でおk
513:デフォルトの名無しさん
06/03/06 21:33:41
>>511
my %c = (
'0' => 'あ',
'1' => '1',
# 略
'49' => 'を',
'50' => 'ん'
);
などと作っておいて $c{$count} のような感じで対応する文字列を求める。
514:デフォルトの名無しさん
06/03/11 00:49:18
>>1
楽天とかで任天堂DSを購入するスクリプト組んでくれよ。人力じゃ無理 買えないw
515:デフォルトの名無しさん
06/03/12 16:39:03
連投スクリプトください
516:デフォルトの名無しさん
06/03/12 16:52:43
#!perl
use LWP::Simple;
while (1) { get 'URLリンク(pc8.2ch.net)'; }
517:デフォルトの名無しさん
06/03/12 16:53:39
連投スクリプトください
518:デフォルトの名無しさん
06/03/12 16:54:45
連投規制、バーボンに引っ掛からない2ch投稿スクリプト希望
519:デフォルトの名無しさん
06/03/12 17:18:26
#!perl
use LWP::Simple;
while (1) {
get 'URLリンク(pc8.2ch.net)';
sleep 30;
}
520:デフォルトの名無しさん
06/03/12 17:40:11
明らかに悪用する気満々だから嫌。
521:デフォルトの名無しさん
06/03/12 17:47:13
スレを埋めるときに使うんです(><;)
522:デフォルトの名無しさん
06/03/12 18:49:39
スレ埋めは、自分でスクリプトを書ける者にのみ許される神聖なる儀式であルッ!!
523:デフォルトの名無しさん
06/03/12 18:51:08
思いっきり悪用の気配やんか
524:デフォルトの名無しさん
06/03/15 20:52:25
あんま調子にのんなよ
525:デフォルトの名無しさん
06/03/16 23:41:18
テキスト処理でおうかがいします。
半角数字と全角数字が混在したテキストがありまして、
一桁のみの数字は全角、二桁以上の数字は半角に統一したいのです。
中身を見てみると、「33」とか「679」とかになっていて、
どういう入力をしたのか不思議でなりません。
何かよいお知恵はないでしょうか。
Perl 5.8.1、Mac OS XのTerminalで作業をしています。
入力ファイルのエンコードはUTF-16(中国語処理のため)、
use utf8;で処理しています。
526:デフォルトの名無しさん
06/03/16 23:43:46
適当に正規表現で変換してったらいいんじゃないの?
s/1/1/
527:デフォルトの名無しさん
06/03/17 00:20:14
全部半角にしてから全角に直すだな
528:525
06/03/17 23:51:02
>>526
>>527
こんな感じで書いてみました。
while(<>) {
tr/[0-9]/[0-9]/;
s/(¥D)1(¥D)/$11$2/g;
(中略)
s/(\D)9(\D)/$19$2/g;
print;
}
ただ、これだと2回同じ処理をしないといけないですよね。
最初の処理でtr行、次の処理でs行になるんでしょうか。
これを効率よく1回の処理ですませたいのですが、いいやり方をご存知ないですか?
529:ヽ(´ー`)ノ ◆.ogCuANUcE
06/03/18 00:13:06
use utf8;
use Unicode::Normalize;
$str = NFKC($str);
$str =~ s/(?<!\d)(\d)(?!\d)/(my $ret = $1) =~ tr[0-9][0-9]; $ret/ge;
これでどうだろう。
530:デフォルトの名無しさん
06/03/18 17:46:30
>>528
逆。数字をまず全部全角にして、
その後2文字以上連続する全角数字を半角にする。
531:http://www.vector.co.jp/soft/win95/util/se072729.html
06/03/18 21:12:31
TextSS のWindowsXP(Professional)64bit化おながいします
もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
そういや64bitにネイティブ対応している2chブラウザてありましたっけ?
532:デフォルトの名無しさん
06/03/18 21:35:05
テキスト置換で64bitに対応してると
なんかいいことあんの?
533:デフォルトの名無しさん
06/03/18 22:40:20
>>531
マルチ + スレ違い乙
534:525
06/03/18 23:37:27
>530
ご指摘どうもありがとうございます。
他にも処理が山ほどあり、あまり時間がなくてテンパってました。
>529
うまくいきました。どうもありがとうございました。
こういうときに先読み・後読みを使うんですね。
教えていただいたものを流用して、
2桁のみ半角にすることもできました。
535:ヽ(´ー`)ノ ◆.ogCuANUcE
06/03/19 00:33:20
>>529 を書いて気が付いたんだが、Encode::JP::H2Z が変換できるのは
カタカナだけなんだな。
日本語処理で凝ったことしようと思ったら、Jcode なんかねぇ…。
536:デフォルトの名無しさん
06/03/19 03:25:47
>>532
読み込みの段階で64ビットは有利
537:デフォルトの名無しさん
06/03/19 09:25:18
うそつけ
538:デフォルトの名無しさん
06/03/22 21:16:20
>>528
「¥」と来たか。「\」ではないと。
539:デフォルトの名無しさん
06/03/29 06:15:44
すいません、リクです。
数字を有効数字の桁数で丸めるスクリプトを探しています。
例えば、round(数字, 桁数)の形で使うとすると、
round(-12345.067, 4)
round(-12345.067, 7)
round(0.0567, 1)
round(1234567890123456, 4)
は、それぞれ
-12350
-12345.07
0.06
1.235e+015
を返す、というようなものなんですが、どなたかお願いできませんか
540:デフォルトの名無しさん
06/03/29 12:19:00
最後の1つはprintfの%.3eでいいだろうし、上3つはMath::SigFigsのFormatSigFigsが
使えると思うから、値の範囲かなんかで場合分けしてそれぞれ食わせればいいんで
ないかな。
541:539
06/03/29 23:21:01
>>540
出来ました。どうもです。
あと、CPANを漁っていたらNumber::Formatに似たような機能をみつけたので、
これを改変してもうまくいきました。
sub round {
my ($number, $digits) = @_;
my $sign = $number <=> 0;
my $result = abs($number);
my $index;
if($number =~ /(.*)e(.*)/) {
$result = $1;
$index = $2;
}
my $precision = $digits - length(int($result));
if($result =~ /^0(\.0*)/) {
$precision += length($1);
}
my $multiplier = (10 ** $precision);
$result = int($result * $multiplier + 0.5000001) / $multiplier;
$result = -$result if $sign < 0;
$result *= (10 ** $index) if $index;
return $result;
}
542:デフォルトの名無しさん
06/03/32 03:59:17
$ip_sample = 222.4.xxx.xxx #フォームや環境変数から取得
$ip_data <<END_DATA; #外部ファイルから読み込んだデータ(実際は約2万4千行程度)
国名A-221.184.0.0-221.191.255.255
国名B-221.240.0.0-222.15.255.255
国名C-222.144.0.0-222.151.255.255
END_DATA
foreach (@ip_data) {
($cctld,$ip_a,$ip_b) = split(/-/,$_);
if ( 判定ルーチン ){$ans = $cctld
last;
}
}
print $ans;#この場合は"国名B"と表示したい
$ip_dataを参照して$ip_sampleの値が$ip_dataのどの行に在るかの判定を行い
$ansへ該当する$ip_deta行の$cctldを返すようにしたいのですが
判定方法でつまずいています。gethostxxx関数を使えという方向は無しにして
元の$ip_dataを増やさずに行える極力短い判定のルーチンを教示おねがいします
このテの質問はwebプでやれと言われそうな気がするけど質問の内容が
板を選ぶ以前のレベルの自覚があるので敢えてこちらに投下しまふ。
543:デフォルトの名無しさん
06/03/32 06:32:36
こういうパズル的なのはどこでも答えてもらえそう
my $target = "222.4.0.0";
my @iptable = qw( 国名A-221.184.0.0-221.191.255.255 国名B-221.240.0.0-222.15.255.255 国名C-222.144.0.0-222.151.255.255 );
$target = pack("C"x4, split(/\./, $target));
for(@iptable){
my($country, $from, $to) = split /-/;
$from = pack("C"x4, split(/\./, $from));
$to = pack("C"x4, split(/\./, $to));
if($from le $target && $target le $to){
print "$countryが範囲内でした\n"
}
}
544:デフォルトの名無しさん
06/03/32 06:34:47
ありがとうございます
早速走らせて見ます
実は・・・・
- foreach (@ip_data) {
+ foreach ($ip_data) {
ですた、阿呆ですんませんです・・・ orz
545:デフォルトの名無しさん
06/03/32 07:51:49
その2万4千行のデータの状態によっては物凄く処理速度に差が出そうだ。
データを読みながら1回から2万4千回判定するのがいいか、
全部配列に読み込んでおよそ5回判定するのがいいか。
546:デフォルトの名無しさん
06/03/32 07:54:50
違った。14回?
547:542
06/03/32 14:00:16
>>543
web鯖にはまだ置いてませんが手元の環境では問題なく動きました。
答えを教えてもらうと、なるほどなぁと納得行くのですが
その答えをせめて自分で作れるまでにはなりたいです。
ネットでも資料沢山あるけどラクダ本がほしくなったので
日曜日にでも街に探しにイッテキマス
目標は脱ド初心者w
>>545
できれば色々なパターンをベンチ取って一番軽い処理を使いたいですw
どうしても重かったらIP国別データを2〜3000行程度に分けて
IPの最初の8ビットを参照して呼び分けてみようかなと思ってますが・・・
548:デフォルトの名無しさん
06/03/32 20:14:29
>>547
アルゴリズムの勉強したほうがいいよ。
>>545-546でバイナリサーチに気づかないのはかなり重症
549:デフォルトの名無しさん
06/04/02 05:03:28
>>547
550:デフォルトの名無しさん
06/04/02 05:08:26
スマソ。書き込む前に送信してもうた・・・
>>547
IPをキー、国名を値にもつハッシュを作り、データベースクラスにtieしてみては?
2万4千行をメモリに持つのはつらいと思う。
551:550
06/04/02 05:38:58
ちょっと練習で書いてみた。IPは悩んだ末、強引に10進数に変換した。
my $data = <<EOF;
A-221.184.0.0-221.191.255.255
B-221.240.0.0-222.15.255.255
C-222.144.0.0-222.151.255.255
EOF
unlink 'test.db';
use Fcntl;
use DB_File;
tie my %db, 'DB_File', 'test.db', O_RDWR|O_CREAT, 0644, $DB_BTREE or die;
foreach(split/\n/, $data) {
my ($country, $from, $to) = split /-/;
for($from, $to) {
s/(\d+)\.(\d+)\.(\d+)\.(\d+)/$1*256**3+$2*256*256+$3*256+$4/e;
}
$db{$from-1} = 'N/A';
$db{$to} = $country;
}
untie %db;
sub find_country {
my $query = shift;
$query =~ s/(\d+)\.(\d+)\.(\d+)\.(\d)/$1*256**3+$2*256*256+$3*256+$4/e;
my $x = tie my %db, 'DB_File', 'test.db', O_RDONLY, 0644, $DB_BTREE or die;
my ($ip, $country) = ($query, 'N/A');
$x->seq($ip, $country, R_CURSOR);
return $country;
}
print find_country('221.239.0.1');
552:デフォルトの名無しさん
06/04/02 06:41:56
# IPアドレス→32bit整数
$ip = unpack('N', pack('CCCC', split(/\./, $ip)));
これで2倍くらいの速度になった
キャプチャが大きいんかなぁ
2個目のIPアドレス変換部分、最後が\d+じゃなくて\dになってたよ。
桁数が多いから計算ミスかと思ったけど、数字が文字列として尻についてただけなんだね。
553:デフォルトの名無しさん
06/04/04 17:06:58
>>552
use Socket; して inet_aton() 使ったら?
554:デフォルトの名無しさん
06/04/05 11:25:50
ベンチしたらinet_aton意外にとてつもなく遅いです。あとは
・「.」でばらすのはsplitより正規表現でキャプチャする方が速い
・4つの10進数から32bit整数にするのは、シフト>掛け算>pack-unpackの順で速い。
552の言うのとは逆の結果になったわけだがなんでかね?
Benchmark: running inet_aton, multiple_re, shift_re, unpack_re, unpack_split for at least 3 CPU seconds...
inet_aton: 5 wallclock secs ( 1.62 usr + 1.46 sys = 3.08 CPU) @ 425.97/s (n=1312)
multiple_re: 7 wallclock secs ( 3.26 usr + 0.00 sys = 3.26 CPU) @ 229803.99/s (n=749161)
shift_re: 3 wallclock secs ( 3.08 usr + 0.03 sys = 3.11 CPU) @ 274049.84/s (n=852295)
unpack_re: 3 wallclock secs ( 3.10 usr + 0.00 sys = 3.10 CPU) @ 183073.87/s (n=567529)
unpack_split: 4 wallclock secs ( 3.13 usr + 0.00 sys = 3.13 CPU) @ 119672.52/s (n=374575)
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4343日前に更新/217 KB
担当:undef