掲示板等での発言について集めたもの

苦悩の時系列が見て取れるなぁ。
文系人間が頑張りましたよ、と。

http://homepage3.nifty.com/diaklel/ -- seren 2009-07-14 22:48:54


とりあえず作ってみたよ。
文字コードの件が決まってないから日本語は打たないでくだしあ。
miikとかそういうのを入れて実験してくだしあー。

てか、挙動が遅いのよ……(TヘT)
なんでだろう(TωT)


オンライン幻日辞典α ver. -- seren 2009-07-16 10:54:54


ご意見を参考に機能を追加しました。
http://homepage3.nifty.com/diaklel/

オンライン辞典としての最低限の機能は満たしたので、これを以ってα版とします。
α版の公開はディアセルを見込んでいます。
できればはじエスもこの辺で一度公開しようかな?>all

後は――
1:PDICのデータを手作業であれこれ整形
2:用例にリンクを自動貼り付け
3:メンバ用の認証ページを設置
4:単語に編集ボタンの設置
5:編集フォームとそのシステムの構築
6:訳語検索も可能に?

――ですね。

とりあえず、現状α版で既にエスのオンライン辞典のここには勝ってると思います。
http://vastalto.com/pejv/

ここで訳語検索で少女と引いても、幻日ほど情報がえられません。
もっとも、これはDBの比較になりますが。

「エスペラント辞典」でググると――
http://www.bongo.ne.jp/~teg/vortaro.htm
――が出てきます。

このサイトの中で上の辞書が一番最初に来てますから、きっとこれが日本語版だと最良なのでしょう。
エスより良いのがあれば、人工言語としてはまぁ御の字かと。


訳語検索 -- seren 2009-07-16 18:22:09


 >おぉ、これだけでも便利。

そんなあなたに訳語検索(*゚ー゚)ドゾ

http://homepage3.nifty.com/diaklel/

「少女」って入れて、「本文検索」と比較してみてください。
訳語欄に入り込む[用例]のノイズや、簡易説明のノイズもオフにしています。
タグノイズも切ってあるので、「形容詞」がayuaだってすぐわかりますよ♪

・機能について

訳語検索を追加しました。
これはPDICではできないので便利だと思います。

機能的にはこれに編集登録機能を付けますが、これ以上は拡張しません。
今回のコンセプトは「PDICのDLを面倒がる人」や「語学は好きだがPCは苦手で、グーグルや英辞郎くらいならなんとかという人」にとってとっつきやすくすることです。

「Aを含むがBを含まない」というような拡張検索はフォームを増やせばできますが、テキストボックスやプルダウンでごちゃごちゃしてしまいます。
PCが苦手な人はフォームがたくさんあるだけで「難しそうだ」と思ってしまうので避けます。

仮にPCの苦手な女性がアルカをやったとしても簡単に調べられるように、というのを目安としてもいいかもしれません。
スピード検索や複合検索は現行のPDICで十分で、それはindexページからリンクしておけば十分対応可能です。

・編集について

編集機能はまだ設置しない予定です。
今後アリスなどを書くと、当然語彙が増えます。
このときエディタとしてPDICを使うほうが慣れていて楽なので、失敗がないです。
まだ語彙が早いペースで増えている間はオンライン編集は避けたほうが合理的です。


(無題) -- seren 2009-07-16 21:30:36


バグ報告

・ユーカリで検索するとバグる。

ここにヒントがある。
http://www.nishishi.com/blog/2006/02/unmatched_in_re.html

・パソコンで検索すると0件になる。ありえない。なぜ??


  • パソコンで検索すると0件、パソコでも0件、パソだとエラー、パだとちゃんと検索。なんやねん -- seren (2009-07-16 21:36:25)
  • http://perltips.twinkle.cc/perl/shift_jis.php -- seren (2009-07-16 21:47:18)
  • これかー。perl……orz -- seren (2009-07-16 21:47:31)


七不思議 -- seren 2009-07-17 11:35:24


――できました。

http://homepage3.nifty.com/diaklel/

「ソ」「十」「ー」なども引けるようになりました。
書き換えるのが嫌というか、utfとやらのやり方が調べてもわからないのでShift_JISのままですが。

で、問題があるんですよ。七不思議といっても過言ではないw
このコード、実はローカルだとバグるんです(; ̄Д ̄)

「少女」で本文検索しますよね。
100件くらい出てきますよね。
そこで「次へ」とか「2」とかでジャンプするじゃないですか。
そうするとInternal server errorになるんですよΣ( ̄ ̄ ̄Д ̄ ̄ ̄lll)

あっるぇ?と思って昨日うpしてた「ソ」とかが調べられない古いほうのコードをDLして、またローカルで動かしてみたんです。
するとこれも同じで、「次へ」とかを押すとerrorになるの。
つまり昨日の時点でローカルで動いてなかったことになります。
なのにサーバーでは動くのwww

「次へ」問題に気付いたのは、「ソ」の問題を解決した後です。
その後昨日のコードもローカルでバグることに気付きました。
そこで「じゃあさ、逆に言えば、これで昨日サーバーで動いてたんなら、「ソ」の問題を解決したコードも、ローカルでは動かなくてもサーバーでは動くんじゃね?」
と思い、うpしてみました。

そしたら動くんですよwwww
なんでか分からないwww
怖すぎるww

「少女」と本文検索した1ページ目はローカルでもサーバーでも動くんですよ。
なのに「次へ」を押すとサーバーは空気読んでくれるのに、ローカルはバグるww
でもまぁ結果オーライなのでいいかと思うんですが、どうでせう……。

ちなみに「風呂」は20件ヒットします。
20件のときは2ページ目を出す必要がないんですが、僕の手違いで2ページ目の表示が出てきます。
ここで2をクリックすると、ローカルだとエラーページになります。
なのにサーバーだと白紙のページが出るだけで、エラーページに行かないんですよ。
エラーにならないからいいやと思うんですが、これも七不思議w


クエリ -- seren 2009-07-17 12:52:49


多分、日本語のクエリ情報をa hrefで引き渡せないからだろうなぁ。

http://127.0.0.1/xil/test7.cgi?rein=少女

でテストして、クエリ情報をprintしたら、少女の部分は「?-??」になりました。

何をするにも日本語はダメだね……。
26文字で足りるアルカで助かった。



  • クエリが?rein=fianとかだとバグらないんですよ。しかし、サーバーにアップすると大丈夫ということは、IEが日本語のクエリを読み取ってくれるということなのかな。もしかしてjavascriptが動いて日本語クエリを解釈してくれてるとか……うーん -- seren (2009-07-17 12:53:57)
  • あと、firefoxで見てみたら化けてるし、本文検索とかもできず。もういいや狐とかwwwIEで見れwww -- seren (2009-07-17 12:59:27)


(無題) -- seren 2009-07-17 14:09:04


エス板なのにこればかりですみませんm(_ _)m

クエリの問題を解消し、ローカルでもできるようにしました。
サーバーでできればいいかと思ったんですが、もしかして環境が違ったらこれが原因でバグるかなと思ったので。
これで安心できます。

また、20件あったときに2ページ目が表示されるエラーを修正しました。

http://homepage3.nifty.com/diaklel/

firefoxで化けるのはよく分かりませんが、IEで見ればいいだけのことなので大丈夫でしょう。


  • とりあえずこれで完成とします。firefoxの件がお分かりならご助言くださいまし -- seren (2009-07-17 14:09:48)

精度マックス -- seren 2009-07-17 23:46:28


訳語検索の精度を半端なく向上させました。

http://homepage3.nifty.com/diaklel/

昨日までの訳語検索だと、「少女」などを引く分には良かったです。
「魔法少女」や「少女りんご」が一緒に出るくらいで、件数も少ないですし。

ところが初心者ほど「手」や「指」みたいな簡単な単語を探しますよね。
しかし訳語検索をすると「手足」ならともかく、「手配」とか「指示」とか「指標」みたいな、明らかに手や指に関係ないものが出てきます。
そしてその数が100超えたりするんですよww

初心者が我慢してスクロールするのはせいぜい10〜20だと思います。
明らかに限界突破ですw

そこで、ジャストミートするものだけ厳密に探すようにしました。
試しに「手」と「指」で検索してみてください。
PDICの用例検索時代と比べたら、感動すら覚えるかもしれんですwww
"niasにっこり検索"、かな?

ただ、精度を上げすぎたので、引っかからなくなったものもあります。
ジャストミート検索ですから、「yulを歩く」のようなものは「歩く」では引けません。

でもこれは検索でなくむしろ辞書データのほうが悪いでしょ?「歩く」くらい載せとけよと思うわけです。
それに、この検索システムにしたときの利点のほうが害よりもずっと多いのです。むしろ問題は辞書データ。
そこで、精度を上げてしまったがゆえに外れた項については、辞書をちまちま手で直していくことにします。

フィアンセ(少女霊)は、「フィアンセ、少女霊」にします。
リディア=ルティアも、「ルディア=ルティア、リディア」にしたほうがいいですね。
でも、手作業なしでここまで精度の高い検索を作れたのは幸運でした。

幸運だったのは、辞書のデータが綺麗でしっかりしていたことです。手打ちなのにね。
自画自賛ですが、いい加減人間のくせに几帳面に約物を打ってたんだなと感謝しました。



  • 今まで「青」とか調べるのがどれだけ大変だったか……。「青」でsoretが出るように。今の初心者はずいぶんラクになったもんですね、Kakisさん。 -- seren (2009-07-17 23:50:36)
  • 「赤」の本文検索271件www 訳語検索1件バロスwww -- seren (2009-07-17 23:52:01)


完成! -- seren 2009-07-18 11:10:05


・あいまい検索

http://homepage3.nifty.com/diaklel/

「歩く」を訳語検索しても0件。
本文検索すると22件も出てきて萎える。
これなら以前の訳語検索のほうがよかったのでは?
でも「手」が何十件も出てきて引けないのは困る……。

そこで「あいまい検索」を設けることにしました。
これをオンにしておけば、「歩く」も引けます。

訳語検索だけに使うのはもったいないので、部分検索もこれに含めました。
完全一致とか部分一致だとピンと来ない人がいるので、わかりやすく見出し語検索にしました。
あいまいにチェックすると部分一致になります。

思うに、ラジオボタンが4つ並ぶと汚く感じるんではないでしょうか。
なんか稚拙な感じがします。あいまい検索も入れると5つ並べなきゃいけません。
だったらチェックボックスを入れて機能をオルターできたほうが洗練されてるなと。
コントロールパネルの美観の問題ですけどね。とりあえず僕の目にはこれが綺麗に見えます。

・想定される動線

想定される流れとして、始めはあいまい検索をスルーするはずです。
大半は右グレー無の説明文なんて読まないでしょうから。

とりあえず「見出し語検索」と「訳語検索」と書いてあるので、それを試すと思います。
それで慣れてきたら、「そういやあいまい検索ってなんだろう?」と思って説明書を読むと思います。

というわけで最初に目に入るのはラジオボタンだと思います。
これが5個もあったら「難しそう……」と思います。
そこで3個に押さえ、簡単さを出します。

その後、慣れてきてから機能を拡張したい人はあいまい検索をするという動線です。
これだと心理的な負担が少ないかなと感じました。

・niasさんのラジオボタン→submitボタンという案について

合理的でいいと思います。
ですが送信ボタンが検索とリセットと合わせて5つ並ぶのは見た目的にゴテゴテしちゃってどうかなと感じました。
反映できず、すみません……。

・送信ボタン

チェックボックスの直下だと、送信と間違えてチェックしてしまうことがローカルで多くありました。
そこで送信ボタンは右揃えというか、右にインデントしました。

・凡例

画像を修正しました。

・フレーム

色を用いて見やすくしました。
検索フレームには検索方法のまとめメモを置いておきました。

・バナー

殺風景なので柔らかくしました。
ぬこー。

・firefox

>出力するhtmlの<head>と<title>の間に<meta http-equiv=content-type content="text/html; charset=Shift_JIS">入れても駄目です? >Firefox

niasさん、グッジョブ!! v(o・ω・o)ノ゙
みとらさんに対応するようになりました(v^ー°)

昨日調べてこの<metaってのはたどり着いたんですが、入れる位置を間違っていました。
位置が違うと機能しないのねぇ……orz

これで完成ですな。
懸案もすべて片付きました!!
みなさん、ありがとうございました。
おかげさまで気付いたらPDICより便利かもしれないものができました☆ミ


  • そだ、忘れてた。訳語検索は読点を利用しています。 -- seren (2009-07-18 11:26:26)
  • あ、でもsplitは使っていません -- seren (2009-07-18 11:27:07)


編集α -- seren 2009-07-19 00:07:47


編集機能を付けてみました。

http://homepage3.nifty.com/diaklel/

ridia(少女リディアのほう)に一行書き加えてみました。
みんな、見れますか?

試しに何か書いてみてくださいな。見出し語をクリックすると修正できます。
「修正」っていうタグを用意しようかと思ったけど、一語一語「修正修正」ってやかましく書いてあると、大半の人は見るだけなので邪魔かなと。

ログはとってあるので、どこからどう直したか把握できますからご安心を。
しかしこれ、色々と問題があるのですよ。

1:単語を選ぶとテキストエリアに本文が表示されるが、お尻が勝手に二行空いている。
 幻日の元のデータ上、1行空くのはいいんです。でも勝手に2行になる。
 何も変えないで編集押すと1行増えます。繰り返すと延々と増えますw

 データファイルから見出し語と本文をまとめて1語1行で抜いてます。
 多分この1行抜くという行為の段階で、データファイル上にある改行を拾ってしまうんだと思います。
 辞書データはこうなってます。

aadmasa /// / [生物]腰帯、後肢帯、下肢帯 \ 19:ridia \
aadsoj /// / [生物]腰椎 \ 19 \
aadyai /// / [医療]腰痛 \ 19 \

で、各行1行ずつ読んでいくんですが、このときデータ上の行末の改行コードも別途改行として読み込んでしまうのですよ。
これ、どうにかならないかなと四苦八苦して、できずに断念中です……。

2:なんかやたらバグる気がする。
 辞書ファイルが破壊されたり、空になったり……。
 とりあえず使うつもりではなく実験のつもりで「あどいうhdふぁし」とか適当に色々打って色んなパターンやってみてくださいまし。
 僕は実験結果のログを分析します。



  • あと、今は編集を押すとなんやら入力したものの確認ページになります。が、できれば登録した語のページに戻したいわけです。htmlからhrefでcgiに飛ばすのは分かります。ただ今回はデータセーブ用のcgiを実行しているときに、データセーブが終わった段階で別のcgiに飛ばしたいわけです。cgiから自動で別のcgiに飛ぶ方法を探しているのですが、なかなか見つからないのです…… -- seren (2009-07-19 00:12:59)


(無題) -- seren 2009-07-19 09:50:58


改行問題等修正しました。
http://homepage3.nifty.com/diaklel/

が、困ったことが。
winの改行コードはCRLFなんですが、unixだとLFなんだそうですね。
今winで編集したら大丈夫ですが、unixとかで編集したら辞書データが壊れるかもしれん……。
改行コードが異なってるのはどうにもならん。こっちはwin対応にすることくらいしか……。

試しに色んな端末の色んなブラウザの色んなOSで編集してみたいんですが……

(無題) -- seren 2009-07-19 13:49:39


できた……
http://homepage3.nifty.com/diaklel/

編集機能も搭載し、ログ取得もオワタ……
もうボロボロですわ。ふだんの仕事にウチのにネットのにこれに。
今年のディアセルが18年間で一番きつかった。

もうワシャ動かんぞ。一歩も働かんぞ( ゚Д゚)……カハッ

アルカ掲示板でのレス(公開情報なので人のレスも入れておきます)


205 : seren 2009/07/15(水) 19:06:16

むぅ……とまってしまった。

$rein = "ridia";
$vet = "ridia";
――のとき、当然
if ($vet eq $rein)は真です。

これはridiaの項を検索する場面なんですが、ridia(2)やridia(3)も表示されるようにしたいのです。
なので、たとえ
$vet = "ridia(2)"でも、上のif文で真になるようにしたいのです。

そこで
if ($vet eq $rein./\(?\d?\)?/)
としましたが、願ったようにいきません。
ridia(2)どころかridiaのときすら真になりません。

上の正規表現は「$reinの後に続けて正規表現でカッコと任意の数字とカッコトジがきてもいいしこなくてもいいよ」という意味です。


206 : seren 2009/07/15(水) 19:49:37

とりあえずカッコを区切りにsplitして処理しました。
正規表現は=~検索にしか使えないのかな……?


207 : xektan 2009/07/15(水) 23:05:16

205
if ($rein =~ s/$vet(\(\d+\))?/) {
# ヒット!
} else {
# 残念!
}

あと正規表現で行頭を指定すると良いかも。

$rein =~ s/^$vet(\(\d+\))?/


208 : xektan 2009/07/15(水) 23:06:13

ごめん、間違えた。
s// じゃなくて m// だ。
訂正:
if ($rein =~ m/$vet(\(\d+\))?/) {
# ヒット!
} else {
# 残念!
}

$rein =~ m/^$vet(\(\d+\))?/


209 : xektan 2009/07/15(水) 23:13:49

ん?ひょっとしたら vet と rein が逆かな?
わかりにくいので英語で書く。

$key を検索語、$line を辞書データの各行とする。

if ($line =~ m/^$key(\(\d+\))?/) {
# ヒット!
} else {
# 残念!
}

$line の行頭に $key または $key(数字) があるときに True となる。
( ) は文字クラスを作る。
? は最小マッチで 0 または 1 回の意味。
\( \) はカッコをエスケープしてるだけ。
\d は数字
  1. は一回以上。
つまり (4) とか (13) とか (0123) とかが 0 個または 1 個あることを表す。
^ は行頭限定で有無を調べる。
因みに行末は $ で m/。$/ なら行末に句点があるかどうかを調べることになる。


210 : seren 2009/07/16(木) 11:04:54

おー、できました。seeretis!
splitのほうで使った変数を後で使っているので今回のコードには反映しませんでしたが、
実験してみたら機能しました。


211 : xektan 2009/07/16(木) 12:15:14

一々 split するのは効率悪くないかい?
ヒットしたら split して整形が定石だと思うよ。


212 : ◆ H/tNiasOz2 2009/07/16(木) 12:44:09

200
>用例
\[用例\]([\s\w]*)(?![^\s\w])
みたいな感じでマッチさせて<em>$1</em>と置換すればいいのでは


213 : ◆ H/tNiasOz2 2009/07/16(木) 12:48:27

こうか。
\[用例\]([\s\w]*)(?![\s\w])


214 : seren 2009/07/16(木) 14:44:05

>一々 split するのは効率悪くないかい?

ですね。
なるべく不必要な場合は無駄な作業は避けるようにします。

>\[用例\]([\s\w]*)(?![\s\w])

辞書の形式が――

a
[格詞]〜に、〜へ。与格。[用例]fit a lu. 彼にあげなさい。 fit al an. 私にちょうだい。
[格詞]〜の神に祈る。この場合、必ずaでなくalになる。al karteのように。祈りの言葉であることから古い用法が踏襲された。
13:制:al。接頭辞alと区別するために短くした。
[語法]
母音で始まる単語の前ではalになる。例えばal an(私に)のように。
関係節で格詞が残存する場合もalになる。tu et ridia l'an fitat miik al(私がリンゴをあげたのはリディアだ)

――だとすると、PDICの改行コードは「 \ 」なので、

$kozet =~ s/(\[用例\].*? \\ )/\<em\>$1\<\/em\>/g;

にしておけば[用例]から次の改行までが斜体になります。
実験してみてできたので、あとは手作業で用例の場所を移さないとですね……。


215 : ◆ H/tNiasOz2 2009/07/16(木) 20:20:09

>古ルティア語
大文字が現実的な気がします


216 : seren 2009/07/16(木) 21:08:15

りょうかいー


217 : seren 2009/07/16(木) 21:10:42

lik

Kakisさんseere!
流石に説明が詳しいですね!


218 : xektan 2009/07/17(金) 12:28:40

>文字コード
jcode の encode 関数でできるけど重くなるよ。
辞書データもスクリプトも最初から utf-8 にしてしまえば?


219 : seren 2009/07/17(金) 14:57:38

そのutfにするというのがサイトを見てもよくわからないんですよ……。
読んだ本がshift_jisで解説してあるので。
頭にuse utf8;と書いただけだとどうにもならないんですね……。

何がなんだか分からないので、とにかくshiftのコードを弄ってどうにかしました。


220 : seren 2009/07/17(金) 21:56:12

しつもん。

an ket miva : i cat daughter

という文字列で、:より左の部分だけ正規表現で抜き出して斜体するやり方ってありますでしょうか。
これができれば用例中の単語にジャンプリンクが付けられませ。
最初は半角スペースが入ります。


221 : seren 2009/07/17(金) 21:57:40

つまり

<em>an</em> <em>ket</em> <em>miva</em> : i cat daughter

のようになれば幸せになれるということですw


222 : xektan 2009/07/18(土) 00:29:53

220

$str = 'an ket miva : i cat daughter';
@words = split(/\s/, $str);
foreach (@words) {
if ($_ ne ':') {
$_ = sprintf("<a href=\"klel.cgi?key=%s\">%s</a>", $_, $_);
} else {
last;
}
}
$str = join(' ', @words);
print $str . "\n";
<>;
__END__


223 : xektan 2009/07/18(土) 00:31:34

文字コードの換え方。
http://www.nishishi.com/blog/2006/02/jcodepm.html


224 : xektan 2009/07/18(土) 00:34:33

218-219
む!?Perl ではなく Windows で UTF-8 にする方法かな?
それならメモ帳で「名前を付けて保存」のときに保存ダイアログの一番下で「文字コード」が選べるよ。


225 : seren 2009/07/18(土) 14:35:36

うはwまるで魔法w
よくこんな呪文思いつきますね。

foreachで変数を省略できるのかぁ。
そしたら自動的に$_という変数になるんですね。なるほど。

lastというのがあるんですね。
これでループを抜けると。

ただ、これで抜けちゃうと後々問題が出るかも……。
というのも、例文はひとつでないので、例えば実際にはこうなります。
「 \ 」というのを改行コードだとして。

$str = 'an ket miva : i cat daughter \ non miiko miia : je chat fille';

文字コードのリンクも読んでみます。


226 : seren 2009/07/18(土) 14:37:23

\が入るとお手上げな気がしますね。
もしかしたら最初に\でsplitして、それらについてそれぞれ223をかけるというのもありかもしれませんが。


227 : seren 2009/07/18(土) 14:38:49

しかしsplitだと、A\B\Cみたいに\が2つ以上あると、一体どこで切れるのかという疑問が……。
実験したら\で3分割できなかったんですが、コードが間違ったんですかねぇ……


228 : seren 2009/07/18(土) 14:42:07

読みました。これは分かりやすい!


229 : xektan 2009/07/18(土) 15:23:37

二重ループかな。
最初に \ で split して @lines に入れる。
@lines を foreach で回して : で split して @words に入れる。
あとは上のコードと同じ。
split は区切る個数も指定できなかったかな?
何も指定しないとありったけ切ったはずだけど。


230 : xektan 2009/07/18(土) 15:48:10

$str = 'an ket miva : i cat daughter \ non miiko miia : je chat fille';
@lines = split(/\\/, $str);# \ で分ける。

foreach $line (@lines) {
# 外側のループ開始。
# 二重ループなのでわかりやすいよう変数 $line を立てる。
# @lines には an ket... と non miiko... の二文が入る。
@words = split(/\s/, $line);

foreach $word (@words) {
# 内側のループ開始。
# やはり $word を立てる。
if ($word ne ':') {
$word = sprintf("<a href=\"klel.cgi?key=%s\">%s</a>", $word, $word);
} else {
last;
}
# 内側のループ終了。
}

$line = join(' ', @words);
# 外側のループ終了。
}

$str = join('\\', @lines);
print $str . "\n";
<>;
__END__


231 : seren 2009/07/18(土) 18:50:57

質問ばかり続けて恐縮なんですが、みんなで編集できるようにしたいなと思ってまして、たとえば

$line= "ridia[人名]少女リディア \ [組み数字]1/28 \ 古:語源不詳。『カコ』からだが、『カコ』ではriidyaという音で表わされている。 \ [神古]riidya \ [文化] \ 生没年不詳。英雄アルシェの恋人。非アシェット関係者。アルシェの没後、ソーンを暗殺。ソーン残党の報復により没する。 \ \ "

だとします。
「 \ 」が改行コードなんですが、行末だけ「 \ \ \ 」のように何個も「 \」が続いて最後に「 」となることがあります。
これを単に行末は「 \ 」だけにしたいのですが、

while ($line =~ /\\ $/){
$line =~ s/\\ $//;
}

と書いたらIEがフリーズしました。
無限ループには思えないのですが……。
何か方策はあれば幸いなんですが……


232 : seren 2009/07/18(土) 18:51:29

230はあとでじっくり読ませていただきますね


233 : xektan 2009/07/18(土) 19:27:20

231
while は使わなくていいよ。
g を指定する。

$line =~ s/\\ $//g;

これで行末の複数の \ を置換することになる。
うまくいかなければ

$line =~ s/\\ \\ //g;

でやってみて。


234 : xektan 2009/07/18(土) 19:30:05

まちがいたw

$line =~ /\\ \\ /\\ /g;

こうだね。


235 : seren 2009/07/18(土) 22:20:10

234を試したら

ridia[人名]少女リディア [組み数字]1/28 古:語源不詳。『カコ』からだが、『カコ』ではriidyaという音で浮ウれている。 [神古]riidya [文化] 生没年不詳。英雄アルシェの恋人。非アシェット関係者。アルシェの没後、メ[ンを暗殺。メ[ン残党の報復により没する。

になってしまいました……。
途中の「 \ 」は活かしたいです。
最後に「 \ \ \ \……」と複数個続いているものをひとつの「 \ 」にしたいのです……。
というのも、これは改行コードなので、このまま登録すると次の語との間に何行も空白が含まれてしまうのです。


236 : seren 2009/07/18(土) 22:28:59

#! c:/perl/bin/perl

print "Content-type: text/plain\n\n";


$line= 'apple \ min \ sam \ \ \ ';

$line =~ s/\\ \\ /\\ /g;

print $line;

5C問題が起きていたのでlineを単純化しました。
ただ、このコードでも結果は

apple \ min \ sam \ \

――で、行末に \ が任意の個数続く場合に対応できないようです。
2個限定だとこれで対応できるのですが……。


237 : ◆ H/tNiasOz2 2009/07/18(土) 23:32:36

(\\ )+でマッチさせればいいとかそういう問題でなく?


238 : xektan 2009/07/18(土) 23:43:58

ああ、ごめん、nias さんのが正解。
複数の '\ ' を '\ ' 一つにまとめるんだ。

$line =~ s/(\\ )+/\\ /g;

こうだね。


239 : seren 2009/07/19(日) 00:27:47

むー、あくまで行末の連続だけ拾いたいのでつよ。
例えばalfの項みたいに本文中に見やすくするため空白行を作っているものがありますよね。

それを単純化すると
$line= 'apple \ \ min \ sam \ \ \ ';
――ということになるのですが、

#! c:/perl/bin/perl

print "Content-type: text/plain\n\n";

$line= 'apple \ \ min \ sam \ \ \ ';

$line =~ s/(\\ )+/\\ /g;

print $line;

――これをかけると

apple \ min \ sam \

――になってしまい、本文中の空白が消えてしまうのです。
ん?てことはこうすればいいのか……?

#! c:/perl/bin/perl

print "Content-type: text/plain\n\n";


$line= 'apple \ \ min \ sam \ \ \ \ ';

$line =~ s/(\\ )+$/\\ /g;

print $line;

……あ、できた。


240 : xektan 2009/07/19(日) 00:43:26

おめでとーvv


241 : seren 2009/07/19(日) 00:46:44

おかげさまで(^-^)
しかし、データ書き込みの「改行」の件が全然うまくいかず……。

テキストエリア上での改行コードは\nですよね。
元データは \ が改行コードなので、テキストエリア上では\nに変えています。
それをフォームが受け取ると、\nは何になるんだろう……。
%xx%xxになるかと思って探してるんですが、何にもならないようす……。


242 : xektan 2009/07/19(日) 01:26:11

"\n" でいいじゃん。

$formkaranodata =~ s/\n/\\ /g;

こう。


243 : seren 2009/07/19(日) 10:05:33

自己レス

>テキストエリア上での改行コードは\nですよね。
>元データは \ が改行コードなので、テキストエリア上では\nに変えています。
>それをフォームが受け取ると、\nは何になるんだろう……。

フォームにpostされた段階で%0D%0Aになるよ、俺。
そのままhexかけてjcodeかけると見かけ上は半角スペースみたいになって、幻日の改行コード「 \ 」には戻らないよ。


244 : seren 2009/07/19(日) 11:00:57

a.cgiを実行する。
a.cgiの末端でb.cgiを実行して別のcgiに乗り換えたい。
つまりaの処理を終えたら自動でbを実行したい。

――のですが、これが見つからない……
これができれば公開できるのに……。


245 : seren 2009/07/19(日) 11:04:28

む……execとかsystem……?


246 : seren 2009/07/19(日) 13:25:58

execでできた……