トップページ⇒tech
1001コメント305KB

Perlについての質問箱 30箱目

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/03/14(水) 22:54:12
"The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。

CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc8.2ch.net/php/ )

CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。

http://www.perl.org/get.html
● 2006/12/21現在の最新版: 5.8.8
● 2006/12/21現在の開発版: 5.9.3

前スレ
Perlについての質問箱 29箱目
http://pc11.2ch.net/test/read.cgi/tech/1166708139/

リンク集は>>2-3
過去スレは>>4
0142デフォルトの名無しさん2007/03/29(木) 20:45:58
3年とはのんきな話だな。3ヶ月で一定のレベルに達しないなら、その人が向いてないかまたはその言語に悪意が混入されているかだな。
0143壁|・ x ・)つ○2007/03/29(木) 22:09:20
$val =~ /(\d+)度/g
0144デフォルトの名無しさん2007/03/30(金) 12:21:03
>>142
そんなこと言うなよ
0145デフォルトの名無しさん2007/03/30(金) 17:55:55
コーディングテクは日々進化し続けると思うけどなぁ。
俺が還暦を迎えた頃にはスゲーことになってると思うんだ。
0146デフォルトの名無しさん2007/03/30(金) 21:01:15
base.pmなんだけど、

sub get_fields {
() = \%{$_[0].'::FIELDS'};
return \%{$_[0].'::FIELDS'};
}

「() =」これって何してるんでしょう?
perl5.003で動作するように書き換えられないかな?
0147デフォルトの名無しさん2007/03/30(金) 21:06:28
>>146
コメントで「『タイポじゃねーの警告』は黙れ」と書いてあるだろ。
つまりその部分は動作とは無関係。

しかし5.003とはまた随分古いバージョンだな。せめて5.005あたりにしとけよ…。
0148デフォルトの名無しさん2007/03/30(金) 22:23:03
>>147
すまん。
エラー書いてなかった。
Can't modify stub in list assignment at /path/to/base.pm line 43, near "};"
こんなのが出る。


> しかし5.003とはまた随分古いバージョンだな。せめて5.005あたりにしとけよ…。

大人の事情というやつで・・・。
0149デフォルトの名無しさん2007/03/30(金) 22:58:15
>>148
http://search.cpan.org/~nwclark/perl-5.8.8/pod/perldiag.pod#Can't_modify_%25s_in_%25s

- () = \%{$_[0].'::FIELDS'};
+ # () = \%{$_[0].'::FIELDS'};
+ local $^W = 0;
0150デフォルトの名無しさん2007/03/31(土) 00:24:17
> 大人の事情というやつで・・・。

そんな仕事辞めてしまえよ
0151デフォルトの名無しさん2007/03/31(土) 01:14:49
5.003を理由に依願退職する>148であった。
0152デフォルトの名無しさん2007/03/31(土) 02:08:39
linuxのperl向けのIDEでお薦めはなんでしょうか
0153デフォルトの名無しさん2007/03/31(土) 02:12:15
emacs一択。



あとEPICとか? つーかPerlにはいいIDEないよ。
01541522007/03/31(土) 02:51:38
ども

そうですか、ではボチボチとやってみます
0155デフォルトの名無しさん2007/03/31(土) 02:53:14
春先は150みたいな
社会のしがらみスルー系のレスの
ネタっぽさが薄まるんだよな
0156デフォルトの名無しさん2007/03/31(土) 03:48:41
(1..10)
は1から10までの数を持つリストを生成する式だと思うんですが、
$hoge = (1..10);
print $hoge;
とやればリストの最後の値である10が変数$hogeに代入されると思ったのに
なにも出力されません。
スカラー変数にリストを代入すると、リストの最後の値が代入されると思うんですが
どこが間違っているんでしょうか?
0157デフォルトの名無しさん2007/03/31(土) 03:59:22
Perl7っていつ出るんですか?
0158デフォルトの名無しさん2007/03/31(土) 04:02:35
>>156
↓を実行するとわかるけど、範囲演算子(..)が範囲内の値リストを生成するのは、
リストコンテキストの時。スカラーコンテキストでは、違う意味になるよ。
http://d.hatena.ne.jp/palmo/20060724/rangeop

while (<DATA>) {
  chomp;
  $hoge = (1..3);
  print "$_ = $hoge\n";
}

__DATA__
AAA
BBB
CCC
DDD
EEE
FFF
0159デフォルトの名無しさん2007/03/31(土) 04:05:29
..は範囲演算子。

$hoge = (1..10)
のようにスカラコンテキストで用いた場合、..の左項が真になった
時点から右項が真になるところまで真を返す。(...だとちょっと変わる)

いずれかの項が定数値であった場合、それは $. との比較であるとみなされる。

全く読み込んでいない状態なら $hoge の値は $. == 1 の結果に等しい。
0160デフォルトの名無しさん2007/03/31(土) 04:17:29
最後のとこ、全く読み込んでいないなら、$. == 1の結果は偽、で。

0161デフォルトの名無しさん2007/04/01(日) 16:28:17
>>158,159
...演算子もコンテキストで意味が変わるんですね。
わかりました。ありがとうございます。
0162デフォルトの名無しさん2007/04/02(月) 04:58:36
perlのコミュは初心者に優しくて好きだ。
スクリプト言語経験者でも表記にとっつきにくいからかな。
マニュアル嫁で突っ返されることが少ない気がする。
(マニュアル読んでもわかんなかったりするし;ω;)
0163デフォルトの名無しさん2007/04/02(月) 06:06:27
XpSP2でActivePerl-5.8.8.820-MSWin32-x86-274739.msiを
インストールしたんだけど、Jcode.pmがインストールされない。
なぜ?教えてください。
0164デフォルトの名無しさん2007/04/02(月) 07:17:48
ActivePerlのことはよく知らんが、
Perl 5.8.0以降Jcodeが標準モジュールじゃなくなったからじゃないかな
0165デフォルトの名無しさん2007/04/02(月) 09:35:55
>>164
5.8.0以降はJcode.pmが標準と聞きましたので
当然、インストールされると思ってたのですが、
探しても見つからないんですよ。
0166デフォルトの名無しさん2007/04/02(月) 09:41:41
5.8.0からEncodeモジュールが標準装備になってるからそれ使え。
0167デフォルトの名無しさん2007/04/02(月) 10:17:24
>>166
使っているアクセス解析プログラムがJcode.pm使っているんですよ。
perlのPG経験がないんで、改造も出来ないんです。

これです。
ttp://www.bflets.dyndns.org/Tools/AWStatsJpn.html
0168デフォルトの名無しさん2007/04/02(月) 10:23:07
>>167
池沼か?標準じゃ入ってないと言ってるだろうが。
0169デフォルトの名無しさん2007/04/02(月) 10:29:59
それじゃ別の方法、考えています
0170デフォルトの名無しさん2007/04/02(月) 10:30:15
考えます
0171デフォルトの名無しさん2007/04/02(月) 10:34:35
普通にJcode.pmインストールすりゃいいじゃないか。莫迦か
0172デフォルトの名無しさん2007/04/02(月) 10:46:55
>>171
インストールしてもうまくいかないんですよ
やりかたが間違ってるかもしれませんが。
説明しているページで、そんなモジュールなかったり。
以下は参考にしたページです。

ttp://sakaguch.com/SetJcodePm.html

win_install.plなんてないし。

マニュアルで置いても、変換後のファイルは0バイトだし。
0173デフォルトの名無しさん2007/04/02(月) 11:33:15
>>172
Jcodeインストールするならコマンドプロンプトからppm(今時はppm-shellかな)を起動させて
install Jcode(enter)
で一発で入ると思うが。
0174デフォルトの名無しさん2007/04/02(月) 11:57:01
>>173
ありがと
意味不明だけど、勉強してやってみる
0175デフォルトの名無しさん2007/04/02(月) 12:17:49
つ[ perl -MCPAN -e shell ]
0176デフォルトの名無しさん2007/04/02(月) 12:23:33
ありがと。ppmでインスコできた。
でも、うまく動かなった。

これはperlが原因じゃないから
ここで、さよなら。

じゃ、教えてくれた人、ありがと。
0177デフォルトの名無しさん2007/04/02(月) 12:25:27
っ ttp://openlab.jp/Jcode/index-j.html
0178デフォルトの名無しさん2007/04/02(月) 12:31:16
次から低レベルな質問は
webprog板でやってくださいね
0179デフォルトの名無しさん2007/04/02(月) 13:02:54
>>178
そのわりに、明確な回答書いてる奴いねーけどな
0180デフォルトの名無しさん2007/04/02(月) 13:14:06
こんな時間帯だからじゃないの?w
公式のは古いからいつものサードパーティの
所にver.2.06があるからそれをインストールするだけじゃん
0181デフォルトの名無しさん2007/04/05(木) 09:34:45
すいません。正規表現についての質問なのですが・・・
abcあいうえお123./<>~"@
の様な文字列から日本語だけマッチするもしくはASCIIコードだけマッチさせるようにするには
どうすればよいのでしょうか?
0182デフォルトの名無しさん2007/04/05(木) 10:12:57
>>181
文字コードをeucにして、

my $pat = pack("C*",0x20,0x21..0x7e);

/[$pat]+/ でASCII
/[^$pat]+/ で日本語(と制御コード)
0183デフォルトの名無しさんNGNG?PLT(12980)
http://module.jp/blog/regex_unicode_prop.html
0184デフォルトの名無しさん2007/04/05(木) 20:53:28
正規表現でのグループ化について質問です

$_ = 'AAAbarbarbazZZZ'; だとして

@a = /AAA(foo|bar|baz)+ZZZ/;

とすると、@a の中身は最後にマッチした @a = ('baz') 一つとなりますが、
これを @a = ('bar', 'bar', 'baz')
とする正規表現はあるでしょうか?

(){n} でなく ()+ を使ったのは数量が固定ではないためです。

なんらしか正規表現方法で
上記一文で済ませられたら…と思い質問させていただきました。
0185デフォルトの名無しさん2007/04/05(木) 21:38:28
>>184
何でも一行に詰め込みゃいいってもんでもないけど…
@a = splice @{[ grep length, split /(foo|bar|baz)/, 'AAAbarbarbazZZZ' ]}, 1, -1;
0186デフォルトの名無しさん2007/04/05(木) 21:55:26
確かに一行ですが…^^;レスありがとうございます。
'AAAfooXXbarYYYYYbazZZZ' のように目的外の物が混ざっている場合
のチェックを別にしなければなりませんが。

やはり ()+ でのマッチを正規表現の修正で全部リストする無理でしょうか
0187デフォルトの名無しさん2007/04/05(木) 22:27:05
m/AAA((?:foo|bar|baz)+)ZZZ/
とかすれば全部とれることはとれる。
リストにはならないけど。
0188デフォルトの名無しさん2007/04/05(木) 22:29:35
>>186
> 'AAAfooXXbarYYYYYbazZZZ' のように目的外の物が混ざっている場合
その場合 @a は () とするべきか
AAA foo XXbarYYYYYbazZZZ と分けるべきか
AAAfooXX bar YYYYYbazZZZ と分けるべきか
AAAfooXXbarYYYYY baz ZZZ と分けるべきか
>>184からは読み取れないよ?
01891842007/04/05(木) 23:22:15
レスありがとうございます

>>187
()+ での一気取得が駄目だった場合、私もそれを候補の一つに考えていました
リストにするには(foo|bar|baz)のマッチングがもう一回必要になってしまいますが


>>188
説明不足でした。申し訳ありませんでした
(ある程度大きいテキストから)
'AAA' と 'ZZZ' の間が (foo|bar|baz)+ のみで構成されている箇所を探し
その部分をリストとして取得したいと思っております

ですので、提示くださった選択肢の中では
>その場合 @a は () とするべきか
を考えています

(foo|bar|baz) の部分は実際はかなり重そうな正規表現の羅列と選択(|)で構成されていて
()+ による繰り返しも回数も非常に多く
(foo|bar|baz) のマッチングによる2度手間(切り出し・リストへ分割)は避けようと思い
今現在は下記の感じの処理を考えています
if (/AAA/) {
while ($' =~ /^(foo|bar|baz|ZZZ)/) {
if ($1 eq 'ZZZ') { OK; last; }
push(@a, $a);
}
}
}

そこで >>184 の質問するに至りました
マッチングも一回で一文で済ませられたら…と
長文失礼
01901842007/04/05(木) 23:38:24
>>189 の
while ($' =~ //)
は
while ($' =~ //o)
を考えています


今docを読み込んでいるんですが ()+ でのグループの繰り返しマッチングの
全リスト取得は、正規表現工夫しても仕様的に無理なのかな…
01911842007/04/05(木) 23:40:39
push(@a, $a) の行も間違えていました…
慌てて書き上げたもので
連投すみません
0192デフォルトの名無しさん2007/04/05(木) 23:44:49
AAAとZZZの間だけでいいのか?
AAAの前や、ZZZの後ろは無視していいのか?
0193デフォルトの名無しさん2007/04/05(木) 23:47:12
あと、入力データと出力データの例を具体的に示してくれ。
入力文字列と、それに対する@aの中身はどうなるのか。
0194デフォルトの名無しさん2007/04/05(木) 23:51:08
>>190
1対の括弧につき1つの値が保存される仕様なんだから、
1回のマッチにおいて1対の括弧で複数個の値を得るのは
そりゃ無理だわな。
それに複雑な正規表現でバックトラックの嵐にするより、
幾つかのシンプルな処理に分けた方が速い。

if (/AAA/g) {
  push @a, $1 while /\G(foo|bar|baz)/g;
}
0195デフォルトの名無しさん2007/04/05(木) 23:52:06
マジレスすると、速度とか考慮するなら切り出して二段階とかにした方が速い。
まぁ、元のデータの性質が分からんと何とも言えんが。
0196こういうこと?2007/04/06(金) 00:00:11
if(($x) = /^AAA(.+)ZZZ$/){
  $x =~ s/(foo|bar|baz)/push @a, $1/ge;
}
01971962007/04/06(金) 00:06:16
ああ、AAAが行頭とは限らないのか。
01981842007/04/06(金) 00:15:33
>>192
はい。
/AAA(foo|bar|baz)+ZZZ/
これに厳密にマッチするところの(foo|bar|baz)のみを取得したいので

111AAAfooZZZ222 : 111 222 等は要りません
111AAAfooXXXbarZZZ222 : この場合 foo bar も要りません
111AAAfoofoofoobazbarZZZ222 : @a = ('foo', 'foo', 'foo', 'baz', 'bar') を取得したい

>>193
申し訳ありません。実際の入力データはお見せすることが出来ないので、
等価な具体例の作成も時間がかかってしまうかも知れません
上記例でご容赦ください

>>194
>そりゃ無理だわな。
ありがとうございます。
これが出来るのかどうかが一番知りたかったので、ふんぎりがつきました。



実際の具体例のデータを示せないので、(主に速度に関する)お答えは難しいですよね。
その中でも例やヒントを示してくださった方々ありがとうございました。
内部的な処理は詳しくないのですが、試行錯誤しながら参考にさせていただきたいと思います。

皆さんレスありがとうございました。(_ _)
0199デフォルトの名無しさん2007/04/06(金) 04:08:13
>>198
どういたしまして
0200デフォルトの名無しさん2007/04/06(金) 08:54:56
仕事丸投げするのはいいが、藻前さんが辞めた後にメンテする人のことも
わかってやれよな。
0201デフォルトの名無しさん2007/04/06(金) 09:31:06
括弧に量指定子使うのきめえ
0202デフォルトの名無しさん2007/04/06(金) 10:26:07
foo,bar,bazが3文字って決まってるならこれでどうよ。

$_ = '111AAAfoofoofoobazbarZZZ222';
/AAA(?:(foo|bar|baz)(?{push(@a,substr($&,-3))}))+ZZZ/;

print join(",",@a),"\n";
0203デフォルトの名無しさん2007/04/06(金) 11:15:13
つーか、そもそもどうしてそんなデータ構造なのかが気になる件。
0204デフォルトの名無しさん2007/04/06(金) 11:30:16
宿題?
0205デフォルトの名無しさん2007/04/07(土) 13:27:01
########################################
# データ内に改行が無ければ最初の二行は
# $_ = <>; で置き換え可能
########################################
chomp(@tmp = <>);
$_ = join '', @tmp;
$re = qr/foo|bar|baz/i;
s!(AAA(?:$re)+ZZZ)!push @a,$1=~/($re)/g !ge;
print join("-", @a);

これはひどい。
0206デフォルトの名無しさん2007/04/07(土) 13:37:01
qrのオプションは i じゃなくて o だった。
0207デフォルトの名無しさん2007/04/08(日) 15:55:23
perlでlogの基数が2の場合を求めるには何をつかうのが
ベスト??
車輪の再発明はしない方向で・・・
0208デフォルトの名無しさん2007/04/08(日) 15:56:59
>>207
底の変換公式
0209デフォルトの名無しさん2007/04/08(日) 16:29:00
>>208
thx
0210デフォルトの名無しさん2007/04/08(日) 21:57:13
仕事で初めてPerl使うんだが難しいな('A`)
0211デフォルトの名無しさん2007/04/08(日) 23:12:16
Cやってりゃ、Cのマクロ言語だと思って書いてれば当座はしのげる。
嵌りどころはあるが、「難しい」ではなく「勝手にいじるなよ!」ってな感じ。
Cの派生言語からでも同様。
「難しい」ってのは今までまっとうな言語の経験がないからじゃないかと思う。
0212デフォルトの名無しさん2007/04/08(日) 23:59:21
つーか、Cみたいな型がキッチリしたのから移行すると、
なんとなく気持ち悪いw
0213デフォルトの名無しさん2007/04/09(月) 00:12:22
>>212
Cの原始的な型じゃ、実際にコードを書くときたいして助けになってくれてないだろう。
目糞鼻糞だと思うんだけど。
0214デフォルトの名無しさん2007/04/09(月) 00:21:03
俺は、あくまでもテキスト処理用と考えたらすんなり入れた。
Cだと文字列めんどくせえし、C++と比べても正規表現処理のためのコード量がぜんぜん違うからな。
0215デフォルトの名無しさん2007/04/09(月) 00:22:52
>>213
そうでもない。例えばプロトタイプ宣言をちゃんと使っていれば
誤った引数を渡したりしたときなど、コンパイルエラーとして
コンパイルの時点で捕捉出来るし、プロトタイプ宣言自体が
関数の使い方に関する一番簡単なドキュメントになる。
0216デフォルトの名無しさん2007/04/09(月) 00:27:16
>>214
テキストをちょろっと弄くるには便利だよね。
クラスやリスト、リファレンス等の基本的な仕組みが
adhoc過ぎて汚いし(←個人的見解)
プログラムが大きくなればなるほど型付静的言語の有り難味が増す。

Perlで小さいプログラム以上のものを書く気にはとてもなれない。
同じ動的言語でも、Pythonあたりならまだ許容量大きいかな。
0217デフォルトの名無しさん2007/04/09(月) 00:28:33
そゆことだな。主にバイナリ扱うとなると、Cみたいなのが書きやすい。
文字列はperlみたいなのが楽だが。
02182132007/04/09(月) 00:40:57
>>215
ああ、そういえばそうだ。目糞鼻糞は撤回する。
0219デフォルトの名無しさん2007/04/09(月) 00:41:27
>>217
バイナリとかバイト/文字単位の処理だとpack(), unpack()の嵐だわな。
それ考えると、文字列処理とか言っても正規表現使いやすいだけって希ガス。
エンコーディング周りもそんなに便利とは言えないし。
0220デフォルトの名無しさん2007/04/09(月) 06:15:36
っ 適材適所
0221デフォルトの名無しさん2007/04/09(月) 07:43:02
ある種の物事を異常に早く片付けられる、それがPerl。
0222デフォルトの名無しさん2007/04/09(月) 19:15:26
元々perlは文字列処理用なんしょ。

しかし、たとうばHTMLのタグを外す処理を書く ってなった時、
perlなら簡単だけど、Cで書くとなると工程からして憂鬱だ…。
regexp.dll使うけど、メモリリーク等に気を遣わないとで面倒だ…。
0223デフォルトの名無しさん2007/04/09(月) 20:53:41
やっぱ言語組み込みのが楽だよね・・・正規表現は
0224デフォルトの名無しさん2007/04/09(月) 21:53:11
>>222
まぁCで文字列処理はちょっとな。
どうしても(C++でなく)Cを使う必要があるのなら、せめて
GCライブラリを使いたいところ。
C++なら、文字列処理は別に苦にはならないはず。

それとCで字句/構文解析ならlex/yaccを使う場合も
多いんじゃないかな。
0225デフォルトの名無しさん2007/04/10(火) 17:49:24
この記事どうしてくれよう
ttp://gigazine.net/index.php?/news/comments/20070410_libwww/
0226デフォルトの名無しさん2007/04/10(火) 18:03:28
>>225
マジかと思ってUserAgentをlibwwwにしてググったらほんとに検索できなかった。
一時的な効果しか無いだろうに、アホな対応するなぁ…。

これからは適当なAgentを騙れってことでOK?
0227デフォルトの名無しさん2007/04/10(火) 18:18:39
IEのにあわせておくもんだろ
0228デフォルトの名無しさん2007/04/10(火) 19:15:26
>>226
libwww-perlを拒絶しても、本当に悪い奴は遮断できず、
入門過程の新参者を困惑させ余計な時間をとらせるだけ。

まさに1000害あって1利なし。
0229デフォルトの名無しさん2007/04/10(火) 19:59:13
所詮Google。
0230デフォルトの名無しさん2007/04/10(火) 22:32:59
つまり、おまえらpython使えの意
0231デフォルトの名無しさん2007/04/10(火) 22:39:48
その発想はなかったわ・・・
0232デフォルトの名無しさん2007/04/10(火) 22:59:00
フォームへのスクリプト拒否してるからでしょ
0233デフォルトの名無しさん2007/04/11(水) 00:55:09
>>232
んなもんどうでもなるやん。何の意味があるのかさっぱりわからん。
0234デフォルトの名無しさん2007/04/11(水) 01:45:44
2,3日で元のスパムの量に戻るに1ペリカ
0235デフォルトの名無しさん2007/04/11(水) 10:26:47
今更ながらどうもコマンドラインがよく飲み込めてないかもしれないので、
少しお尋ねします。
例えば
perl -pi.bak -e "tr/A-Z/a-z/"*.html
とか便利ですよね?
これを.plとして使いたいのですが無理なのでしょうか?
コマンドラインから打ち込むしか手がないのでしょうか?
0236デフォルトの名無しさん2007/04/11(水) 10:40:03
>>235
perlrun(1)の-iオプションの説明のとこに例があるだろ。よく嫁。

From the shell, saying

$ perl -p -i.orig -e "s/foo/bar/; ... "

is the same as using the program:

#!/usr/bin/perl -pi.orig
s/foo/bar/;

which is equivalent to

#!/usr/bin/perl
$extension = '.orig';
LINE: while (<>) {
if ($ARGV ne $oldargv) {
(改行大杉でおこられるので以下略)
0237デフォルトの名無しさん2007/04/11(水) 10:40:50
http://pc11.2ch.net/test/read.cgi/php/1171102883/593
http://pc11.2ch.net/test/read.cgi/tech/1173880452/235
0238デフォルトの名無しさん2007/04/11(水) 10:49:06
>>236
アリガトウございます。
なお、質問するスレが似つかわしくないと重い他スレにも同じ内容を質問させていただきましたが
ご迷惑かけたようで申し訳ないです。
0239デフォルトの名無しさん2007/04/11(水) 11:06:13
>>235
windowsだとどうも面倒なようなので他の手にします。お騒がせしました。
0240デフォルトの名無しさん2007/04/11(水) 11:33:56
手軽に使えるようになればいいだけなら、適切なオプション
与えたperlをsystemかexecで起動するようなスクリプト書く
手もあるよ。

病的に効率を気にする人にはお勧めしませんけど。
0241デフォルトの名無しさん2007/04/11(水) 21:53:06
>>239
Windowsなら.batに書けばいいんじゃね?
なんで.plにこだわるのかわからん
0242デフォルトの名無しさん2007/04/11(水) 22:50:12
YAPC::Asia 2007 Tokyoのpodcastでてるけど、これは聞いとけってものある?
■ このスレッドは過去ログ倉庫に格納されています