トップページ⇒php
1001コメント364KB

Perl コーディング初心者質問コーナー Part36

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん04/07/14 13:23ID:???
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。

過去ログやお勧めサイトは >>2-10
087787404/08/19 19:21ID:???
>>875
可読性の問題で;わかりやすい変数名にしたいんだ。
>>876
オゥ!?thx!
$queryはわかりやすいね。Aを使わせてもらおうかな。
0878nobodyさん04/08/19 19:26ID:???
>>877
こういうやつに限って全体のアルゴリズムとかがなってねんだよな。
コンパイラから見た可読性も考えろよ。
0879nobodyさん04/08/19 20:31ID:???
>>878
言いたいことには賛成なんだが、コンパイラは読みやすさなんぞ
微塵も求めちゃいないし、アルゴリズムってのは個々の問題解決
方法を指すのであって、全体の構成や設計を指す場合には使わん。
0880nobodyさん04/08/19 22:03ID:???
自分のシステムがどのタイムゾーンに属していて、
GMT(UTC)とどのくらいの時差があるかを知るには
どうすればいいでしょうか?

Windows / UNIX 双方で共通に使える方法があれば
それでお願いします。
0881nobodyさん04/08/19 22:24ID:???
>>880
Time::Zoneでいいんでね? 例えば、

perl -MTime::Zone -e 'print tz_local_offset();'
→ 32400

perl -MTime::Zone -e 'print tz_name();'
→ jst

windowsでは使ったことないんで動くかどうか知らんけど。
0882nobodyさん04/08/19 23:05ID:TB99xw7G
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/pe_oj02.htm

このスクリプトの冒頭に出てくる

   my($encode) = @_;

この行はどんな処理をしているのでしょうか?
以降の処理を見ると $encode には euc や sjis などの
文字列が入っているような気がするんですが、
↑の処理でなぜ $encode に文字列が代入されるのかがわからんのです……。
0883nobodyさん04/08/19 23:13ID:???
>>882
とりあえずサブルーチンについて勉強しれ。
まあ簡単におしえてやると引数だ。
0884nobodyさん04/08/20 01:49ID:???
perl歴3ヵ月の初心者です。

UNIXコマンドの df -kを使って求めたハードディスクの容量(KByte単位)を
GB単位への変換方法がわかりません。

求めた値÷1024÷1024から、splintfで%4.1dとして表示させると
小数点以下が0になってしまいます。
1GB未満 (500KByte等) は0.5GBと表示させたいと思います。

贅沢をいえば、小数点以下第2位を四捨五入できればベストです。
どなたか、お助けください。
よろしくお願いします。
0885nobodyさん04/08/20 02:25ID:???
>>884
%dで小数が表示されるわけないだろう。

これ、どこかでも書いたな。
0886nobodyさん04/08/20 15:10ID:???
>>885
夢の中だろ?
0887nobodyさん04/08/20 15:13ID:???
885 :nobodyさん :04/08/20 02:25 ID:???
>>884
%dで小数が表示されるわけないだろう。

これ、どこかでも書いたな。


886 :nobodyさん age :04/08/20 15:10 ID:???
>>885
夢の中だろ?
0888nobodyさん04/08/20 17:17ID:???
>>887
なんだこいつ?
0889nobodyさん04/08/20 18:39ID:???
%fだハゲ
0890nobodyさん04/08/20 19:23ID:???
%sって使いどこがわかんね。
文字列って言ってもな・・・数字は%02dとか便利だけど%sって実際どういう時に使うと便利なのかな

ということでおまいらのカコイイ%sの使い方を、投稿しる。
0891nobodyさん04/08/20 19:32ID:???
いや文字列だろ・・・
0892nobodyさん04/08/20 19:34ID:???
文字列は連結すればいいだろヴォケ

・・・と、>>890は仰られているのだと思います。
089389004/08/20 19:43ID:???
>>891
その実際のコーディング例をおながいします。なんか便利な使い方が思いつかなくて。
>>892
漏れはそんな汚い言葉は使わない。
0894nobodyさん04/08/20 19:44ID:???
使ってないサブルーチンをリストアップするようなプログラムはどのようにかいたら良いでしょうか?
他人のプログラムいじり倒していたら、どれを使っていて使ってないか分からなくなってしまいまして。
0895nobodyさん04/08/20 19:47ID:???
>>890
%sはコンビニのおにぎりを巻いた時の
端っこに余った三角形の海苔のようなものだ。
0896nobodyさん04/08/20 20:15ID:???
>>893
%32s とか便利だ
0897nobodyさん04/08/20 20:17ID:???
>>890

$s = 25;
$str = 'クネクネしとけ';
for (1..6 * $s) {
printf "%${\(length($str) + $s + int $s * sin 4 * atan2(1, 1) / $s * $_)}s\n", $str;
}
0898nobodyさん04/08/20 20:17ID:pmEwrR+2
>>894
B::Xref使えば?
0899nobodyさん04/08/20 21:25ID:???
>890
文字の桁揃えとか。
0900nobodyさん04/08/20 21:26ID:???
printf qq|あなたのリモートアドレスは %s です。\n|, $ENV{REMOTE_ADDR};
printf qq|あなたのリモートホストは %s です。\n|, $ENV{REMOTE_HOST};
printf qq|BBQ に%s\n|,
 (join '.', unpack 'C4', gethostbyname sprintf qq|%s.niku.2ch.net.|, join '.', reverse split /\./, $ENV{REMOTE_ADDR}) =~ /^127\.0\.0\.\d/
  ? qq|絶賛登録中ですよ。(・∀・)ニヤニヤ|
  : qq|は掲載されていないようです。(゚∀゚)アヒャヒャ|;
0901nobodyさん04/08/20 21:43ID:???
そもそも%sを使っての文字列整形は、HTML出力であるならば、Strictでない。
整形はCSSでやれや
0902nobodyさん04/08/20 21:56ID:???
フォームメール自作してるんだけど、HTMLみたいにエスケープしなきゃいけない文字ってある?
一応送り先と本文が、自由に書き込めるようなタイプ。
0903nobodyさん04/08/20 22:02ID:???
>>902
RFC 嫁。
と書いちゃう。
0904nobodyさん04/08/20 22:40ID:???
>>902
送り先に改行が入るとヤヴァイ気がする
0905nobodyさん04/08/20 22:57ID:???
>>902
特に無いよ。
メールアドレスだけ気をつければ。
英数字と-_@.,以外は全部はじいちゃえ。
面倒くさいから。
0906nobodyさん04/08/20 22:59ID:???
>902
文字をエスケープする事より、いたずらに使われない方法を考える事が重要と思われ。
0907nobodyさん04/08/20 23:02ID:???
スレ違いなのかどうか分からないですが質問させて下さい

CGIゲームを作ろうと思っているのですが、perlで作るのが一番効率がいいのでしょうか?
CGIゲームを配布して下さっている方の物をいくつか見てみたところ、全てperlが使われていたのでやはりperlが良さそうですかね

それよりもいい言語等あれば是非お教え下さいませんか
0908nobodyさん04/08/20 23:08ID:???
>>907
スレ違い
0909nobodyさん04/08/20 23:11ID:???
>>908
うは・・・申し訳ないです
perlに詳しい方々が集まっているようなので聞いて見たかったのですが・・・

どのスレで聞いたらいいのだろう・・・
0910nobodyさん04/08/20 23:21ID:???
>>907
どうせperlしか使えないんだろ。見栄はるなよ。
0911nobodyさん04/08/20 23:27ID:???
>>907
Cとかお勧めだよ
0912nobodyさん04/08/20 23:30ID:???
漢ならFORTRANだな。
0913nobodyさん04/08/20 23:42ID:NLrO80pO
ヒアドキュメントについて質問です。
if ( hogehoge条件式 ) {
    print <<EOF;
    hogehogeテスト中
EOF
}

こういう制御構文の中では、行頭インデントをして見やすくしたいものですが、
ヒアドキュメントを使うと、プログラム上のインデントまで出力されてしまいます。
HTML出力以外ですと、困る場合があるのですが、ヒアドキュメントを使いながら
プログラム上でのインデントを出力させないような方法はあるでしょうか?

とりあえず今は制御構文の中ではヒアドキュメントを使わないようにしてますが、
ヒアドキュメントは便利なので、インデント問題が解消されるならば使いたいです。

とびっきりエロイ人おながいしますm(__)m
0914nobodyさん04/08/20 23:45ID:???
じゃあ使うな。
091590204/08/20 23:49ID:???
とりあえずまとめると
あて先 → -_@.,以外をエスケープ。
本文  → 何でもあり
ってことでいい?

本文って何でもありなんだね。HTMLメールだとしても問題はないってことかな。
HTMLメールは送れないように、タグを置換しとこうかと考えたけど、意味ないのね。

>>906
通販サイトの注文システム構築してて、管理画面で使うメールフォームだから
悪用はされないと思う。.htaccess+CGIのダブル認証にしてあるから。
0916nobodyさん04/08/20 23:53ID:???
>>915
どんな認証やってもくそサバでは完璧ではないぞ。
俺は一度それでひどい目にあった・・・・・・
0917nobodyさん04/08/20 23:55ID:???
確認画面付きのフォームメールにするならXSSも考えないとね
0918nobodyさん04/08/20 23:58ID:???
>>913
$' = "\n";

if ( hogehoge条件式 ) {
    print "hogehogeテスト中",
       "hagehageつらいな",
       "higehige濃すぎるぜ";
}

$' = "";

これで勘弁してくれないか?一応printは1回だし、\nも面倒ではない。
ただ俺の頭の中のPerl6でしかテストしてないから、現実のPerlでどんな挙動なのかは
自分で試してくれ。
0919nobodyさん04/08/20 23:59ID:???
>>913
そんな変なインデントするエディタが悪いんじゃん。
普通に考えてヒアドキュメントの中はインデントしてもらっちゃ困るだろ。
092090204/08/21 00:02ID:???
>>917
そうだった;ちょっと盲点だったよ;
でもそれって難しくない?今は<textarea>要素に初期状態(ほとんど完成状態)をぶち込んで
店の人が送信を押すとフォームメールcgiにつながるんだけど、textarea内でHTMLエスケープしておいて
送る時にはHTMLエスケープ以前の状態に戻して送信ってできる?
0921nobodyさん04/08/21 00:03ID:???
sub print_anti_indent {
  # まぁいろいろと
}

if ( hogehoge ) {
  print_anti_indent (<<"  EOF");
    <!doctype>
    <html>
      <body>
      </body>
    </html>
  EOF
}
092291304/08/21 00:05ID:???
>>918
やはりヒアドキュメントでは無理でしょうか・・・
>>919
???terapad使ってます。インデントは自動ではなくて手動です。
ヒアドキュメント内で、出力されないインデントなんてやっぱりありえないですよね・・・・
一度変数に入れて正規表現でインデントを削除するくらいしかないですよねorz
そんな無駄な処理するなら、素直にprintしたほうがいいですね。
0923nobodyさん04/08/21 00:06ID:???
>919
どうした?
別に「エディタが勝手に変なインデントするから困る」なんて書いてないわけだが。
0924nobodyさん04/08/21 00:07ID:???
俺もそれ困ったな。
入れ子に入れるとソース見にくくなるからヒアドキュメントはできるだけ止めてる
092591304/08/21 00:10ID:???
>>921
sub print_anti_indent {
my $value = shift;
$value =~ s/\n\t/\n/g;
print $value;
}
こんな感じですか?
0926nobodyさん04/08/21 00:17ID:???
漏れは初めの頃、インデントを全角でやっていていつまでたってもエラーから抜け出せずに
プッツンして・・・・・してやった。
0927nobodyさん04/08/21 00:20ID:???
>925
こんなんでどう?

sub print_anti_indent {
 my $value = shift;
 my $indent = '';

 # 最初の行から、インデントの深さを検出する
 if ($value =~ s/^(\s+)//) {
  $indent = $1;
 }

 # 次の行以降のインデントを取り去る
 if (length($indent) > 0) {
  $value =~ s/\n$indent/\n/g;
 }

 print $value;
}
0928nobodyさん04/08/21 00:21ID:???
おい!このスレ1ヶ月ちょいで926レスなんて繁盛してるな。
Perlの時代が戻ってきたのか?なんにせよいいことだ。
092992704/08/21 00:24ID:???
あー、頭の中が「インデントの深さ検出」「インデント除去」の二段構えになってたから
927みたいなコード書いちゃったけど、も少しシンプルにもできるか。わずかな差だけどね。
0930nobodyさん04/08/21 00:33ID:???
>>927
っていうかタブも\sでマッチするっけ?
0931nobodyさん04/08/21 00:40ID:???
if ( hogehoge条件式 ) {
    my $Out_Strings = sprintf <<EOF, 'hogehoge', 'hagehage';
  >>>  %sテスト中
  >>>  %sテスト中
EOF
    # 無駄なインデントを取り除く無駄な処理(w
    $Out_Strings =~ s/^\t+?>>>//m;
    print $Out_Strings;
}

♪いろいろな方法があると思うよん。
0932nobodyさん04/08/21 00:45ID:???
>930
スルニョー
つーか927はだめだ。\s は \n と \r にもマッチするから
ヘンなところでヘンなバグを生む可能性があるな。
927を使いたいなら
-  if ($value =~ s/^(\s+)//) {
+  if ($value =~ s/^([ \t]+)//) {
の方がよさげ。
0933nobodyさん04/08/21 00:45ID:???
個人的にはヒアドキュメントを全廃して use Template とかに切替えることをお勧めするが
まあ確かに万人向けではないわな
0934nobodyさん04/08/21 00:52ID:???
Templateマンセー
まさか再帰が書けるとは思わなかったよ。
0935nobodyさん04/08/21 01:07ID:???
っていうかモジュールの使い方がいまいちわからん。
DBI位わかりやすい解説サイトがあるといいんだけどな。

探すのが面倒だし、不要なメソッドを抱えてるオブジェクトなんかと
仲良くしたくないから結局自分で作ってしまう。

今のとこ使えるのは
use DBI;
use strict;
だけだ;覚えようか迷ってるのはHTML::Templateとかいうやつくらい。
思いと評判なので使いそうにないけどw
0936初心者04/08/21 04:37ID:???
皆様に質問したいのですが

Perlで一括処理をさせたいのですが、
あるフォルダ配下の複数フォルダにあるファイルをまとめてリネームしhtmlリンクを修正
させたいのですが可能ですか?

最終的にはwork\index.htmから追いたいです

work/
|-1
|-2
|-3
|-4
|-5
以下100程度

手作業で1フォルダ毎やるのが耐えられなかった。。。できますよね。
0937nobodyさん04/08/21 04:42ID:???
>>936
そんな質問をしてるようでは無理だからフリーソフトでも使え
0938初心者04/08/21 04:47ID:???
参考にしようとしたPerl本では
カレントディレクトリからフォルダ毎書き換えていたのですが、正直
これじゃ辛いっす。できると思いたいのですが。。。。。
0939nobodyさん04/08/21 04:56ID:???
>>936
できる。
がんばって勉強してね。
0940初心者04/08/21 04:57ID:???
>936様。ありがとうございます
0941初心者04/08/21 04:58ID:???
すいません
>939様
間違えたorz....
0942nobodyさん04/08/21 05:05ID:???
なんでわざわざPerlでやろうとするんだ?
できないならソフトでやればいいじゃん
0943nobodyさん04/08/21 06:14ID:???
>928
新人か?
このスレは大型連休になると盛り上がる。
休みの間にちょこっとPerlでもやってみようって奴が増えるからな。
お陰で厨質問が増える。
その手軽さはPerlのよさではあるが。
0944nobodyさん04/08/21 06:25ID:???
いやphpのほうが手軽だけどな
0945nobodyさん04/08/21 08:43ID:???
php厨は何かとPerlより優れていると誇示したがるが
導入などの手間を考えればPerlの方が手軽なのは間違いない。
0946nobodyさん04/08/21 09:28ID:???
Perlはコンパイルに時間がかかる。テストも時間がかかるし。
0947nobodyさん04/08/21 10:01ID:???
>>945
優れているとは言ってない
手軽と言っている
最初から用意されている関数がバカみたいに多いのでphpの方が楽
0948nobodyさん04/08/21 11:38ID:???
黙れカスども。FORTRANが一番じゃ〜
http://www.genpaku.org/realprogrammerj.html
0949nobodyさん04/08/21 11:48ID:???
俺がPerlはじめたときにPHPはなかったからなー。
ということで、オレサマはこれからrubyを覚えることに決めた。
0950nobodyさん04/08/21 12:59ID:???
phpってOOできるの?モジュールとかいっぱいある?
0951nobodyさん04/08/21 13:46ID:???
Perl vs PHPの話はよそでやれって
0952nobodyさん04/08/21 14:08ID:???
>>951
何じゃボケ!そんならおまいがネタ投下せんかい!
0953nobodyさん04/08/21 14:10ID:???
>>952
匿名相手にいちいち興奮するなよ(笑)
0954nobodyさん04/08/21 14:13ID:CvZOz/sJ
クラスのコンストラクタの中で、クラスメソッドを呼ぶにはどうすればいい?
$class->method1();
とかしてもまだbless前だし。
クラス名::mthod1();
こんなことすると、第一引数がクラスにならずに食い違っちゃうし;

一瞬ライブラリでも作ってrequireでもするか。とか考えたけど、それやるとオブジェクトが独立しないし。
一体どうすればいいのさ!
0955nobodyさん04/08/21 14:17ID:???
アホな質問ですんませんけど、
print "content-type:text/html\n\n";
みたいな部分ってなんて呼べばいいでっしゃろか?

ヘッダ?
header?
HTTPのヘッダ?

あんさんらだけが頼りですわ。
0956nobodyさん04/08/21 14:34ID:???
>>954
クラスメソッドはuseすれば、すぐに使える。
new()がbless前に呼び出せるのは何故だか考えてみたまえ。

>>955
perlで書いてはあるが、禿しくスレ違い。「メッセージヘッダー」だ。
095795404/08/21 14:37ID:7q3lmCCR
>>956
あ、
クラス名->method1
の形式で呼べばよかったのね^^
0958nobodyさん04/08/21 14:44ID:???
>>956
メッセージヘッダ???エスケープ時の引数名で迷ってまんのや。

例えば &escape($value,"html") って呼ぶとHTML用のエスケープ処理をしてくれる便利なやつや。
そんでな、クッキーとかを焼かはる時にもその「メッセージヘッダ」用のエスケープをしよるんやけど
なんて名前で渡そうかな思てな。

massageheader だとちょっと冗長やろ?わかりやすくてしかも冗長でない最高の
ネーミングを頼んますわ。httpってのもええかな思てるけど・・・
0959nobodyさん04/08/21 14:53ID:???
my @array = qw/1212 12112 12121 /;
my @test;
push @test,$_ foreach @array;]
print @test;

use strict環境下で@testの宣言をせずに、pushと同時にローカルであると宣言したいんですが、
push my @test,"hghghg";
はうまくいきますが
push my @test ,$_ foreach @array;
だとうまくいきません。どうしますか?
0960nobodyさん04/08/21 15:23ID:???
{
my @test;
push
}
0961nobodyさん04/08/21 15:52ID:???
>>958
名前で悩まなくても済むようにperlには素晴らしい機能がある。
$_, @_つかえ。

>>959
> @testの宣言をせずに
理由は?
0962nobodyさん04/08/21 16:22ID:???
>>961
何を言うてまんのや
$_ = "html";
こんな事せえへんで。第1引数が置換する文字列で第2引数が、何のエスケープかてなってるんやわ。
ヘッダ用のエスケープに使う時の第2引数の名前で悩んでるや。

なにかええのんないやろか
096395904/08/21 16:25ID:???
>>960
?
>>961
my @test;
push @test,$_ foreach @array;]

要はこれを一行で済ませたいんです。なんかいちいちmy宣言だけの行があるのがかっこ悪くていやなんです。
0964nobodyさん04/08/21 16:50ID:???
>>962
header
http
head
>>963
お前の顔が悪い
0965nobodyさん04/08/21 17:07ID:???
my @array = qw/1212 12112 12121 /;
my @test = @array;
おわり。
加工したければ、
my @test = map やりたいこと, @array;
096695404/08/21 17:13ID:7q3lmCCR
ちょっと違う質問なんだけど、mapの
map BLOCK,LIST;
の書式の場合、返り血をリストコンテキストで評価すると何が返されるの?

@test = ( "a1","a2" );
@an = map { $_ =~ s/a//g } @test;
これだとわかりやすく$_を置換したものが毎回の返り血だけど、

@test = ( "a1","a2" );
@an = map { my $a = 5;
      $_ =~ s/a//g } @test;
これだとmap内の一行目の代入成功の真(1)が毎回返される。

@test = ( "a1","a2" );
@an = map { $_ =~ s/a//g;
       my $a = 5 } @test;
今度は5が毎回返される。

map内の任意の処理結果を返させたい時にはどうするもんなの?
returnとかやっても期待通りの結果が得られないんだけど。
096795904/08/21 17:24ID:???
>>965
そういえばそうですね;pushしなくちゃって思い込んで間違ってました。
0968nobodyさん04/08/21 17:33ID:???
■■■■■■■■■■■■■■■■■■
■                        ■
■ 臭い方言(特に関西弁)は禁止です ■
■                        ■
■■■■■■■■■■■■■■■■■■
0969nobodyさん04/08/21 17:45ID:???
>>964
headerでいきよることにしましたわ。おおきに。
>>968
おまえ様ルールを押し付けんといてや。
方言があかんなんてアホな話あるかいな。
0970nobodyさん04/08/21 17:47ID:???
>>966
> 返り血をリストコンテキストで評価すると何が返されるの?
そのままリストが返されるかと。。。

> map内の任意の処理結果を返させたい時にはどうするもんなの?
> returnとかやっても期待通りの結果が得られないんだけど。
目的が読めませんね。
単に sub や、 eval にした方がよいのでは?
0971nobodyさん04/08/21 17:51ID:???
>>969
> おまえ様ルールを押し付けんといてや。
> 方言があかんなんてアホな話あるかいな。
おまはんルールで勝手にエセ関西弁使てるのもワヤですわな。
普通にしとけ。
あと、レスポンスのエンティティヘッダな、> Content-type: strings;
RFC 2068 とか読んどけや。
0972nobodyさん04/08/21 18:01ID:???
>>971
>おまはんルールで勝手にエセ関西弁使てるのもワヤですわな。
おまえさんもいつも勝手に標準語使ってはるのやろ?
あんさん言ってることが支離滅裂でっせ。
097395404/08/21 18:08ID:7q3lmCCR
>>970
やりたいことは
@a = qw/1 2 3 4 5/;
$a = join "&",map {
           $value = &test($_);
           $_."=".$value;
         } @a;
こういう感じなんだけど、mapのブロック内のどの処理結果が返されるのかが、明確に理解できてなくて;
一応↑のソースは期待通りの結果が得られるんだけど、今後のために質問してみた。

例えば
@hoge = map { join "i",$_;
       join "w",$_;
      }@a;
なんかの場合は一体何が返るのか一見ではわからないから、サブルーチンみたく明示的にしたいけど
そういう場合はどうするものなのかなって思って。
097495404/08/21 18:10ID:7q3lmCCR
>>973
思いっきり間違えた;
@hoge = map { my $a = $_ + 2;
       my $b = $_ + 5;
      }@a;
とかに変更;
0975大阪に30年住んでますが04/08/21 18:20ID:???
> >おまはんルールで勝手にエセ関西弁使てるのもワヤですわな。
> おまえさんもいつも勝手に標準語使ってはるのやろ?

上のほうは自然に読めるけど、下のは読んでいて気持ち悪いですよ。

# 京都の人っぽいけど「すごく無理して書いてる」という印象を受ける。
0976nobodyさん04/08/21 18:22ID:???
ハッシュの中からキーが英数字のみのものに対してだけ処理を行いたいんですが、
%hash = (
a => 1,
":" => 2,
"_" => 3,
);

foreach ( grep /^\w*$/ , keys %hash ) {
print $_,":",$hash{$_},"<br>";
}

これでは_アンダースコアがあってもマッチしてしてまうのですが、完全に英数字だけにマッチさせるには
/^[a-zA-Z0-9]*$/のような方法しかありませんか?メタ文字から任意の一字を引いたりできるとカコイイんですが。
レス数が950を超えています。1000を超えると書き込みができなくなります。