Perlについての質問箱 ..
175:デフォルトの名無しさん
09/03/01 00:21:22
>>169
まだ冗長だね。
#!/usr/bin/perl
while(<>){
print $_;
close(ARGV);
}
176: ◆TWARamEjuA
09/03/01 00:30:41 BE:2723055-BRZ(10000)
え?
177:デフォルトの名無しさん
09/03/01 00:40:57
PERLっていくら学んでも知らない書き方が出てくるな・・w
>>175
close(ARGV)ってclose($ARGV)やclose(@ARGV)とはどう違うん?
とりあえず、printの後の$_は省略出来るぜ
178:デフォルトの名無しさん
09/03/01 00:45:08
>>175
おお、d>printの後の$_
close(ARGV)はコマンドラインで指定されたファイルのうち今開いてるファイルを閉じる。
次の<>では次のファイルを開く。
179:デフォルトの名無しさん
09/03/01 00:52:04
#!/usr/bin/perl -n
print ;
close ARGV;
180:デフォルトの名無しさん
09/03/01 01:17:03
% perl -ne 'print;close ARGV'
181:デフォルトの名無しさん
09/03/01 01:23:46
perl -pe 'close ARGV' *
182:デフォルトの名無しさん
09/03/01 01:32:22
perl -pe'close ARGV' *
183:デフォルトの名無しさん
09/03/01 01:57:48
head -n 1 -q *
184:デフォルトの名無しさん
09/03/01 08:33:59
#!/usr/local/bin/radin;
print $musabetsutero;
185:デフォルトの名無しさん
09/03/01 10:38:53
>>184
いつのネタだよ。ったく。
186:デフォルトの名無しさん
09/03/01 10:42:21
>>181
先にcloseしちゃうからダメじゃん。
187:デフォルトの名無しさん
09/03/01 11:04:56
>>186
closeする前に1行分が読み込まれてるから大丈夫。
188:デフォルトの名無しさん
09/03/01 11:13:47
>>187
あ、そか。さんくす。
189:デフォルトの名無しさん
09/03/01 12:05:50
日本語でおk
190:デフォルトの名無しさん
09/03/01 12:12:36
openで開くファイル名に使えない文字コードってありますか?
Shift-jisでスクリプトを書いていてShift-jisのファイル名でファイルを作成しようとするとエラーは出ないのですがファイルが作成できません
英数字のファイル名だとファイルが作成できます
191:デフォルトの名無しさん
09/03/01 12:16:16
>>190
システムがShift-JISのファイル名に対応してなかったら当然作れない。
あと""で囲むとメタ文字が発動するかもな。
192:デフォルトの名無しさん
09/03/01 12:28:07
使用環境はWindows+ActivePer5.10.0lです
$file = "テスト";
open FH, ">$file"; →失敗
open FH, '>$file'; →書き込めるが当然変数展開がされない
open FH, ">テスト"; →成功
open FH, '>テスト'; →成功
ファイル名を変数を使わずに直接記述するとうまくいきました
変数に格納されている文字列の形式がおかしいのかな…
193:デフォルトの名無しさん
09/03/01 12:35:19
>>192
調べてないけど、2回""で囲ってるからメタ文字が二度発動してるんだと思われ。
194:デフォルトの名無しさん
09/03/01 12:37:40
まあ、Shift_JIS文字列はいかなる場合でもメタ文字に気をつけるのが吉。
ダメ文字という言葉は知っておいた方がいい。
195:デフォルトの名無しさん
09/03/01 13:24:19
時々ファイル名にもIOレイヤみたいな仕組みが欲しくなるね。
196:デフォルトの名無しさん
09/03/01 13:45:53
ダメ文字の対処法としてメジャーなのが
$a = '十\';
だと思うが、探すのもメンテも面倒だしなんかイラッとくるから、
$a = <<'EOF';
十
EOF
chop($a);
とするようにしてる。
197:デフォルトの名無しさん
09/03/01 13:47:50
つーかそんな面倒なことしなくてもqwで何とかなるような気がしてきた。
昔はqwなかったからその時の流儀をそのまま使ってる。
198:デフォルトの名無しさん
09/03/01 13:53:03
あー久しぶりにこのコード書くなと思ったら、最近はUTF-8でコード書いて出力時変換だな。
連投スマソ
199:デフォルトの名無しさん
09/03/01 17:07:13
>>190-198 のような話題を解決するために
>>4のテンプレがあるのにな。
200:190
09/03/01 19:41:26
open ">$file";
ならファイルが作成できるんですが、
open ">$file.txt"にするとだめでした
事前に$file .= ".txt";
で文字結合してもだめでした
201:デフォルトの名無しさん
09/03/01 19:48:27
file="テスト"なんだよね?
ソースファイルのエンコーディングは何?
もしSJISでなければSJISにしてみては?
202:デフォルトの名無しさん
09/03/01 19:49:52
ってSJISって書いてあった。すまん
203:190
09/03/01 19:53:45
ソースファイルのエンコーディングはSJISです
open ">テスト.txt";はできます
末尾に.txtを文字結合すると書き込めなくなるようです
204:190
09/03/01 20:00:43
Dumpしてみたら原因がわかりました
改行コードを含んでいたようです
スレ汚し失礼しました
205:デフォルトの名無しさん
09/03/01 22:41:48 BE:1417729695-2BP(192)
Perrrrrrrrrrrrrrrrrrrrrrrrrrrrnrrrrrrl
206:デフォルトの名無しさん
09/03/03 13:58:07
オブジェクト指向の勉強中なんだが…
my(%ch, $i);
$i = 0;
sub new{
my($pkg, $data) = @_;
$ch{$i} = $data;
my $self = {obj_num => $i ++};
return bless $self, $pkg;
}
sub DESTROY{
delete $ch{$_->{obj_num}};
}
カプセル化ってこんな感じでいいの?
自分で動かした感じは問題なさそうだけど普通のオブジェクトとアクセサしか使えないだけで同じ動作する?
207:1/2
09/03/03 17:18:15
$iがゴニョゴニョとか$_って何よ?とかあるが…それを差し引いて
どのレベルでのカプセル化を言っとるんだ?
その例だと、呼出元にて、$obj->{obj_num} = 10 ; とかしてobj_numに
直接代入可能だから、その点ではカプセル化されたとは言えん。
只、編集とか継承とかしない限りにおいて、$ch{$obj->{obj_num}} には
アクセス出来ん事だけは確かだ。ゲッタねえし。
インサイドアウトオブジェクトレベルの意味ならば以下に簡単な例。
Hoge2は(恐らく)貴方の目指してた物をインサイドアウトで実現してる。
new時に投入した'hoge'がアクセサを介さず変えられるか?がポイント。
package Hoge; #=== カプセル前 ===
sub new { bless { data => pop }, shift ; }
sub setter { shift->{data} = pop ; return ; }
sub getter { shift->{data} }
1;
package Hoge2; #=== カプセル後 ===
use Scalar::Util qw(refaddr) ;
my %hash ;
sub new { my $obj = bless \do{''}, shift ; $hash{ refaddr $obj } = shift ; $obj ;}
sub getter { $hash{ refaddr shift} ; }
sub setter { $hash{ refaddr shift} = pop ; return ; }
sub DESTROY { delete $hash{ refaddr shift } ; }
1;
208:2/2
09/03/03 17:18:54
package main ; #=== 実行 ===
use Data::Dumper ;
use Hoge;
use Hoge2;
my $obj = Hoge->new('hoge') ;
print Dumper $obj ; # ほら丸見えだし、
$obj->setter('fuga') ; # 折角セッタでセットしても
$obj->{data} = 'bar' ; # カプセル化出来てねえよ。
print $obj->getter . qq{\n} ; # ほらね、変えられちゃった
my $obj2 = Hoge2->new('hoge') ;
print Dumper $obj2 ; # bless先がdo{ }で弄り様もねえしなあ。
printf "%s\n", $obj2->getter;
$obj2->setter('fuga') ; # 専用のセッタを用いて漸く変更可能。
printf "%s\n", $obj2->getter;
#Hoge2を以下の様に書いてるサイト(有名所)もあるが、大ポカだから注意!
#package Hoge2;
#my %hash ;
#sub new { my $obj = bless \do{''}, shift ; $hash{ $obj } = shift ; $obj ;}
#sub getter { $hash{ shift } ; }
#sub setter { $hash{ shift } = pop ; return ; }
#sub DESTROY { delete $hash{ shift } ; }
#1;
長文失礼
209:デフォルトの名無しさん
09/03/03 19:46:08
>>207
それそれ、それ完璧
Scalar:Util の refaddr がよく分からんけど、Dumper に見てもらった限りだとオブジェクトごとに固有の数字を割り振ってくれる感じなのかな?
とりあえずゲッターとセッター書いたのに、
使わなくても自由に書き換えできるなら書く意味ないじゃんってのが気持ち悪かったから、
それが解消できればよかった
$iゴニョゴニョはrefaddrの代わりにオブジェクトごとに固有の数字を割り当てるために使ってたつもり
$_はミスです
後でScalar::Utilについては色々詳しく調べてみます、丁寧にありがとう
助かりました
210:デフォルトの名無しさん
09/03/04 19:05:23
>>208
どこらへんが大ポカなの?
211:デフォルトの名無しさん
09/03/05 09:30:59
ゥーperlーパー
212:デフォルトの名無しさん
09/03/05 11:27:45
Perlかわいいよ
213:デフォルトの名無しさん
09/03/07 01:50:07
*Hoge::huga = /&hogehoge('hugahuga');
としたときに引数が設定されたメソッドが生えると思います
ですが
Hoge::huga('hogehoge');
としてもhogehogeは無視されるようです
設定した引数に加えて更に引数を追加する方法は無いでしょうか
214:デフォルトの名無しさん
09/03/07 04:47:47
>213
> *Hoge::huga = /&hogehoge('hugahuga');
> としたときに引数が設定されたメソッドが生えると思います
本当?
> 設定した引数に加えて更に引数を追加する方法は無いでしょうか
*Hoge::huga = sub { hogehoge('hugahuga', @_); };
215:デフォルトの名無しさん
09/03/07 12:31:20
>>213
つ Sub::Curry
216:デフォルトの名無しさん
09/03/07 13:32:36
SUPERAntiSpywareでスキャンしていたら、
Adware.Vundo/Variant [ 4 items ]
Files
C:\PERL\LIB\AUTO\FCNTL\FCNTL.DLL
C:\PERL\LIB\AUTO\LIST\UTIL\UTIL.DLL
C:\PERL\LIB\AUTO\MIME\BASE64\BASE64.DLL
C:\PERL\LIB\AUTO\SOCKET\SOCKET.DLL
と検出されていました。
昔、perlをインストールした憶えはあるのですが、入れた経緯は忘れてしまいました。
これって誤検出ですよね?
誰かSUPERAntiSpyware入れてる方で、検出された方いますか?
217:デフォルトの名無しさん
09/03/08 12:29:04
perlとawkの使い分けってどうするんでしょうか?
perlが使えればawkでできることは全てできる、それはわかってるんです。
でも、awk使う人ってawk単独で使うわけじゃなくてbash,sed,grepなんかも使えるから
結局出来ることに違いはないですよね。
むしろやる内容によってはawkのほうがスッキリ書けますし。
どういった場合にどちらを使えば良いのか教えて下さい。
※awkは古いからダメとか、ダサいとか、そういうのは抜きにして下さい。
純粋に有用性の観点のみでお願いします。
218:デフォルトの名無しさん
09/03/08 12:35:53
自分が楽だと思う方でいいと思うよ
219:デフォルトの名無しさん
09/03/08 12:43:15
>>218
やっぱり楽なほうを選ぶのが賢明ですか。
Windowsだとperl単独のほうが環境を整えやすいでしょうね。
UNIXやLinuxだったら最初から色々入ってるのが普通ですけど。
Cygwinとか入れてよければどちらでも手間は変わらない気がしますけど、
学校や会社のPCなんかだと、何かインストールするのに許可が必要だったりしますし。
220:デフォルトの名無しさん
09/03/08 12:47:41
>>217
元awk使いだけど。言語的なメリットはないと思うよ。
Perlはawkの後方互換を目指した言語だからね。awk2perlっつって
awkスクリプトをPerlスクリプトに置換するものがあるのは最近の人は知らなさそう。
ちなみにPerlにはawk互換のためだけに作られた機構がいくつかある。
awkのメリットは必ずプリインストールされているから
root権限持ってない場合でも必ず動くってとこだけど、
今日びデフォルトでPerlが入らないケースは稀だろうから、
このメリットも失われつつある。
長いことCGIプログラマをやってきたけどPerl覚えてからawkを使う機会は
上記のようなケースを除いてゼロになったな。特にここ10年は全く書いてない。
221:デフォルトの名無しさん
09/03/08 12:51:19
>>220
a2pで変換すると長〜いスクリプトに変換してくれますよね。
あれってどうにかならないでしょうか。
あれ見るとawkのほうが簡単じゃん、って思ってしまうんですよ。
222:デフォルトの名無しさん
09/03/08 12:57:02
>>221
いやいやa2pは人工知能じゃないし、最適化とかはしないから
長くなるのは仕方ない。
awkはバイナリ扱えないとか(今は知らんけど)文字コード変換が大変とか
色々制約あるし、書くのもPerlの方が楽だよ。
223:デフォルトの名無しさん
09/03/08 13:06:22
>>222
>いやいやa2pは人工知能じゃないし、最適化とかはしないから
>長くなるのは仕方ない
私もそれはあるだろうなぁ〜、と思ってましたけど、やっぱりそうですか。
>awkはバイナリ扱えないとか(今は知らんけど)文字コード変換が大変とか
>色々制約あるし、書くのもPerlの方が楽だよ。
シェルスクリプトでバイナリは扱えますよね。
nkfとかconvmvとか使うと文字コード変換できますね。
でも、やっぱりperlのほうが楽なのですか?
もし楽ならperlを学んでみたいなぁ、と思います。
224:デフォルトの名無しさん
09/03/08 13:13:58
>>223
でもやっぱりPerlが楽ですね。awkより短く速く書けるよ。
225:デフォルトの名無しさん
09/03/08 13:23:11
何しろLarry Wallがawkの弱点に音を上げて、awkの欠点弱点を
補うべく作られた言語だからね。そもそもは。
226:デフォルトの名無しさん
09/03/08 14:02:19
awkはできることが少ない。
でも当たり前だよな。
sedはできることが少ない。
grepはできることが少ない。
wcは、mvは・・・
って、言えばその通りだが、
単独で使うわけじゃないから気にするようなことでもない。
一つで何でもやれるようになんていうLarry Wallがバカなだけ。
227:デフォルトの名無しさん
09/03/08 14:37:32
perlとsedの使い分けってどうするんでしょうか?
perlが使えればsedでできることは全てできる、それはわかってるんです。
でも、sed使う人ってsed単独で使うわけじゃなくてbash,awk,grepなんかも使えるから
結局出来ることに違いはないですよね。
むしろやる内容によってはsedのほうがスッキリ書けますし。
どういった場合にどちらを使えば良いのか教えて下さい。
※sedは古いからダメとか、ダサいとか、そういうのは抜きにして下さい。
純粋に有用性の観点のみでお願いします。
228:デフォルトの名無しさん
09/03/08 14:56:45
>>227
perlとperl以外で同じことをやってみれば違いがわかるだろう。
大雑把な傾向として、シェルスクリプトのほうが覚えることが少なく、
簡単なことは簡単にかける。
日本刀があれば包丁は要らないわけではないのと同様、
Perlがあってもsedは必要。
sed 's/nae/moe/g' akiba.txt
perl -pe 's/nae/moe/g' < akiba.txt
----------------------------------------------
awk 'BEGIN{FS=","}$2 == $3{print $1}' hoge.csv
perl -F',' -alne 'print $F[1] if $F[2] ne $F[3]' hoge.csv
でも、ある程度以上の規模のスクリプトを組んだり、
C言語に近いようなことをしたいならPerlを選びましょう。
229:デフォルトの名無しさん
09/03/08 15:26:42
>>226
Perl不要論ですか。これは新しい。
230:デフォルトの名無しさん
09/03/08 15:37:05
>>228
絶対必要ってわけじゃないだろ。Perlが入ってないマシンいじる
機会があるならともかく。覚えといて損はない程度だと思うが。
日本刀でも料理は出来る。
>>226
インストーラがPerlを要求するご時勢にこんな事言う人がいるとは。
昔はそうやって批判する人もいたけどね。
231:デフォルトの名無しさん
09/03/08 15:47:58
>>230
日本刀で料理w
そこまでムキになって否定しなくてもいいんでない?
世の中シェルスクリプトはできるけどPerlはできない人なんてゴロゴロいるし、
Perlが出来ても使い捨てスクリプトはシェルスクリプトでやる流儀の人もいる。
どうあがいても完全にシェルスクリプトを駆逐するのは無理だよ。
自動車の優位性をいくら説いても原チャリや自転車はなくならないのと同じでさ。
232:デフォルトの名無しさん
09/03/08 15:52:30
>>231
不要とは言ってない。Perlでブートするわけにはいかんだろw
ただマの知識として必要かというとPerlで事足りる人もいるだろう。
233:デフォルトの名無しさん
09/03/08 16:07:30
>>231
お前こそムキになってPerlは必要ないって言ってるじゃん
234:デフォルトの名無しさん
09/03/08 16:07:39
>>232
エンドユーザの立場から一言。
プログラマの方のお考えはごもっともです。
しかし、「高層建築にカンナやカナヅチなんて要らない」的発想が
今日のエンドユーザー・コンピューティングの惨状を招いたのではありませんか?
たかだかちょっとした自動化、文書検索、集計程度も自分で書けない人だらけにしてしまったのは
「素人は言語なんて使わなくていい」という発想のせいだと思えるのですが。
235:デフォルトの名無しさん
09/03/08 16:21:46
自分の目的を達成できれば言語なんて何使ったっていいんだよ。
特にスクリプト系言語を使うってことは、大体が小物でしょう?
自分がサッと書けること。これが重要。
236:デフォルトの名無しさん
09/03/08 16:26:44
>>234
時代のせいだと思います。
例えば自分はWebプログラミング畑だけど、全てのWebアプリケーションを
全部Cで書くことは納期的にほとんど不可能です。awkでは完成すらしない
ものも出てきます。
自分も昔はquick sortくらいは空で書けたけど、Webに足を
突っ込んだ今ではそれすら忘れてしまいました。
237:デフォルトの名無しさん
09/03/08 16:47:37
>>236
quicksortなんてlibcに任せときゃいいんですよ。気に病むことでもない。
238:デフォルトの名無しさん
09/03/08 16:59:13
>>236
quick sortもできないの?
ププ
239:デフォルトの名無しさん
09/03/08 17:03:17
>>237
だね。
>>238みたいになんでも自分で作るとたまに間違うことがあるし、
馬鹿馬鹿しいプライドで心がねじ曲がってしまう。
240:デフォルトの名無しさん
09/03/08 17:17:39
エンドユーザの立場から一言。
プログラマの方のお考えはごもっともです。
しかし、sortコマンド打つのが簡易で合理的な発想だと思えるのですが。
たかだかちょっとしたソートも自分で書けない人だらけにしてしまったのは
「素人はソートなんてやらなくていい」という発想のせいだと思えるのですが。
241:デフォルトの名無しさん
09/03/08 17:22:21
単純なテキストファイルで単純なソートなら sort(1) でもいいんだろうけど
242:デフォルトの名無しさん
09/03/08 17:24:54
FYI
■libcでqsort()を再帰を使って実装してる香具師は怠慢だろ…常識的に考えて
URLリンク(d.hatena.ne.jp)
243: ◆TWARamEjuA
09/03/08 18:49:15 BE:1742944-BRZ(10000)
そーっとしといてやれよ。
244:デフォルトの名無しさん
09/03/08 20:19:13
>>230
シェル言語ってのは地味に需要がある。
MSがUNIX/Linuxへの対抗心むき出しでWindows PowerShellなんぞ作ってるくらいだから。
UNIX/Linuxを普段使ってる人ってのはシェルを対話的に利用するのに慣れている。
だから、さて何か組もうかって時もシェル言語が第一選択になる。
それでダメな時に別の言語を選ぶ。
UNIXの世界ではシェルでできることはシェルで、というのが昔から暗黙の了解なので
いきなりPerlやPythonでやろうとするのは、コンピュータの世界にWindowsから入った人くらいだろう。
それは例えて言うなら、自家用車を持ってるのにリムジンをレンタルしてドライブするようなもんだ。
245:デフォルトの名無しさん
09/03/08 22:44:41
ワンライナーはsed,awk,sortの方が楽なことが
多いな。例えばいくらオプションでsplitを暗黙
にさせても[]書かされる時点で、$1,$2でいい
awkにはかなわない。
もちろんガッツり書くならスクリプト言語。
246:デフォルトの名無しさん
09/03/09 17:17:27
>>244
1行目は同意だが、あとはいつの時代の話だよと思うな。
そりゃ配布物配ろうとか思ったらまずshを選択するだろうが、
例えばWebアプリケーション作る時にshを第一選択肢に上げるか?
hello world以外は特にsh使う場面って思いつかないんだが。
247:デフォルトの名無しさん
09/03/09 17:48:50
>>246
普通にファイル処理やテキスト処理には使うし、
処理を自動化するのにも使うし、
定期的にどっかのサイトにアクセスして、特定の情報だけを記録するとか、
その程度の用途には当たり前に使うと思うが。
本格的なプログラミングか、ワープロとか表計算みたいに出来合いのアプリで済ませるか、
二者択一だったらパソコンライフなんて送れねーよ。
それとも、プログラミングってのはアプリとwebの開発のためだけにあんのか?
248:デフォルトの名無しさん
09/03/09 17:54:32
小規模ならまずシェルで出来ないか考えるよな
249:デフォルトの名無しさん
09/03/09 17:54:45
>>247
例外は認めないのかよw
普遍的な事のように書くから変な誤解受けるんだろ。
んで、それらの用途にシェル使わない人もいると思うが何かデメリットでもあるのか?
「UNIXの世界ではふつー」とかじゃ理由にならんだろ。
例えば毎秒起動とかだったらさすがに少々面倒でもshを第一選択とするのが吉だと思うが。
250:デフォルトの名無しさん
09/03/09 17:58:02
>>249
>んで、それらの用途にシェル使わない人もいると思うが何かデメリットでもあるのか?
同じことができるならそれでいい。
ただし、より面倒臭くなることはあるだろう。
何も難しくないワンライナーでできることに他の物使うとか、そういうのは単なるアホだろ。
251:デフォルトの名無しさん
09/03/09 18:06:37
トリッキーなことしなくても普通にシェルでできるなら、それが一番簡単なんじゃね?
コマンド並べれば動くから
難しいナンチャラ理論やらウンタラ指向やらも考えなくて済む
プログラマでないエンドユーザや管理者にも使えるのは大きなメリットだと思うな
252:デフォルトの名無しさん
09/03/09 18:07:23
>>250
要するに余計面倒な時だけsh使うでもいいわけね。
>>244はとてもそういう論調には見えないけど。
そういう俺はよくshスクリプト書くがな。
253:デフォルトの名無しさん
09/03/09 18:10:49
>>252
w3m -dump URLリンク(www.media-k.co.jp) | grep '´_'
254:デフォルトの名無しさん
09/03/09 18:11:49
>>250
> 何も難しくないワンライナーでできることに他の物使うとか、そういうのは単なるアホだろ。
Perlプログラミングに没頭してる合間とかだったら、AWKの方が少々短くても
Perlのワンライナーを選択することはあるな。
短く書けるっつったってせいぜい数バイトだろ>>228。頭切り替える方が面倒だわ。
255:デフォルトの名無しさん
09/03/09 18:13:28
>>254
Perlに没頭してるあなたにとってはPerlでやるほうが簡単なんでしょうね
別にそれはそれでいいのでは?
だからといって、それはあなた個人の特殊事情で簡単に感じるだけなのだから、
シェルでやるほうが手間が少ない人にまで強要すべきことではないでしょう
256:デフォルトの名無しさん
09/03/09 18:15:10
>>255
いつ強要したんだよww俺はこうだって言っただけじゃん。
逆に>>244なんかshで出来ることにPerl使う奴は外道みたいな書き方じゃん。
257:デフォルトの名無しさん
09/03/09 18:17:24
この人論点が分かってないからトンチンカンな事を言うのかね。
「何事もshが第一選択にするのが普通、じゃなきゃ外道」
みたいな主張がおかしいと言ってるだけなんだが。
258:デフォルトの名無しさん
09/03/09 18:22:07
>>257
話がかみ合わない理由って案外簡単なんじゃない?
普通にUNIX系OS使ってる人にとってshって標準的な道具だから、
シェルで作業するってのは鉛筆で文字を書くのと同じくらい簡単で当たり前なんだよ。
だから、どうしても他の物を試す前にshで、っていう発想になるだけでしょ。
259:デフォルトの名無しさん
09/03/09 19:01:03
いったい、シェルの話をしているのかシェルスクリプトの話をしているのか
はっきりさせてくれ。
260:デフォルトの名無しさん
09/03/09 19:09:12
つーかPerlの話しようぜ
261:デフォルトの名無しさん
09/03/09 19:20:03
>>259-260の流れわろた
262:デフォルトの名無しさん
09/03/09 19:41:35
この現代に、WEBアプリ以外に何があるの?
世界じゅうどこを見て回っても、WEBアプリしか無いんだから
awk も sh もいらん。perl しか選択の道は無いだろ。
263:デフォルトの名無しさん
09/03/09 19:43:50
最近の家庭電化製品はマイコン内臓でずいぶん賢くなった。
しゃべる電子レンジのファームウエアを awk や sh で書けると思ってんの?
264:デフォルトの名無しさん
09/03/09 19:56:31
宗教の勧誘みたいw
265:デフォルトの名無しさん
09/03/09 20:00:33
shのほうが慣れてるからsh使うという人が、昔は多かった。
イマドキのPerlerには、Perlのワンライナーのほうが慣れてる人が多いんだろうね。
266:デフォルトの名無しさん
09/03/09 20:06:24
>>265
perlの人は
ls
と打たずに
opendir(DIR,'.');
@file = sort readdir(DIR);
foreach(@file){
$time = localtime ((stat($_))[9]);
print "$time"."\t"."$_\n";
}
closedir(DIR);
とやるわけですね?
簡単なことをいちいち
perl ふがほげ
perl うんたらかんたら
ってやるのは不自然なんですけど
267:デフォルトの名無しさん
09/03/09 20:10:37
lsで済むことならlsじゃねえの普通
Windowsユーザならlsなんぞ打たずにファイラとかエクスプローラだろうしな
でも、スクリプトの話じゃなかったのか
268:デフォルトの名無しさん
09/03/09 20:13:40
ファイルの行数調べるのも「Perlでどうやろうか」とか考えちゃうのね
cat hoge | wc -l
とせずに
269:デフォルトの名無しさん
09/03/09 20:14:54
そこは
wc -l <hoge
catとか使わないな
270:デフォルトの名無しさん
09/03/09 20:15:05
>>267
シェルとシェルスクリプトに何の違いがあんの?
コマンドが単発か複数かの違いだけじゃん?
271:デフォルトの名無しさん
09/03/09 20:15:32
ファイルに記述するか
その場でうちこんで終わりかの違いじゃね
272:デフォルトの名無しさん
09/03/09 20:17:15
シェル言語の有用性認めないなら
シェル言語使わなけりゃいいじゃん
そこまで言うならPerlだけで暮らせ
273:デフォルトの名無しさん
09/03/09 20:18:57
bashのコマンド使わないでperlだけで暮らしたらさぞ便利だろうねw
274:デフォルトの名無しさん
09/03/09 20:23:47
Windowsユーザの9割はbashなんて使ってないけどね
275:デフォルトの名無しさん
09/03/09 20:26:16
>>274
この話ではWinユーザは無関係と思われ
UNIXの操作ではシェルが母国語みたいなもんなのに
簡単な用事でも外国語使いたがる変人だけが対象
276:デフォルトの名無しさん
09/03/09 20:30:51
それって、いもしないキャラを作り上げてない?
277:デフォルトの名無しさん
09/03/09 20:40:09
awk '/UNIX/ || /Linux/' hoge
perl -ne 'print if /UNIX/ || /Linux/' hoge
シェルを普通に使いこなしてる人なら最初の方が明らかに簡単だろ?
打鍵数だけじゃなく、構文的にも。
「何でもPerl」ってやりかたが変だってのは、そういうこと。
shは古い、awkやgrepは低機能だと文句言いながら、より難しくやってる人たちを変だと言ってるだけさ。
で、シェルとシェルスクリプトをやたらに区別したがってる奴がいるが、本質は同じだろ。
シェル使って作業して、コマンドを複数使って仕事しようとすると、シェルスクリプトと言われるだけで。
278:デフォルトの名無しさん
09/03/09 21:04:33
>>277
その例なら
grep '(UNIX|LINUX)' hoge
かなあ
awkなんて使わないよ
279: ◆TWARamEjuA
09/03/09 21:09:44 BE:1960463-BRZ(10000)
my @textfiles = grep /txt$/, qx|ls -l|;
でもえぇやん。。。
280:デフォルトの名無しさん
09/03/09 21:13:16
>>278
環境によって動かないとおもいまつ
GNU grep 2.5.3
では少なくとも×
grep -e UNIX -e Linux hoge
これなら動きます
ただし、awk使うのと難しさに大差ありません
281:デフォルトの名無しさん
09/03/09 21:15:29
例を挙げれば挙げるほど
Perlより簡単な方法が出てくる件
282:デフォルトの名無しさん
09/03/09 21:21:06
>>280
ありゃ
egrepならいいのかな?
283:デフォルトの名無しさん
09/03/09 21:21:44
>>282
そうでつね
284:デフォルトの名無しさん
09/03/09 21:29:38
ここまでの流れを見た率直な感想
Bシェルとかgrepとかawkとかsedなんて前時代の遺物だと思ってたけど・・・
今でも十分に使えんじゃん
285:デフォルトの名無しさん
09/03/09 21:45:28
結局どうやるのがもっとも効率的かを的確に判断できるように
あらゆるスキルを磨いとけってこった。
286:デフォルトの名無しさん
09/03/09 22:15:16
専用のコマンドの方が使い勝手がいいのは当然だよね
それでも sed や awk を使うのでは1行で済まない場合は
(シェルスクリプト組むような場合は)、Perl の方がシンプルになってくる
287:デフォルトの名無しさん
09/03/09 22:19:03
ワンライナーの話をしてるのに
なんでshのコマンドラインとワンライナーを比べるんだか・・・。
ネジ緩んでるの?後者は一応スクリプトだぞ。
コマンドはスクリプトで書くのが大変or不可能なことをするために
存在するんだからwcとか例に持ってくるのは愚の骨頂。
288:デフォルトの名無しさん
09/03/09 23:24:23
>>286
簡単なことだけならシェルスクリプトの方がシンプルだと思うが
>>287
それって自分の首絞めてないか?
コマンド単体で強力ならそれを利用したスクリプトも強力なわけで
289:デフォルトの名無しさん
09/03/09 23:42:01
>>287
ワンライナーってコマンドラインの延長じゃねーの?
質的な違いなんてねーよ
290:デフォルトの名無しさん
09/03/09 23:48:37
質問です!
Perlとsedとawkとbashはどれがいちばんつおいのですか?
291:デフォルトの名無しさん
09/03/09 23:57:59
perlで話題が無いからって、そこまで引っ張ることないだろ(w
292:デフォルトの名無しさん
09/03/10 00:00:57
じゃあ無理やり話題作りを。
問:以下のシェルスクリプトをPerlに直しなさい。
#!/bin/sh
o=$(echo "$@" | sed 's/ /+/g' | sed 's/ /+/g')
w3m "URLリンク(www.google.co.jp)"$o"&meta=lr%3D&aq=f&oq="
293:292
09/03/10 00:08:22
ちなみに、
sed 's/ /+/g' | sed 's/ /+/g'
の部分は
sed 's/[ ]/+g'
でも同じですが、
全角スペースと半角スペースを列記すると見た目にわかりにくくなるので、
問題文ではあえて別々に処理しとります。
294:デフォルトの名無しさん
09/03/10 00:15:36
sedやw3mがシェルスクリプトの一部だというなら
perlも仲間に入れてあげなよ
295:デフォルトの名無しさん
09/03/10 00:18:46
perlだけは絶対入れない。絶対ニダ
296:デフォルトの名無しさん
09/03/10 00:21:18
sedとかawkでやると楽な事とperlでやるのが楽な事の境界線を
判断するのは難しいよな
297:デフォルトの名無しさん
09/03/10 01:53:00
まーあれだ、シェルがどーこーとかほざいてる奴らが言ってるのはどうせbashだろ。
糞linuxごときの標準シェルなんぞどーでもえーわ
298:デフォルトの名無しさん
09/03/10 06:31:06
どーでもえーことに熱くなれるっていいネ!!
299:デフォルトの名無しさん
09/03/10 11:47:12
Linux板のシェルスクリプトスレはここほど釣れなかった
からといってここに八つ当たりしなくてもねえ。
300:デフォルトの名無しさん
09/03/10 22:07:54
RSSから指定期間の祝日を取得するスクリプトを書いてる。
ある程度の日付の範囲をもって複数の祝日を取得するときは問題なく動作するんだけど、ある特定の祝日を一つに絞って実行すると上手く動作しない。
printをあちこちかませて調べてるんだけどどうも$keyが上手く取れてない様子。通常はURLが入るんだけどNGの場合はXMLのタグ名がなぜか入ってきてNGになってしまう。
上手く動かすには何が足らないんだろ?
use LWP::UserAgent;
use XML::Simple;
&Holiday ("2009-02-01", "2009-04-01"); # OK
&Holiday ("2009-03-20", "2009-03-21"); # NG
sub Holiday {
my $feed_base = 'URLリンク(www.google.com)';
my $sdate = $_[0]; # この日を含む開始日
my $edate = $_[1]; # この日を含まない終了日
my $query = "start-min=${sdate}&start-max=${edate}";
my $feed_url = $feed_base . '?' . $query;
my $ua = LWP::UserAgent->new;
my $res = $ua->get( $feed_url );
if( $res->is_success ){
my $xml_parser = XML::Simple->new();
$XML::Simple::PREFERRED_PARSER = 'XML::Parser';
my $holidays_data = $xml_parser->XMLin( $res->content );
foreach my $key ( keys %{ $holidays_data->{ entry } } ){
#print "$key\n";
my $holiday_day = $holidays_data->{ 'entry' }{ "$key" }{ 'gd:when' }{ startTime };
print $holiday_day , "\n";
}
}else{
die $res->status_line;
}
}
301:デフォルトの名無しさん
09/03/10 23:08:10
質問です。
以下のコードを実行するとhoge_fooという出力を期待していたのですがfooとしか表示されません。
おそらく_が何か演算子としての働きをしているんだと思いますが、
一体これはどういう意味を持つ演算子なんでしょうか?教えてください。
Perlのバージョン:This is perl, v5.8.8 built for MSWin32-x86-multi-thread
$hoge="hoge";
$foo="foo";
print "$hoge_$foo\n"; # 出力:foo
print "$hoge\_$foo\n"; # 出力:hoge_foo
302:301
09/03/10 23:10:45
$hoge="hoge";
$foo="foo";
$hoge_="まさか・・";
print "$hoge_$foo\n";
print "$hoge\_$foo\n";
どうみても誤解釈です。ほんとうにありがとうございました。
303:デフォルトの名無しさん
09/03/10 23:11:02
>>301
3行目で$home_ を展開してる。
サンプルコードの最初に
$hoge_ = "HOGE";
て入れてみると、3行目の出力が「HOGEfoo」になる。
304:デフォルトの名無しさん
09/03/10 23:11:34
あ、>>302で解決してますね
305:301
09/03/10 23:17:29
>>303,304
レスどうもありがとうございました。
306:デフォルトの名無しさん
09/03/11 10:31:12
くだすれスンマセン
($self->{year},$self->{month},$self->{day}) = ( gmtime time + $time_difference * 3600 )[5,4,3]
この [5,4,3]っていうのはどういうことなのですか?
こういう書き方の呼称がわからないのでググれなくて
307:デフォルトの名無しさん
09/03/11 10:50:28
slice
308:デフォルトの名無しさん
09/03/11 13:46:55
list
309:デフォルトの名無しさん
09/03/11 18:19:50
>>306
ググる前にマニュアルを読めばいいと思うよ。
URLリンク(perldoc.jp)
310:デフォルトの名無しさん
09/03/11 18:31:28
>>309
perldata読めばいいってはじめからわかってたら困らんだろ。
311:デフォルトの名無しさん
09/03/14 10:04:59
少しお聞きしたいのです。
以下のようなソースがありまして、
$| = 1;
print "Start\n";
$i = 0;
while($a = <>){
print "Loop: $a $i\n";
$i++;
}
print "End\n";
コマンドラインから perl test.pl などとして起動すると、
Ctrl+Z(ENTER)でEOFを渡して(よくわかってない?)中断して終了できますよね。
しかし、EOF(0x1a)を、
ファイルで渡したり(perl test.pl < test.txt)、Delphi等のプログラムから渡したりすると
上記プログラムでは終了してくれなす。
これを終了してくれるようにするにはどうしたらよいでしょうか?
312:デフォルトの名無しさん
09/03/14 10:06:38
>>311
捕捉
> EOF(0x1a)を、ファイルで渡したり
これは、バイナリエディタで 74 65 73 0D 0A 74 65 73 74 0D 0A 1A 0D 0A のように記述しました。
313:デフォルトの名無しさん
09/03/14 11:13:25
シグナル打ち込め
314:デフォルトの名無しさん
09/03/14 11:24:01
>>311
1A は関係ないと思う。
1A は有っても無くても終了するはずだよ。
でないと UNIX などは大変なことになる。
1A は Windows だけの習慣。UNIX のテキストファイルには普通 1A は無いからね。
原因は何か他にあるんじゃないの?
315:311
09/03/14 12:15:10
ごめん、環境かいてなかった。
OS: Windows Vista SP1 32bit
perlは体分前に入れたものなので古い
This is perl, v5.8.3 built for MSWin32-x86-multi-thread
(with 8 registered patches, see perl -V for more detail)
>>314
ファイルをつっこむと、1Aで終了せずに、ファイル全部読み込んだら終了します
プログラムで(というか以下のライブラリ)で読むと、1A送っても無限ループが続く幹事
URLリンク(maxxdelphisite.free.fr)
1AってそもそもEOFじゃないんのかな?
316:デフォルトの名無しさん
09/03/14 12:27:16
>>315
先ず先に<>はSTDINとARGV両方を示す事を理解しろ。
プログラム引数に何か渡されたら、< であろうが、ARGVとして扱われ、
ARGVがあれば、暗黙のうちに<>は<ARGV>として挙動する。
従って
====
while(<>){ print "ARGV: $_" }
while( ($_=<>) !~/^$/ ){ print "STDIN: $_"}
====
をhoge.plとして保存して以下の様に実行した場合、
perl hoge.pl < hoge.pl
は、ARGVの中身を全てプリントした後にSTDINの処理をする
(STDIN処理は、何も入力せずにreturnで終了)。
外部ファイルにシグナルを入れて流し込むのが仮に可能だと
しても、それをどのタイミングで使うかは書き手に任される訳だから、
素直に終了フラグを立てるのが普通では無いの?
317:デフォルトの名無しさん
09/03/14 13:49:03
なんか変なのが沸いた
>>プログラム引数に何か渡されたら、< であろうが、ARGVとして扱われ、
へー
318:デフォルトの名無しさん
09/03/14 13:55:55
ファイルハンドルがって意味じゃねえの?
それでも言葉不足だけどw
perl hoge.pl < hoge.pl
は、
while(<ARGV>){ print ; }
でも
while(<STDIN>){ print ; }
動くよ。
319:デフォルトの名無しさん
09/03/14 13:57:02
最終行「でも動くよ。」
320:デフォルトの名無しさん
09/03/14 14:08:58
知ったかぶり者を論うのやめろ。荒れるから。
321:へんなの
09/03/14 14:09:01
あーすまん。
言葉も変だし、5.8までと5.10で挙動が違うわ、>>316。
>>316の例とかは全面撤回(5.10では動く)
322:デフォルトの名無しさん
09/03/14 14:28:14
CPANやperldoc.jpでのPODトランスレータは何を使っていますか?
Pod::HTML, Pod::HtmlEasy, Pod::Xhtml, Pod::Tree::HTML,
Pod::Simple::HTML, Pod::Simple::XHTML...と、色々試していますが、
L<Foo>やら=item * <Bar::Baz>やらマルチバイト文字やら、
一部に対応しているものがありますが、全部に対応したものはないように
感じました。
323:デフォルトの名無しさん
09/03/14 17:02:33
>>315
>ファイルをつっこむと、1Aで終了せずに、ファイル全部読み込んだら終了します
>プログラムで(というか以下のライブラリ)で読むと、1A送っても無限ループが続く幹事
結局どうなの?終了するの?無限ループするの?どっちなの?
結局、何がしたいの?どういう動作を期待してるの?
324:デフォルトの名無しさん
09/03/14 19:47:30
>>311 が使ってるOSでは、0x1a を送っても 0x1a にすぎず EOF にはならない。
どうしてもそれを望むなら OS を CP/M に換えるといい
325:デフォルトの名無しさん
09/03/14 21:48:07
I love you
326:デフォルトの名無しさん
09/03/16 20:40:31
二重のforeach修飾子は使えないのでしょうか?
perl -E '
@tmp=([1,2,3],[4,5,6],[7,8,9]);
for (@tmp){
for (@{$_}){say}
}'
出力
1
2
3
(以下略)
という構文をforeach修飾子を使って、以下のように書いたのですが、
perl -E '
@tmp=([1,2,3],[4,5,6],[7,8,9]);
say for @{$_} for @tmp;'
コンパイルエラーになってしまいます。
このような二重のforeach修飾子は使えないのですか?
それともコードが間違っているのでしょうか?
perlのバージョンは
v5.10.0 built for x86_64-linux-thread-multi
です。
327:デフォルトの名無しさん
09/03/16 20:59:27
修飾子はひとつしかつけられません。(perlsyn参照)
Any simple statement may optionally be followed by a SINGLE modifier,
just before the terminating semicolon (or block ending).
328:デフォルトの名無しさん
09/03/16 21:15:11
rand()で、0が出る確率というのはあるのでしょうか?
もしくはrand()で出る一番小さな数字というのがあれば教えて頂けないでしょうか。
329:326
09/03/16 21:19:15
>>327
ありがとうございます。
参考になりました。
330:デフォルトの名無しさん
09/03/16 21:51:39
>328
perldoc -f rand
331:デフォルトの名無しさん
09/03/16 23:58:47
$data = "19:09:34 hoge 294";
if($data =~ /\d\d:\d\d:\d\d \d*/){
print "マッチ\n";
}else{
print "マッチせず\n";
}
「数字数字:数字数字:数字数字 いくつかの数字」という文にだけヒットさせたいんですが、
何故か余計な文字の入っている上の文でもヒットしてしまいます。
どうしてヒットしてしまうんでしょうか?
環境:This is perl, v5.8.8 built for MSWin32-x86-multi-thread
332:331
09/03/17 00:01:27
*だと\dが0の場合も含まれるんでした。
*を+にしたらうまくいきました。
333:デフォルトの名無しさん
09/03/17 00:42:36
関数のreturn値って成功の場合1で、失敗の場合0が普通なのでしょうか?
標準関数はこのパターンが多いような気がします。
シェルスクリプトの場合だとたいてい逆ですよね?
334:デフォルトの名無しさん
09/03/17 07:18:18
成功の場合に真を、失敗の場合に偽を返す
って考えれば Perlの関数の多くも コマンドの終了コードも同じ
335:デフォルトの名無しさん
09/03/17 08:34:52
↑
アフォ?
336:デフォルトの名無しさん
09/03/17 16:16:53
>>333
そだよ
だからsystem関数の使い方には注意
Perl6では、system関数の戻り値もPerlの流儀になる
337:デフォルトの名無しさん
09/03/17 20:36:43
引数がAから始まって、後が全部数字かどうかチェックするのって
if($ARGV[0] =~ /^A+[0-9]$/)
でいいのかな
338: ◆TWARamEjuA
09/03/17 20:38:57 BE:3920966-BRZ(10001)
>>337
おしいかも。
/^A[0-9]+$/
でもその前にchomp入れた方がよいかも♪
339:デフォルトの名無しさん
09/03/17 20:47:23
おおお、なんと優しい
ありがとーw
340:デフォルトの名無しさん
09/03/17 23:20:12 BE:309540375-PLT(54324)
/\AA[0-9]+\z/
341:デフォルトの名無しさん
09/03/18 04:15:45
xms
342:デフォルトの名無しさん
09/03/18 09:46:26
\d+はダメなの?
343:311
09/03/18 10:41:45
>>316
時間が空いてすいません。
^Z(1A)はシグナルなのでそもそもファイルからは渡せないもんなんでしょうか?(単にデータとして受け取られる)
問題は、通常のプログラムから標準入力を渡した場合なのですが、これもファイルから渡したのと同様になる
ものなのでしょうか?
つまり、何かのデータをフラグと見立てて、それを検出したら終了、というような作業が必要なものか、と。
344:311
09/03/18 10:44:13
>>323
期待する動作は、プログラムで1Aを送ると終了して欲しい、ということです。
ターミナルやコマンドプロンプトなどで、^Zを送ったときと同じような動作を期待しています。
345:デフォルトの名無しさん
09/03/18 10:44:39
>>342
\d や \w はロケールや UTF-8 フラグによってマッチする文字が変わる。例えば全角数字。
$ は改行の直前にもマッチするので、"A10\n" =~ /^A[0-9]+$/ が真となってハマる初心者多し。
^ は /m が指定されていない限り文字列先端にしかマッチしないので、\A だとやや偏執的
とも感じる。用心深いに越した事はないけれど、/\AA よりは /^A の方が見た目がスッキリ
して読みやすい。
URLリンク(perldoc.jp)
URLリンク(perldoc.jp)
346:デフォルトの名無しさん
09/03/18 11:35:38
>>344
1Aが入ってきたら終わるように書けばいいだけ。
347:デフォルトの名無しさん
09/03/18 16:01:22
Perl業界におけるPerl 6の立ち位置がよく分からないんですが、
雰囲気的にはどんな感じなんでしょうか?
348:デフォルトの名無しさん
09/03/18 16:24:04
>>347
Web業界に限って言えば様子見ムード。
349:デフォルトの名無しさん
09/03/18 16:28:27
Parrot1.0が出ましたが、これ使うと何が出来るようになるんですか?
他言語との連携が楽になるだけ?
350:デフォルトの名無しさん
09/03/18 16:40:10
>>344
CP/Mからの呪縛。
DOS(Windows)とUNIXそれぞれの、改行コード、終端コード、
テキストモード、バイナリモードについて、ググるなりして理解するのが先。
351:デフォルトの名無しさん
09/03/18 18:44:37
>>345
d
352:デフォルトの名無しさん
09/03/18 20:17:40
>>344
だから 0x1a が EOF と思ってる時点で間違ってる
まずここを理解しろよ
CTRL-Z 押下は EOF を送るための特殊な操作であって、
それが歴史的な理由で CTRL-Z (0x1a)になってるだけであって
0x1a を送れば EOF になるわけじゃない。
353:デフォルトの名無しさん
09/03/19 01:24:01
>>344
if (ナントカ eq "\x1a") { exit }
こういう発想は思いつかんの?
354:311
09/03/19 07:08:15
>>346 >>352-353
理解しました。ありがとう。
355:デフォルトの名無しさん
09/03/20 02:20:00
@a = ('1','2','3','4','5','6')
@b = ('2','3')
という配列があった時に、@aから@bを削除して
@c = ('1','4','5','6')
を作りたいのです。ループ回すしか無いのでしょうか?
大崎氏(URLリンク(www.din.or.jp))の、
# 配列 @array から重複した要素を取り除く
{
my %count;
@array = grep(!$count{$_}++, @array);
}
みたいな華麗な手法があるなら知りたいです。
356:デフォルトの名無しさん
09/03/20 03:24:57
@count{@b} = @b;
@array = grep(!defined($count{$_}), @a);
357:デフォルトの名無しさん
09/03/20 05:09:05
@c = grep{!((join ',', @b) =~ /(?:^|[^0-9])$_(?:[^0-9]|$)/)} @a;
すごく…力わざです…
358:デフォルトの名無しさん
09/03/20 06:47:02
>>355
みたいなじゃなくてそれ使えよ
359:デフォルトの名無しさん
09/03/20 16:49:14
>>355
use Array::Utils;
@a = ('1','2','3','4','5','6');
@b = ('2','3');
@c = Array::Utils::array_diff(@a, @b); # (1,4,5,6)
360:デフォルトの名無しさん
09/03/20 16:52:41
>>359
最近ではそういうのを華麗というのか?
361:デフォルトの名無しさん
09/03/20 17:25:05
モダン(笑)
362:デフォルトの名無しさん
09/03/21 21:33:12
教えてください。恥ずかしいんですが...
sample.html
--------------------
<html>
2009-03-20
</html>
--------------------
yyyy-mm-dd.pl
--------------------
#!/usr/bin/perl
use Time::Local;
($s, $mi, $h, $d, $mo, $y, $w) = localtime(time);
$lastupdate = sprintf("%04d-%02d-%02d", $y + 1900, $mo +1, $d);
$yesterday = sprintf("%04d-%02d-%02d", $y + 1900, $mo +1, $d-1);
s/$yesterday/$lastupdate/g sample.html;
--------------------
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5373日前に更新/164 KB
担当:undef