[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 05/09 21:18 / Filesize : 139 KB / Number-of Response : 547
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 16:01:21 BE:176880454-DIA(100004)]

"The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、
Perlの奥深さについて皆で語り合い、追求してまいりましょう。

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

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

www.perl.org/get.html
● 2008/04/20 現在の最新版: 5.10.0
● 2008/04/20 現在の開発版: 5.9.5

▼ 前スレ
Perlについての質問箱 34箱目
pc11.2ch.net/test/read.cgi/tech/1199977642/


129 名前:124 [2008/05/13(火) 23:28:23 ]
124です。
124で書いたプログラムの間違いに気づきました。
プログラム中の「X1」は「X${j}」でした。
じゃないと、for文の意味ないですもんね。。。
あと、今自分で間違いに気づきました。
print GP "set output './X1.eps\n'"
じゃなくて、
print GP "set output './X1.eps'\n"
でしたorz
こんな簡単なミスに気づかないとは。。。
大変ご迷惑おかけしました。


130 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 00:54:44 ]
>>121
>このperlが、きちんとA00やZ00を返しているかを確認したいのです。
Test::Base使えば良いじゃん。

131 名前:デフォルトの名無しさん [2008/05/14(水) 02:52:29 ]
asciiコードを16進数に変換するにはどうしたらいいでしょうか?
printf "%x","a"
こんなことやっても上手くいきません
61と表示させたいです

132 名前:デフォルトの名無しさん [2008/05/14(水) 03:04:43 ]
www2u.biglobe.ne.jp/~MAS/perl/waza/asc2chr.html
これみたら分かりました

133 名前:デフォルトの名無しさん [2008/05/14(水) 03:21:56 ]
grepでデータ中から目的の行を検索したいのですが
grep(/$foo/i, @ary);
・ignore caseは使いたい
・$fooは「+」などのデータが含まれており、そのままgrepすると正規表現と解釈されてエラーになる
・正規表現はつかわない
何かよい方法はないでしょうか?


134 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 03:32:47 ]
>>133
quote (disable) pattern metacharactersの出番

135 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 03:35:23 ]
ありゃッ、先頭が抜けた。

>>133
\Q quote (disable) pattern metacharactersの出番

136 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 04:14:43 ]
>>134
grep(/\Q$foo\E/i, @ary);
でいけました。ありがとうございます

137 名前:110 mailto:sage [2008/05/14(水) 15:58:33 ]
メインルーチンとの結合でうまくいきました。
相談に乗ってくれた方、ありがとうございました。



138 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:04:47 ]
Windows環境で、ディレクトリ一覧を取得、正規化してリネームしたくて
いろいろやってるんだが、shift-jisの文字の扱いに苦労してる
ひょっとしてPerlでやるのあんま向いてなかったりする?

139 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:14:21 ]
Unicodeであつかえばいいだろ。

140 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 19:33:10 ]
あまりPERLの構文詳しくないので誰か教えてください
こんなのを作ってみたのですが
sub cont{print "contents\n";}
sub html{print "<html>\n"; $_[0](); print "</html>\n";}
sub body{print "<body>\n"; $_[0](); print "</body>\n";}
body(\&cont);
html(\&cont);
これを、出力が<html><body>cont</body></html>となるように
呼び出したいのですが可能でしょうか
↓動かないですが、こんな感じのことがやりたいです
1. html(\(body(\&cont));
2. sub f{html(\&&_[0]);} f(\&html);
3. sub g{$f=shift; html(\&f);} g(\&html);

141 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 19:43:23 ]
>>140
こういうことか?

sub cont { print "contents\n"; }
sub html { print "<html>\n"; shift->(); print "</html>\n";}
sub body { print "<body>\n"; shift->(); print "</body>\n";}
html(sub { body(\&cont) } );

142 名前:140 mailto:sage [2008/05/15(木) 19:58:14 ]
おお、想定通り動きました。ありがとう。

143 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 20:19:38 ]
use strict;
use warnings;
sub binding{ my($F,@P)=@_;sub{$F->(@P)} }
sub cont {print "contents\n";}
sub html {print "<html>\n"; shift->(); print "</html>\n";}
sub body {print "<body>\n"; shift->(); print "</body>\n";}
sub cont2 {return "contents\n";}
sub html2 {return "<html>\n",shift->(),"</html>\n";}
sub body2 {return "<body>\n",shift->(),"</body>\n";}


html( binding( \&body => \&cont ) );
print html2( binding( \&body2 => \&cont2 ) );


144 名前:デフォルトの名無しさん [2008/05/15(木) 20:21:07 ]
windows上のperlのGDモジュールで、
日本語フォントをjpg画像で出すサンプルってありませんか。
下のサンプルをmsgothic.ttcに変えて実行したら、
どうやっても・という文字になってしまいます。
x68000.q-e-d.net/~68user/webcgi/image-1.html


145 名前:140 mailto:sage [2008/05/15(木) 20:41:48 ]
>>143
このbindingってやつナイスですね
これ参考に、1タグ多要素に拡張してみます


146 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 21:51:34 ]
>>144
PerlMagickでできるかも。
まー、内部はGDかもしれないから、同じ結果かも知れない。


147 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 22:05:34 ]
>>144
よくわからんが、文字コードの問題とか?



148 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 22:32:06 ]
>>144
utf8か、フォントファイルを絶対パスで指定かな。
Imagerも良いよ。

149 名前:プヨー [2008/05/16(金) 18:03:07 ]
Perl で Lisp のマクロのようなものを使うことはできないの?
遅延評価する仕組みがほしい。

Func1( ...exp1..., ...exp2....);
という呼び出しがある場合、状況に応じて exp1, exp2 の
いずれか一方だけを評価したい。

Func1( sub { ...exp1...}, sub {...exp2...} );
のように無名関数を渡す方法は思いついたが、
記法が簡単でないので、もっと簡単に記述できる方法がいい。

150 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 19:09:34 ]
>>149
Lispは名前しか知らないけど、「状況に応じて」の部分を条件文にすればいいんじゃない?
関数を呼んだ時点では、引数の値が決定してないってこと?
そうだとしても、値が決定するまで待つとかすればいいような気がする。
Lispがわからない人でもわかる説明で。


151 名前:プヨー [2008/05/16(金) 19:31:07 ]

> Lispは名前しか知らないけど、「状況に応じて」の部分を条件文にすればいいんじゃない?

そうなんだけど、
if (,,,) { ... } else {...}
のような定型化した条件文が大量にあるから、きれいじゃないんだよね。
それよりも、単に
Func1( ...exp1..., ...exp2....);
のように書けば一行ですむから、保守性が高くてクールだよね。

> 関数を呼んだ時点では、引数の値が決定してないってこと?
そう。Lisp のマクロというのは、必要に応じて引数を eval するみたいなものだよ。

Lisp のマクロはコードを簡単化するために使われることが多い。

152 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:02:14 ]
>>151
sub exp1{ .... }
sub exp2{ .... }

Func1(\&exp1, \&exp2)

でいいんでないの?

153 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:02:34 ]
>>151
質問が漠然すぎるんだが、、、
my %hash = (
 foo => sub { print "foo\n" ; },
 bar => sub { print "bar\n" ; },
);
$hash{foo}->() ;

こう言うこととかしたいのか?
それともif文を三項演算子?

154 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:04:34 ]
常に先行評価のPerlで急に遅延評価になったら保守性が著しく低下するだろ
sub { } で我慢しろ。どうしても黒魔術を発明したいならソースフィルタを使って何とかすればいい

155 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:30:18 ]
exp1,exp2が長い場合、保守性がいいとは思えないし
>>149が考えたコードも改行位置ちょっと変えてあげれば複雑にはみえないし
関数を読んだ時点で引数の値が決まってないのは
コードがタコなだけな気がしてならないので
せめて、もう少し具体的に書いてもらえないかな

とりあえずFunc1の中でevalしたいならそうすればいいんじゃ?
Func1(
 q(...exp1...),
 q(...exp2...)
);
sub Func1 {
my($exp1,$exp2) = @_;
#なんかいろいろ
my $exp = $COND ? $exp1 : $exp2;
eval "$exp";
}



156 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:45:27 ]
初歩的な質問で申し訳ないのですが

クッキーにデータを入れるときエスケープなどの処理をしてから入れたほうがいいのでしょうか?
よろしくお願いします。

157 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 23:13:35 ]
>>156
URLエンコードと同じエスケープがいるよ。
日本語化されたRFCもあるから、読んでみれば?
もっと簡単にやるなら、CGIモジュールに全部任せる。




158 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 23:57:48 ]
>>157
なるほど。クッキーはURLエンコードですか。勉強になりました。

159 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 01:38:05 ]
最終的に決められた文字だけになるなら、任意のエスケープ方式でいい

160 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:25:57 ]
要素数が同じlistとvalueがあるときに、同じ添え字の処理ってどうやって書きますか?
#こんなのがほしい・・
for $i $j(@list @value){print "$i=$j";}

タプルみたいなのがあれば使いたいんですが
やっぱり添え字をインデックスにしてループするしかないんですかね

161 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:35:43 ]
どういうときに便利になる?
その例でもwhile shiftで事足りるし。


162 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:40:01 ]
use List::MoreUtils qw(each_array);

163 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:54:11 ]
zipWithを書けばおk

164 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:55:32 ]
単に短く書きたかっただけなんですが、あまりPERL使いこなせてはないので・・
shiftだとこんな感じでしょうか。
while(@list){print shift @list;print "=";print shift @value;}
これはこれで、短くていいですね。


165 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:57:38 ]
while($i=shift@list and $j=shift@value){print "$i=$j";}

166 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 14:04:10 ]
>>162
 オブジェクト指向部分はあまりわかってないので後ほど調べてみます。
>>163
 sub zipwith{shift->(shift,shift);}こんな感じですかねw
 ちゃんと動くかはこれから試してみますが・・
>>164
 こっちのが全体的にいいですね、トン






167 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 14:38:21 ]
練習がてら作ってみました
@a=qw(a b c);
sub zipwith{($f,$l,$r)=@_;while($i=shift @$l and $j=shift @$r){$f->($i,$j)}}
zipwith(sub{($a,$b)=@_;print "$a=$b\n";},\@a,[1,2,3]);

関数へ複数の配列を渡す際にはリファレンスにしないとだめってのは少し不便ですね



168 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 17:31:48 ]
perlの勉強中で
カメラ 785円
お菓子 98円

という文字列がファイルであるのですが

if(円という文字を含んでいたら)
$temp = "円より前の数字";

という風に文字の抽出を行いたいのですが
正規表現の部分と、抽出の部分がわかりません
ファイルの読み込みから1行だけを取り込むのは出来たのですが

ご指導お願いいたします。

169 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 17:55:32 ]
/円/ and $temp = $`;

170 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 18:12:27 ]
すいません、上手く動かないみたいです

171 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 18:23:41 ]
ちょっとかんべん

172 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:31:48 ]
perlっていうかsendmailについてなんですが…
open(MAIL, "| /usr/sbin/sendmail -t env_addr") or die $!;
# 中略
close(MAIL) or die $!;
のように、パイプ渡しでopenするとき、closeに失敗するときがあるんですが、このとき
エラーメッセージを捕捉する方法どなたかご存じですか? $!には入ってこないのです。

173 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:34:32 ]
>>172
エラーメッセージは何処に出るの? 標準出力ならIPC::Open2, 標準エラー出力ならIPC::Open3参照。

174 名前:デフォルトの名無しさん [2008/05/19(月) 11:53:11 ]
#!/usr/bin/perl

$inputfile="test.txt";
open (FILE1, ">>$inputfile") or die "$!";

for ($hoge=0;$hoge<10;$hoge++) {
print FILE1 "$hoge";
  sleep(1);
}
close (FILE1);

このプログラムを同時に2つ実行すると、私の予想ではtest.txtの中身は
00112233445566778899
となると思うのですが、なぜかファイルの中身には
01234567890123456789
と出力されます。
perlは排他制御が勝手に行われたりするんでしょうか?

175 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 11:54:52 ]
バッファリングされてるから

176 名前:デフォルトの名無しさん [2008/05/19(月) 11:56:39 ]
>>175
どういうことでしょうか?
もし正しくバッファリングされるのならflockなどの排他制御は不要な気が…。

すいませんがもう少し詳しくお願いします。

177 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 12:05:50 ]
どのタイミングでflush()されるかわからないのに、それに依存しちゃダメでしょ
ちゃんと排他制御しなよ




178 名前:デフォルトの名無しさん [2008/05/19(月) 12:27:50 ]
なんとなーく分かりました。ありがとうございました

179 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 19:30:53 ]
cryptの返り値はsaltと同じ半角英数字、半角スラッシュ、半角ピリオドの範囲で
salt2文字と残り11文字ってことでってますでしょうか。

180 名前:デフォルトの名無しさん [2008/05/20(火) 19:31:58 ]
あってますでしょうか、の誤字でした。あとあげます。

181 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:50:16 ]
いいえ。ホストのcrypt(3)に依存です。

182 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:53:22 ]
マニュアルを読むのは身分の低い下賎の民の仕事なので、
高貴な方々は、他人にマニュアルを読ませます。

183 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:02:57 ]
だからいつまでたっても

184 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:59:36 ]
これだからゆと(ry

185 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 01:05:07 ]
言っても無駄だから、適当にヒントなり与えてスルーしようよ。

186 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 01:13:28 ]
>>182 職業に貴賎なし。

だが、海外にも目を向けるとインプリする人はいっぱいいるから、
そういう志向はありだと思う。


187 名前:デフォルトの名無しさん [2008/05/21(水) 18:46:46 ]
ファイルテスト演算子を再定義することって可能でしょうか?



188 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:52:09 ]
むり

189 名前:デフォルトの名無しさん [2008/05/22(木) 01:15:29 ]
「独習 perl」を一冊
やり通したのですが、次は何をすべきでしょうか?
perlの機能を覚えただけで実用的な使い方は学べていません。
次は何をしたらいいでしょうか?

190 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:28:32 ]
何かを作る。
ファイルの一括処理プログラムとか、板違いではあるがCGIなんかでもいい。

191 名前:デフォルトの名無しさん [2008/05/22(木) 03:09:43 ]
自分が何をしたいのか、わかりません。

てか?

192 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 03:15:25 ]
そもそも何で perl をやろうとしたのかって話だ

193 名前:デフォルトの名無しさん [2008/05/22(木) 03:50:29 ]
プログラムって何かを作るためにある道具であって
何を作るかは作り手が考えなきゃどうしようもなかろう。

194 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 04:11:01 ]
>>189
適当なフリーのCGI等をダウンロードして
辞書的に使える本(Google先生でもOK)で調べながら
ソースを読んでみる。

ある程度理解できるようになったら、それを少しだけ改造してみる。

これを繰り返すだけでも相当勉強になると思うよ。

195 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 09:02:43 ]
ネットに転がってるperlで書かれたCGIやCGI解説本のソースはほぼ100%クズなので
初心者はそんなものを見てはいけない。

196 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 09:14:39 ]
言いますね…

197 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 10:03:26 ]
まあ、メジャーな掲示板のcgiコードもひどいもんだ。
一番良い例が、しばらく前までの2ch。

今動いているのはプロが書いたはずだから、ちゃんとしているはずだけど、
公開されてんのかね。



198 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 10:13:12 ]
フリーGGIはオススメできない
書き方が古いから。

199 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 10:41:17 ]
>>191
自分がやって「楽しい」と思うものでなければ、長続きしない。
例えば、任意の文字列を入力すると、
                         ▄         ▄▄▄▄▄▄▄▄
  ▄▄▄▄▄▄▄      ▄▀      ▄▄█▄▄  ▄▄   █▄▄▄▀  █
              ▄▀        ▄▀    ▄ ▀  █▄▄█▄▄ █
             ▄█▄▄       █     █    █▄▄█▄█ █
 █          ▄▀   █   █ █  ▄▀▀▀█▄   █  █ ▄ █ ▄
 ▀▄▄▄▄▄▄▄▄ ▄▀    ▀▄▄▀     ▀▄▄▄▀ ▀ █ ▀▀▀▀ ▀ ▀█
に変換するスクリプトを作ってスレを荒らすというのはどうだ?


200 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 11:22:02 ]
>>199
それくれw

201 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 12:34:25 ]
>>197-198
同じ事をするにも何通りも書き方がある,

というのとは違うのかい?正直わからん。

202 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 12:37:30 ]
>>197
2chのbbs.cgiは8年ぐらい前に流出した以外に表に出てないと思うのだが。

203 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:25:48 ]
>>201
perlのCGIがブームだった頃に作られた遺産がたくさん残ってる。
それらは大抵perl4時代のコードのままメンテナンスされてない。

204 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 17:32:22 ]
元々の>189からの話の流れからすると、特定のものを批判するより
これ読めってのを挙げた方がいいと思うが、定番といえそうなものがないな。

205 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 17:34:57 ]
普通に推奨本のコードを真似れば良いよ。

206 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 18:19:24 ]
ラマですね、わかります。

207 名前: ◆TWARamEjuA mailto:sage [2008/05/22(木) 20:21:28 BE:1961429-2BP(7088)]
おいちゃん=プロですね。わかるます。



208 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 20:32:50 ]
やっぱある程度面白くないとね。
mailあたりをいじってみたらどうかな

209 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 20:44:22 ]
>>189
2-gramの全文検索エンジンの試作オススメ。
リスト処理や文字列処理などまんべんなく入ってる。

210 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 20:59:36 ]
モチベーション最強は、やっぱエロだろ。

211 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:12:29 ]
・出版ブームが終了してまともな本が出てない
・Apache + mod_perlでも面倒なのにモジュールとか考えたくない
・webで探すとまともにメンテされてない糞ページがヒットしまくる
・Perl自体の記法が自由すぎるせいでそのページのコードが古いのかこっちの設定ミスなのでエラー出してるのか区別ができない

参入障壁高すぎ


212 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:37:14 ]
>・出版ブームが終了してまともな本が出てない
>>2以外の本はビブリオマニアでなければ必要ないよ。

>・Apache + mod_perlでも面倒なのにモジュールとか考えたくない
文の前後が繋がってないよ。

>・webで探すとまともにメンテされてない糞ページがヒットしまくる
Perlの疑問はググる前にperldocだよ。

>・Perl自体の記法が自由すぎるせいでそのページのコードが古いのか
>こっちの設定ミスなのでエラー出してるのか区別ができない
最新のperl(1)でもPerl4時代のコードが問題なく動くよ。
混ぜておかしくなるのは「新旧」でなく「お作法」だよ。

213 名前:デフォルトの名無しさん [2008/05/22(木) 23:42:33 ]
Perlでクロスワードパズルつくってみたいんだ
まずは その準備として単語(表記はカタカナで)とその対応説明が
登録されているデータベース(Excelでもテキストでもなんでもいい)
が必要です。どなたか知ってたら教えてください。それではおやすみ。


214 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:46:34 ]
>>213
っ[Wikipedia]

215 名前:デフォルトの名無しさん [2008/05/23(金) 00:01:31 ]
クロスワードパズルは数理パズルじゃなくて、おちゃらけクイズごっこだから得る物ないよ

216 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 01:46:17 ]
chasenの辞書からも取り出せるんじゃないかな。


217 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 01:51:48 ]
茶筅の辞書に言葉の意味なんて入ってないだろ



218 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 07:32:37 ]
>>213
クロスワード作るのとPerlは無関係
まず紙に書いて作ってPerlで起こす時に分からないことあったらまた質問しな


219 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:40:22 ]
\xe3\x80\x9cは変換できるのに、\xc2\xa2は変換できん。何故?
$PTNの内容をs///にべた書きすると変換できるようになる。何故?tr///が高速ならこんなことせんでもええのに。何故?
(ver. 5.8.5)


use encoding "utf8";use Encode;
binmode STDIN, ":utf8";
binmode STDOUT, ":utf8";

$PTN="(\xe3\x80\x9c|\xc2\xa2)";
%HASH=("\xe3\x80\x9c"=>"\xef\xbd\x9e","\xc2\xa2"=>"\xef\xbf\xa0");

while(<STDIN>)
{
s/$PTN/$HASH{$1}/geo;
print;
}


220 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 02:10:23 ]
w8ac6nxs.hp.infoseek.co.jp/cgi-bin/soldout/index.cgi

perlで書かれたCGIゲームです。
パーラーのみなさん、ユーザーとして
どうぞ登録してください。

まだプレイヤー4人くらいしかいません。

ユーザーの50%をパーラーにしたいという
計画です。

221 名前:デフォルトの名無しさん [2008/05/24(土) 03:24:15 ]
>>219
$PTN="(\x{301C}|\x{00A2})";


222 名前:デフォルトの名無しさん [2008/05/24(土) 03:26:18 ]
>>219
pc11.2ch.net/test/read.cgi/tech/1177930957/

223 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 11:07:24 ]
>>221
ダメでした。
\x{00a2}が\xc2\xa2じゃないものになってしまいます……。

224 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 11:51:07 ]
>>前スレ928の方
utf8を扱う tr/// で再帰時に落ちる件、ActivePerl 5.10.0.1003 では正常になっていました。
詳細は未確認だけど、33747 のmg.cへの修正が効いている感じ。


225 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 13:24:03 ]
>>215

英会話の勉強とか。。。perlのコマンド、モジュール名だけでできたクロスワードだったら
といてみたいかも。

226 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 13:25:32 ]
>>225
「Head First Java 第2版―頭とからだで覚えるJavaの基本 (単行本) 」
ではJavaに関連した単語でクロスワードパズルがあった。

227 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:26:41 ]
>>219
ソースコード中に「use utf8」の宣言が無いから、全ての文字列は、
UT8フラグの無い、シングルバイトの文字から構成されていることになる。
ネット上の情報からすると、Perl では、UTF8 フラグ
なし文字列を Latin-1 文字列とみなしている(らしい)。次に、
binmode STDOUT, ":utf8";
の宣言があるから、print 文等において文字列が出力される際には、
シングルバイトのLatin-1 文字列が、utf8に変換される。その結果、
このような現象が起きる.....ということでいいのかな?

間違っていたら、エロイ人、修正して下さい。




228 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 19:50:41 ]
だから猿用のテンプレを何で貼らんのよ?

229 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 19:58:46 ]
>>227
>>3
#!/usr/bin/perl -w
require 5.008001;
use encoding 'utf8';
print utf8::is_utf8('binary?') ? 'with utf8 flag' : 'binary';
__END__

>>228
utf8 プラグマも encoding プラグマも使わないに越した事ないし。
フラグの有無で悩むより、マルチバイト文字処理が本当に
必要な箇所でだけフラグ付け外しする方がよっぽど楽。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<139KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef