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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 16:47:06 ]
"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
● 2010/02/19 現在の最新版: 5.10.1

▼ 前スレ
Perlについての質問箱 42箱目
pc12.2ch.net/test/read.cgi/tech/1257139591/
リンク集は >>2-3
Perl 日本語処理の基礎の基礎 >>4
過去スレは >>5-7 あたり

2 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 16:47:21 ]
[プログラミング自体の経験が無い奴はまずココを読め]
Perl プログラミング講座: ttp://www.site-cooler.com/kwl/perl/

[本]
リャマ: ttp://www.oreilly.co.jp/books/9784873114279/
駱駝: ttp://www.oreilly.co.jp/books/4873110963/
Effective Perl: ttp://www.ascii.co.jp/books/books/detail/4-7561-3057-7.shtml (修正)
クックブック: ttp://www.oreilly.co.jp/books/4873112028/
Perl ベストプラクティス: ttp://www.oreilly.co.jp/books/4873113008/
Perl Hacks: ttp://www.oreilly.co.jp/books/9784873113142/

[オンラインマニュアル]
最新のドキュメント: ttp://search.cpan.org/dist/perl/
perl5.8.x のドキュメント(一部): ttp://www.kt.rim.or.jp/~kbk/perl-5.8/
perl5.005_03 のドキュメント: ttp://www.kt.rim.or.jp/~kbk/perl5.005/
日本語ドキュメント検索: ttp://www.cpan.jp/search.cgi (停止中)
perldoc.jp: ttp://www.perldoc.jp/
perldoc.com: ttp://www.perldoc.com/

3 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 16:47:26 ]
[モジュール]
CPAN.com: ttp://search.cpan.org/
河馬屋二千年堂: ttp://homepage3.nifty.com/hippo2000/

[テクニック]
Perl メモ: ttp://www.din.or.jp/~ohzaki/perl.htm
Perl のページ: ttp://homepage1.nifty.com/nomenclator/perl/
Perl の小技: ttp://homepage3.nifty.com/hippo2000/perltips/index.htm

[Perl 5.8 Unicodeメモ]
ttp://www.rwds.net/kuroita/program/Perl_unicode.html (修正)
ttp://www.namazu.org/~tsuchiya/perl/perl-5.8.html
ttp://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html


4 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 16:47:31 ]
# [Perl 日本語処理の基礎の基礎]
# このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。
# このレスの内容をそのまま、UTF8 形式のソースファイルに保存して下さい。
# 入出力ともシフト JIS 形式のファイルまたは DOS 窓を想定しています。
# まず、以下の行を先頭に入れて下さい。
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)"; # ※1
use Encode;
# 次に、あなたが実行したい処理の内容を入れて下さい。
$file = 'C:/なんたら/かんたら.txt';
open my $fh, '<', encode("cp932", $file) or die $! ; # ※2
print <$fh>;
# 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう
# おまじないです。条件が異なる場合の対処方法は、ご自分で勉強して下さい。
# 【注】※1. の行を入れると、DOS 窓への日本語出力は簡便になりますが、
# ソースファイル名に非 ANSI 文字が含まれる場合に die 文の出力が失敗します。
# ※2. OS に渡す文字列(ファイル名,dos コマンドのオプションなど)は、
# この例のように cp932 でエンコードする必要があります。

5 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 16:47:34 ]
[過去スレ1]
1 pc.2ch.net/tech/kako/1017/10177/1017736187.html
2 pc3.2ch.net/tech/kako/1033/10336/1033688230.html
3 pc2.2ch.net/tech/kako/1041/10412/1041205885.html
4 pc2.2ch.net/tech/kako/1048/10485/1048519394.html
5 pc5.2ch.net/tech/kako/1053/10530/1053053082.html
6 pc5.2ch.net/tech/kako/1060/10606/1060689008.html
7 pc2.2ch.net/test/read.cgi/tech/1068051036/ (事故により消滅)
8 pc2.2ch.net/test/read.cgi/tech/1074151549/ (事故により消滅)
9 pc5.2ch.net/test/read.cgi/tech/1079114157/
10 pc5.2ch.net/test/read.cgi/tech/1085564875/
11 pc5.2ch.net/test/read.cgi/tech/1090889189/
12 pc5.2ch.net/test/read.cgi/tech/1094579428/
13 pc5.2ch.net/test/read.cgi/tech/1097851764/
14 pc5.2ch.net/test/read.cgi/tech/1101649274/
15 pc5.2ch.net/test/read.cgi/tech/1105953092/
16 pc8.2ch.net/test/read.cgi/tech/1111034732/
17 pc8.2ch.net/test/read.cgi/tech/1117870308/
18 pc8.2ch.net/test/read.cgi/tech/1121804136/
19 pc8.2ch.net/test/read.cgi/tech/1126977805/
20 pc8.2ch.net/test/read.cgi/tech/1131286411/

6 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 16:47:36 ]
[過去スレ2]
21 pc8.2ch.net/test/read.cgi/tech/1134327348/
22 pc8.2ch.net/test/read.cgi/tech/1138519327/
23 pc8.2ch.net/test/read.cgi/tech/1141742901/
24 pc8.2ch.net/test/read.cgi/tech/1146022352/
25 pc8.2ch.net/test/read.cgi/tech/1149259409/
26 pc8.2ch.net/test/read.cgi/tech/1153412251/
27 pc8.2ch.net/test/read.cgi/tech/1157874614/
28 pc8.2ch.net/test/read.cgi/tech/1162273941/
29 pc11.2ch.net/test/read.cgi/tech/1166708139/
30 pc11.2ch.net/test/read.cgi/tech/1173880452/
31 pc11.2ch.net/test/read.cgi/tech/1181500187/
32 pc11.2ch.net/test/read.cgi/tech/1186995713/
33 pc11.2ch.net/test/read.cgi/tech/1192463997/
34 pc11.2ch.net/test/read.cgi/tech/1199977642/
35 pc11.2ch.net/test/read.cgi/tech/1208674881/
36 pc11.2ch.net/test/read.cgi/tech/1215569470/
37 pc11.2ch.net/test/read.cgi/tech/1218449440/
38 pc11.2ch.net/test/read.cgi/tech/1221967332/
39 pc12.2ch.net/test/read.cgi/tech/1234181856/
40 pc12.2ch.net/test/read.cgi/tech/1243631674/

7 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 16:47:39 ]
[過去スレ3]
41 pc12.2ch.net/test/read.cgi/tech/1249581780/
42 pc12.2ch.net/test/read.cgi/tech/1257139591/

8 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 10:33:23 ]
1,1,4
1,2,7
1,3,2

という(X,Y,値)というメッシュ(グリッド)データがあって
例えば座標が1ごとに値があるのを、5毎にして今までの値を平均して入れるというのを組みたいのですが
どうすればよいでしょうか?

どう処理して良いかわからず困っています。

9 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 10:56:54 ]
>>8
5ごとのメッシュを作っておいてそこにコピーする、というのは何となく思いついたんだけど、
「今までの値の平均」っていうのがよくわからんな。

10 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 11:19:03 ]
eval {
...
};
if (@_){
...
}
って感じで例外処理できるっていろんなとこに書いてるけど、これがサブルーチンの中で既に@_の中埋まってたりする場合evalの最後でundef(@_)とかしなきゃいけないの?
なんか他にいい方法ない?



11 名前:8 mailto:sage [2010/02/21(日) 11:41:27 ]
>>9
今までの値の平均というのは5ごとのメッシュにした場合そのメッシュには
(1,2),(1,3),(1,4),(1,5)(2,1)・・・・・(5,5)のそれぞれのメッシュの値の平均を入れたいんです。
この場合このメッシュは変換後(2,5、2,5)の座標となって上記の平均が値となるようにです。


12 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 11:42:26 ]
>10
@_ じゃなくて $@ じゃないのか?

13 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 13:19:22 ]
>>12
ありがと...orz

14 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 15:22:58 ]
evalの前でlocal $@すればいいんじゃない

15 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 16:14:53 ]
>>11
2.5×{1+INT(座標)}で変換すりゃいーんじゃないか

16 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 16:15:38 ]
ごめん
座標÷5

17 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 16:21:26 ]
二次元配列に入れてforでsum取って25で割るだけだろ?

18 名前:8 mailto:sage [2010/02/21(日) 17:06:36 ]
>>15,16
おお、座標の変換は出来そうですね。
あとはそれで値を平均していくというのができればいいのですね。

>>17
forでsumとって25で割るっていうのは値の平均ですよね?
二次元配列に入れるのは座標ですか?



19 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 21:45:13 ]
Perlに二次元配列なんてねえよ
リファンレスな

20 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 22:19:11 ]
perldoc perllol より
>If you want to get at a slice (part of a row) in a multidimensional
>array, you’re going to have to do some fancy subscripting. That’s
"multidimensional array"
確かに二次元って言葉は出て込ない(通常 Array of Array って書くから)

>リファンレス
??




21 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 22:20:20 ]
×Array of Array
◯Array of arrays


22 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 22:23:08 ]
呼び方はかってだろうけれど、どっちにしろリファンレスを使ってた次元配列を実現しているのだから、同じこと

23 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 22:24:40 ]
そうじゃなくて

24 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 22:25:38 ]
そうじゃなくて何?

25 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 22:25:56 ]
refanless

26 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 22:26:10 ]
リ「ファレ」ンスだよ。


27 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 22:30:05 ]
恥ずかしい

28 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 05:55:04 ]
低レベル化、ここに極まれり。

29 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 16:40:49 ]
前スレから、用語がどうとか本捨てろとか話の腰を折っては
自己満足してる初心者がいるな

30 名前:デフォルトの名無しさん [2010/02/24(水) 16:02:17 ]
if ($res->is_success && (!($recstr =~ /.+/) ||
$res->content =~ /$recstr/)) {
service_set($v, $r, "up");
&ld_debug(2, "check_http: $$r{url} is up\n");
return $SERVICE_UP;
}

service_set($v, $r, "down");
&ld_debug(3, "Headers " . $res->headers->as_string);
&ld_debug(2, "check_http: $$r{url} is down\n");
return $SERVICE_DOWN;

こんなコードあるんだけど
if ($res->is_success の箇所で
Can't call method "is_success"って出てて処理が停止しちゃうんだけど
とりあえず続行させるにはどうすればいいの?




31 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 16:05:22 ]
削ればいいと思うよ。その後の動作は保証しないが。

32 名前:30 [2010/02/24(水) 20:26:30 ]
なんか{is_success}にしたらとりあえず大丈夫な気がしないでもないけど、
Perlってそもそも変数に原始性はもってないものなの?

ECCメモリ使ってないせいなのかな?

33 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 20:34:59 ]
その話を続けるつもりなら、CPAN モジュールならモジュール名を晒せよ。
じゃなきゃ、こっちが分かるわけないだろ。


34 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 21:58:33 ]
HTTP::Response でしょ。コードで use してるのは LWP::UserAgent 辺りかもしれないけど。

35 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 22:09:35 ]
HTTP::Status


36 名前:デフォルトの名無しさん [2010/02/24(水) 22:55:42 ]
とりあえずData::Dumperで$resの値を晒してもらうのがいいんじゃないか?

37 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 22:59:36 ]
「Can't call method」って出てるのにデータ構造見せられてもね

38 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 00:12:20 ]
どのパッケージにblessされてるかわかるだろ。もっともそれだけなら
ref $resをprintするだけでいいけどな。

39 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 16:40:46 ]
AUTOLOADが実行されてない時点で何かおかしいだろ

40 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 11:49:00 ]
>>33 お父さんかよ!
>>34 お母さんかよ!
>>35 お兄ちゃんかよ!
>>36 家庭訪問の先生かよ!
>>37 たまたま居合わせた水道屋かよ!
>>38 とりあえず呼ばれてきた親戚かよ!
>>39 とりあえず呼ばれてきたお巡りさんかよ!



41 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 12:11:25 ]
mooseでis => 'bare'して、自分でアクセサ書く時に、そのアクセサの中で型制約したい時はどうするの?

42 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 20:45:28 ]
has 'hoge' => ( is => 'bare', isa => 'Foo', reader => '_get_hoge', writer => '_set_hoge' );
最終的にhogeに値をセットするんなら最初にhogeに対して指定した制約(Foo)が適用されるんじゃないの?
俺が素人だからかもしれんが何がしたいのかよくわからん

43 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 09:44:33 ]
web上の画像ファイルを自動でダウンロードするにはどうるすれば良いですか?
たとえばhogehoge/hoge.jpgを自動でダウンロードする場合です。


44 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 09:51:13 ]
use LWP;

45 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 00:00:24 ]
新Perldocって死んだの?
Googleグループもスパムが飛んでるし

46 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 01:51:13 ]
perldoc.perl.org/ ならこっちからは繋がるけど?

47 名前:デフォルトの名無しさん [2010/03/01(月) 02:48:27 ]

requireで実行した処理に引数を送りつけるにはどうしたら良いでしょうか?
requireで実行でなくても構わないんですが、

1: 実行中に外部から文字列 (フィル名と引数) を受け取る。
2: その文字列をrequireして返って来た内容を処理する。

と言うのがしたいのです。
コマンドとかではなくて、同じプロセス内で実行できたらいいなと思ってます。


48 名前:47 mailto:sage [2010/03/01(月) 03:27:24 ]

eval( qq[ local \@_ = @外部から受け取った引数\; \n] . $openで読んだファイル内容 );

とやるのはあまりに強引でしょうか?


49 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 05:19:14 ]
>>46
あ、新PerldocJPだった
年末に空中分解したような感触を受けたんだけど

50 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 06:02:22 ]
>49
分解以前に、始まってるようにも見えなかったが



51 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 21:58:27 ]
貴重な生きてる板だから何かしようぜ

52 名前:デフォルトの名無しさん mailto:sage [2010/03/02(火) 23:17:42 ]
これからやろうぜ!って集まったけど年開けてみんな忙しくてはや3月って感じだろ

53 名前:デフォルトの名無しさん [2010/03/03(水) 09:05:51 ]
5.11使ってる人いる?

54 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 13:30:51 ]
CPANTSってメンテ中?
>>53
12月に5.12が出ると思ったら難航しているみたいだから使っているよ、5.11.5を。

55 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 19:38:03 ]
($var) = unpack(...)

こんなかんじのコードがあるんですけど$varに括弧を付ける意味ってなんですか?

56 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 19:45:27 ]
リストコンテキストになる

57 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 19:57:36 ]
>>56
ありがとうございます。
ググってもうまく探せなかったので助かりました。

58 名前:デフォルトの名無しさん [2010/03/04(木) 02:00:32 ]
1〜1000の整数の先頭に0を付け加えて、4桁にしたい

1   →0001
100 →0100
1000→1000

s/〜/〜/;

で一発で置換するには〜の部分はどう書けばいいですか?

59 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 02:03:10 ]
スレ違い

60 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 02:39:02 ]
sprintf 禁止なのかな。



61 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 03:09:27 ]
全角だから工夫が必要かもね


62 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 03:14:54 ]
Pythonでやればいいのに

63 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 03:15:30 ]
Python厨

64 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 03:20:21 ]
いやだからその部分だけPythonにやらせてPerlから呼び出せばいいじゃん
そういう使い方ができるのがPythonなんんだから

65 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 03:23:50 ]
print( substr("0000" . "1", -8, 8 ) . "\n");
print( substr("0000" . "100", -8, 8 ) . "\n");
print( substr("0000" . "1000", -8, 8 ) . "\n");

66 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 04:05:45 ]
$str =~ tr/0-9/0-9/;
my $formated_str = sprintf( %04d, $str );
$formated_str =~ tr/0-9/0-9/;
文字コードは書かれてないから知らん

67 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 04:21:09 ]
use utf8;
utf8::is_utf8($_) or die "死ね";
s{ (?<!\d) (\d{1,3}) (?!\d) }{
  my $is_zenkaku = $1 =~ tr/0-9//;
  ( $is_zenkaku ? '0' : '0' ) x ( 4 - length $1 ) . $1;
}egx;

68 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 05:05:06 ]
なんかたまたま全角で書いてるだけだったりしてな・・・整数って書いてるし。
ということで俺は つsprintf

69 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 16:44:31 ]
use utf8;
$_ = "1〜1000の整数の先頭に0を付け加えて、4桁にしたい ";
1 while(s/(?<![0-9])([0-9]{1,3})(?![0-9])/0$1/g);

規制一時解除記念カキコ。

70 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 06:52:00 ]
*{__PACKAGE__ . "p"} = \&CORE::print;
p(); #=> Undefined subroutine &main::p called at - line 2.

これは print 関数の厳密なエイリアスは作れないということでしょうか



71 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 10:49:27 ]
>>70
作れないかどうかはわからないが、コードだけ見ると名前空間の::がないからでは?
*{__PACKAGE__."::p"}

72 名前:デフォルトの名無しさん [2010/03/10(水) 12:16:30 ]
#!/usr/bin/perl -w
# perl のパスを指定

$send="00000000000\@docomo.ne.jp"; # デフォルト送信先

while (<>){
$content .= $_;

m/^Content-Length: (\d+)$/;

if ( m/^$/ ){ # 本文は調べない
while (<STDIN>){
$content .= $_;
}
}
}

open(SENDMAIL,"|/usr/bin/sendmail $send");
print SENDMAIL $content;
close(SENDMAIL);

exit;

Perlを勉強中で、上記を使って自分の携帯からメールを送りそのまま返信
(転送)するプログラムを作ろうとしています。
実際にメールを送るとサーバーには届いているのですが、返信をしてくれ
ません。記述で間違っている箇所があれば教えてください。

73 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 12:33:34 ]
とりあえず受信と送信一度に書くとどこに問題があるかわかりにくいので、

・受信したメールを適当なファイルに格納するプログラム
・適当な内容のメールを送信するプログラム

を別々に書くところからはじめるのをお勧めする。

74 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 23:23:28 ]
perlの前にmailを勉強すべきかもしれない
ちゃんとヘッダを作ってないのに /usr/bin/sendmail を
使うのはよくない。

75 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 01:57:19 ]
sendmailは本当に/usr/binにあるのか?

76 名前:72 mailto:sage [2010/03/11(木) 09:21:14 ]
レスありがとうございました。いろいろ試してみて、.forwardを作り直したら
上手くいきました。記述は全然変えていないのですが、.plで作成してサーバー
で変更をしていたのがよくなかったようです。
原因がわからず解決まで半日もかかってしまいましたorz

上のコードは社内でperlができる人のを真似たものでした。

77 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 17:54:42 ]
続けてですみません。
私が作りたいと思っているプログラムが

「携帯Aから(絵文字などを含む)メールを受け取り、携帯Bに転送する」

というものなのですが、>>72で書いたコードではデコメは良いのですが
絵文字が全て〓に化けてしまいました。

サーバーで受け取った時点で〓に置換されてしまうので、送る各キャリ
アに合わせて文字コードを変換しなくてはならないとわかりました。
ttp://cgipon.specters.net/labo/it_emoji.htmlで紹介されているサン
プルを試してみたりしているのですが、上手く変換してやることができ
ずにいます。 どのような方法を試してみればよいでしょうか?

78 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 19:35:50 ]
〓に変換されたらもとが何の絵文字だったか知りようがないのでは?

79 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 21:27:10 ]
SoftBankの絵文字に変換されてるって意味じゃないよな

80 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 01:59:19 ]
>>77
> どのような方法を試してみればよいでしょうか?

どこが悪いのか突き止めて、そこを修正するといいよ。



81 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 07:40:31 ]
バッチファイルに以下のように記述し、放り込んだファイルの名前に応じて
テキストファイルの一部を置換したいんですが、よく文字化けしてしまいます
>>4を使ったplファイルを別途用意せず、バッチファイルへの記述だけで
文字化けに対応する方法はないでしょうか?

perl -pe s/"置換前文字列"/"置換後文字列"/ "置換前.txt" > "置換後.txt"

82 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 09:30:44 ]
>>77です。
>>78
全てを試したのではないのですが〓に変換されたのは、ほぼ全ての絵文字
でした。
>>79
SoftBankではないです、言われてみれば〓はSoftBankのロゴなんですね。
>>80
上記のサイトのサンプルの関数を通して変化しなかったので、他のサイト
を一生懸命探していました。

絵文字はこんなに難しかったのですね

83 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 11:35:37 ]
>>81
perl -Mencoding=xxx かな。
PERLIOとかPERL_ENCODINGは効かないのか...

84 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 03:58:23 ]
>>83
ありがとうございます
が、恥ずかしながらうまく使えません・・・
以下みたいなのとは根本的に使い方が違うんでしょうか?
perl -Mencoding=sjis -pe s/"置換前文字列"/"置換後文字列"/ "置換前.txt" > "置換後.txt"

85 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 06:34:22 ]
実はsjisじゃなくてcp932ってオチだったりして

86 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 18:34:27 ]
Encode::JP::Mobile; を使った経験のある方がいたら、教えてく下さい。

my $subject_encoded =
is_imode($email_to)
? '=?SHIFT-JIS?B?' . MIME::Base64::encode_base64( encode( 'x-sjis-docomo', $subject ), '' ) . '?='
: is_softbank($email_to)
? '=?UTF-8?B?' . MIME::Base64::encode_base64( encode( 'x-utf8-softbank', $subject ), '' ) . '?='
: is_ezweb($email_to) ? encode( 'x-sjis-kddi-auto', $subject )
: '=?ISO-2022-JP?B?' . MIME::Base64::encode_base64( encode( 'iso-2022-jp', $subject ), '' ) . '?=';

UTF-8文字列の$subjectを上記を使ってエンコードしたいのですが、文字
化けしてしまいます。Encode::Guessで確認するとasciiに変換されていま
した。使い方に間違いがあるでしょうか?よろしくお願いします。

87 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 09:11:14 ]
>>86
どの携帯キャリアの分岐だったのか、encode_base64を通す前が問題なのか
通した後が問題なのか、ぐらいは切り分けてから質問しろよ。

88 名前:デフォルトの名無しさん [2010/03/16(火) 14:21:01 ]
プログラムを組む際は use strict を最初に書いておく事といわれたので、
これをつけて.plファイルを実行すると、
下記のようなエラーが多く出ます。どう対応すればいいでしょうか_?
use strict をつけないと特にエラーは出ません。

Global symbol "$xxxx" requires explicit package name at xxxx.cgi line 16.

89 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 14:55:14 ]
>>88
「use strict を付けた状態でエラーにならないように書け」ってこと。
変数にmy付けてスコープを明確にせよ

90 名前:デフォルトの名無しさん [2010/03/16(火) 15:10:35 ]
>>89

thanks



91 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 18:26:58 ]
>>87
不十分でした、すみません。
キャリアはdocomoなのでis_imodeの分岐を通っています。
encode_base64の前と後、どちらに問題があるのかつかめていない状
態です。
utf-8にデコードした文字列をそこに通すだけで良いのかと考えてしま
っていたのですが、使い方を間違っているようです。

絵文字について調べてEncode::JP::Mobileを見つける事ができたので
すが、携帯から受け取ったメールをそのまま返信するというコードに、
どう当てはめていけばよいのかわからずに苦戦中です。

92 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 20:46:44 ]
使い方はそんなもんのような気がするので、入力段階で化けてそうだが。
単に化けたというんじゃなくて、具体的に$subjectがこれこれのときに
結果がこうなって化けてますというのを示して欲しい。

93 名前:デフォルトの名無しさん [2010/03/16(火) 21:20:56 ]
DBIx::Classについて質問です。

PostgresqlのXML型へ代入しようとするとエラーが出ます。

DBIx::Class::ResultSet::update_or_create(): DBI Exception:
DBD::Pg::st execute failed: ERROR: operator does not exist: xml = unknown
LINE 1: ...fo_id = $1 AND me.program_type_id = $2 AND me.res = $3 AND m...
^
HINT: No operator matches the given name and argument type(s).
You might need to add explicit type casts.

XML型への代入にキャストが必要だということはわかったのですが、
具体的にどうすればよいのか、ググってもマニュアル読んでも見つかりません。
賢い方、どうかご教示ください。

94 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 09:17:32 ]
>>92
レスありがとうございます。
ttp://yanor.net/wiki/?%E6%90%BA%E5%B8%AF
こちらのメール送信を参考にさせてもらっています。

my $email_to = '00000000000@docomo.ne.jp';

MIME::WordDecoder->default(
MIME::WordDecoder->new([
'*' => sub{jcode(shift)->sjis},
]
)
);

#メール読み込み準備
my $parser = new MIME::Parser;
$parser->output_to_core(1);
$parser->tmp_recycling(1);
$parser->use_inner_files(1);

my $entity = $parser->parse(\*STDIN);

my $subject = decode('MIME-Header', $entity->head->get('Subject'));

上記のようにして$subjectを抜き出して、>>86を通しています。
このままですと、日本語は大丈夫で絵文字が全て〓となってしまいます。

95 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 10:24:53 ]
だからどうやって処理してるかじゃなくて具体的にどういう
$subjectの値がどう文字化けしたかを示せと。

俺の予想では「このプログラムに入る前から絵文字が
〓に置き換わっている」だけどなw

96 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 11:31:02 ]
どんな絵文字かわからないけど、もし携帯で使うような絵文字のことなら文字コードで定義されてないんじゃない?
入出力結果はほしいね。


97 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 11:54:10 ]
>>95
debugで確認して
「今日の天気は[雲の絵文字]です」が「莉頑律縺ョ螟ゥ豌励・縲薙〒縺・」
となっていました。

>俺の予想では「このプログラムに入る前から絵文字が
>〓に置き換わっている」だけどなw
受け取った段階で〓ということでしょうか?

98 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 11:57:56 ]
こういうときは普通16進ダンプにするものだ。

99 名前:デフォルトの名無しさん [2010/03/17(水) 12:58:07 ]
cookie にメモを保存してやりたいんだけど、cookie のどの項目に保存してやればいい?
このメモはクライアント側のメーカー名でこれは、CGIで取得できます。
この値をcookie に保存したいと考えています。

CGI::Cookie は理解しています。

1. expiration date
2. domain
3. path
4. secure flag
とクッキーには項目がありますが、どのあたりにいれてやればいいでしょうか?
また、具体的にどのように、セットすればいいでしょうか?
また、 %cookies = fetch CGI::Cookie;とすることで、
ハッシュに格納できることは理解しております。


100 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 13:04:28 ]
>>99
どれもハズレ








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

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

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