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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 12:22:12 ]
"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/09/21 現在の最新版(安定版): 5.10.0
● 2008/09/21 現在の開発版: 5.9.5

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

リンク集は>>2-3
Perl 日本語処理の基礎の基礎 >>4
過去スレは>>5-6 あたり


452 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 12:32:45 ]
?が付いただけで質問返しと認識するってどうよ…
って430までで唯一「・・・じゃダメなの?」を使ったオレが
顔を真っ赤にしてカキコ。

>>447
my @arr = ( ([1,2 ]) x 2 ) ;


453 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 12:34:56 ]
>>439
埼玉都はネタだけど、神戸県は明治初期に実在した。

454 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 12:35:15 ]
あ、問題見てなかった
リファレンス使わない2次元配列なんて、逆にわからんわ

455 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 12:43:29 ]
>>447
2問目の選択肢が変更になったらどうするのかねアンダーソン君

456 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 13:00:06 ]

リファレンス使わない2次元配列なんてない、
てことはリファレンスは使っていいのか、
となると2次元配列じゃない方がやりやすくね?

ってなるんだが。


457 名前:デフォルトの名無しさん [2008/11/13(木) 13:11:47 ]
↑ こいつ最高に頭悪い

458 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 13:35:50 ]
>>2-458
すごく頭悪そう。

459 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 15:09:10 ]
>>458 チョトワロタ


460 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 16:20:56 ]
ヒマだったんで二次元配列縛りなしでやってみた。

my $ok = 0;
TEST: for ( @qz ) {
print $_->{'質問'} . "\n";
print "\t$_\n" for ( @{$_->{'選択肢'}} );
while (1) {
print '正しい選択肢の番号を入力してください(中止:q): ';
chomp ( my $c = <STDIN> );
last TEST if $c =~ /q/i;
if ( $c =~ /^\d+$/ && 1 <= $c && $c <= @qz ) {
$c == $_->{'答'} ? ( print "正解" and $ok++ ) : print "不正解";
last;
}
}
print "。\n\n";
}
print "$ok 問正解しました。\n";




461 名前:407 mailto:sage [2008/11/13(木) 16:33:58 ]
>>408
レスありがとうございます。
規制に巻き込まれてしまい、返事が遅くなってしまいました

やはり一度読み込み直すしかありませんか…
外部データが増えるとそれだけ読み込み・追加・書き出しに時間がかかってしまうので
何とか追加だけでやりくり出来ないかと考えていたのです。
アドバイスと合わせ、色々模索してみたいと思います

462 名前:460 mailto:sage [2008/11/13(木) 16:48:31 ]
誤 $c <= @qz
正 $c <= @{$_->{'選択肢'}}

余計なことするといつも恥をかく...orz




463 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 18:20:36 ]
>>461
> やはり一度読み込み直すしかありませんか…

いや。
普通、DBM類を使う。

464 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 19:39:19 ]
>>461
全ての面倒を読み込み側に押し付けるって手もある。
保存用フォルダに "${^T}.${$}" 等のファイル名で書き出すとか。

465 名前:デフォルトの名無しさん [2008/11/13(木) 20:08:32 ]
この度、WindowsサーバーのPerlを5.6.1から5.8.8にバージョンアップ
する事になりました。
バーチャルサーバーを立ててWEBチームにテストしてもらっていたのですが、
動かない部分がいくつかある模様です。
WEBチームからPerlのバージョンアップによって
命令がどう変わったか等を調べて欲しいと頼まれたのですが、
どのようにして調べれば良いのでしょうか?

ご教授お願いいたします。


466 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 20:21:12 ]
>>465
perldoc.perl.org/index-history.html

467 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 20:47:19 ]
「質問を質問で返すな」って、そんな場面は、結構あると思うし、
そもそも(発端になった)>>435は質問に、まったく答えてない訳でも
無いのに…。

「夕飯何にしようか?」
「肉が良いなぁ。焼肉としゃぶしゃぶどっちが良い?」
「質問を質問で返すなm9(^Д^)プギャー」

とか言っちゃうのかな?(w

468 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 20:51:27 ]
いうだろ

469 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 21:00:57 ]
これがゆとり大学生の実態である。

470 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 21:03:53 ]
>>465
>命令がどう変わったか
「命令」は変わってないよな。w

マジレスすると、変更内容を調べるよりも、
ダメなところを特定して調整するほうがきっとマシ。
それがイヤなら、Perlのバージョンを戻せ。

つか、両方インストールして使いわけろよ。ふぁ。



471 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 21:12:38 ]
>>461
キーの重複はかまわないのか?

☆かまわない
別のファイルに出力してから、もとのファイルに
くっつければいいんじゃね。

☆ダメ
前のファイルを読み込まずに、重複を調べる
方法を教えろ。
続きはそれからだ。

472 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 21:51:49 ]
× 続きはそれからだ。
○ 続きはよそでやれ。

473 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 21:56:22 ]
「夕飯何にしようか?」
「普通に焼肉じゃいけないの?」


474 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 21:56:52 ]
「夕飯何にしようか?」
「普通にしゃぶしゃぶじゃいけないの?」

475 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 21:57:56 ]
「夕飯何にしようか?」
「普通にカレーじゃいけないの?」

476 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 21:59:48 ]
「夕飯何にしようか?」
「ラーメンじゃダメなの?」

477 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 22:32:54 ]
「夕飯何にしようか?」
「俺が決めていいの?」

478 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 01:30:11 ]
夫「今日の夕飯なに?」
妻「何が食べたいの?」
夫「質問に質問で返すなっ!!」

……これが>>430の結婚生活(もしあったとして)


479 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 05:35:27 ]
「夕飯何にしようか?」
「晩飯じゃないの?」

480 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 06:10:57 ]
単一ファイル内で複数packageを定義した場合、
継承がうまく動かないのですが、どうすれば良いでしょうか。

$foo = Foo->new(); # OK
$bar = Bar->new(); # NG

package Foo;
sub new { bless {}; }

package Bar;
@ISA = qw(Foo);


これだと Bar->new() が失敗します。
package Bar 部分を Bar.pm というファイルにして、ファイル先頭で use Bar すると
問題ないのですが、単一ファイル内で継承させる場合はどう書けば良いのでしょうか。



481 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 06:42:23 ]
{package Foo;
sub new { bless {}; } }
{package Bar;
@ISA = qw(Foo);}

$foo = Foo->new(); # OK
$bar = Bar->new(); # OK

482 名前:480 mailto:sage [2008/11/14(金) 07:00:38 ]
>>481
おおお。助かりました。thanks!

483 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 08:40:19 ]
package Foo;
sub new { bless {}; }

package Bar;
@ISA = qw(Foo);

package main;
$foo = Foo->new(); # OK
$bar = Bar->new(); # OK

じゃねえの

484 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 14:24:45 ]
夫「今日の夕飯なに?」
妻「スキヤキじゃダメなの?」
夫「・・・」

485 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 14:26:27 ]
夫「赤ちゃん産まれた?男の子?女の子?」
妻「男じゃダメなの?」
夫「・・・」

486 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 19:10:29 ]
>>485
その流れはヤバい!w
もう離婚するしかないな。

487 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 20:42:25 ]
ゴメン理解できない
童貞の俺にも分かるように詳しく

488 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 20:53:25 ]
童貞じゃないけど、俺もわからん!

489 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 21:03:13 ]
女だったら、夫がロリコンでいたずらすると思ったんだろう。

490 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 21:50:28 ]
な〜る



491 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 21:58:27 ]
深読みしすぎてた
トン

492 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 22:46:06 ]
>>489
それは俺も考えたけど、
それだとスキヤキが説明できない。

493 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 05:16:10 ]
>>485
もう嫁ケンカうってるじゃんw

494 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 09:03:03 ]
ツンなだけだろw

495 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 10:19:13 ]
生まれる段階に至っても性別を知らなかった夫

496 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 19:02:17 ]
産まれた?って訊いてる時点でダメだろ

497 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 19:58:51 ]
後のオブジェクト指向である

498 名前:デフォルトの名無しさん [2008/11/16(日) 02:32:11 ]
同じ文字列を使ってもDigest::MD5で得られる16進とmd5sumの結果が違うのはなぜでしょうか

499 名前:498 mailto:sage [2008/11/16(日) 02:36:14 ]
自己解決しました。
一方には改行コードが含まれていないだけでした。

500 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 10:31:38 ]
perlのマッチ演算子で変数が使えますけど
$pat = "foo"; $str =~ /$pat/; # この場合 /foo/ と同じ
変数に含まれる文字を全て普通の文字としてマッチさせるにはどうしたらいいでしょうか。

たとえば $pat = "foo[0]"; だと、/$pat/では[0]の部分を文字クラスとして処理するよう
ですが、単純に "foo[0]" という文字にマッチしてほしいのです。



501 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 10:36:15 ]
/\Q$unko\E/

502 名前:デフォルトの名無しさん [2008/11/16(日) 13:14:45 ]
dmain.cpp
Note: including file: d:/projects/game/include\common.h
Note: including file: d:/projects/game/include\product.h
Note: including file: d:/projects/etc/psdk/include\WindowsX.h
Note: including file: d:/projects/etc/psdk/include\windows.h

こういうファイルを

dmain.obj: \
/cygdrive/d/projects/game/include/common.h \
/cygdrive/d/projects/game/include/product.h \
/cygdrive/d/projects/etc/psdk/include/WindowsX.h \
/cygdrive/d/projects/etc/psdk/include/windows.h \
dmain.cpp

こんな風にするスクリプトってどうやるの?


503 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 13:57:44 ]
perl -ple 's/$/\\/; s/cpp/obj/; s/Note: including file: d:/\/cygdrive\/d/; END{ print "dmain.cpp";} '

504 名前:デフォルトの名無しさん [2008/11/17(月) 20:02:29 ]
質問です。掲示板のプログラムなのですが、データファイル(1行1投稿内容のテキストファイル)
を掲示板のCGIのサーバーとは異なるサーバーに置きたいのですが、その場合どのように
すればよいでしょうか? できればmySQLサーバーはインジェクションの関係で使いたくあり
ません。

サーバー1 掲示板cgiや画像データなどを担当
サーバー2 掲示板テキストデータ(掲示板cgiから読み書きされる)

なにかアドバイスをお願いします。

505 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 20:11:26 ]
>>504
NFSマウント。とネタレス。
WebProg行け。とマジレス。
その質問だとperl無関係だから、いきなりperlのスレに行くなよ…。

506 名前:デフォルトの名無しさん [2008/11/18(火) 19:27:48 ]
www.drk7.jp/MT/archives/001422.html
に記載されている通りにやったのですが、
C:\strawberry\cpan\build\DB_File-1.817-XRfyBQ>perl Makefile.pl
Parsing config.in...
Looks Good.
Note (probably harmless): No library found for -llibdb
Writing Makefile for DB_File

C:\strawberry\cpan\build\DB_File-1.817-XRfyBQ>dmake
cp DB_File.pm blib\lib\DB_File.pm
AutoSplitting blib\lib\DB_File.pm (blib\lib\auto\DB_File)
gcc -c -I/usr/local/BerkeleyDB/include -s -O2 -DWIN32 -DHAVE_DES_FCRYPT
-DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -DPERL_MSVCRT_
READFIX -s -O2 -DVERSION=\"1.817\" -DXS_VERSION=\"1.817\" "-IC:\strawberry
\perl\lib\CORE" -D_NOT_CORE -DmDB_Prefix_t=size_t -DmDB_Hash_t=u_int32_t versi
on.c
version.c:30:16: db.h: No such file or directory
dmake: Error code 129, while making 'version.o'

と出てしまい、DB_Fileが結局インストールされません。
INCLUDEもLIBも自分の環境に沿って変えているのですが出来ません。

どなたかよろしくお願いします。

507 名前:デフォルトの名無しさん [2008/11/18(火) 20:14:56 ]
長文すみません
以下のjavaを

// 平均パケット到着レートの算出&ヒストグラム構成
if (preTimeList.size() >= pktNumForCalcRateAverage) {
sampleAveRate = pktNumForCalcRateAverage / (nowTime - preTimeList.remove(0));
int point = (int)(sampleAveRate / gap);
histgram[point] += 1;
total += sampleAveRate;
lineNum += 1;
}

をperlに書き変えたいのですが

# 平均パケット到着レートの算出&ヒストグラム構成
if ($preTimeList.size() >= $pktNumForCalcRateAverage) {
$sampleAveRate = $pktNumForCalcRateAverage / ($nowTime - $preTimeList.remove(0));
    $point = ($sampleAveRate / $gap);
    $histgram[$point] += 1;
    $total += $sampleAveRate;
    $lineNum += 1;
  } 

ではエラーが出てしまいうまくいきません。
nowTimeが間違っているのでしょうか?
どなたかアドバイスお願いします。

508 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 21:14:27 ]
エラーメッセージは?

509 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 21:56:41 ]
それ以前の問題だろ…

javaの文章に適当に$つけりゃperlになるとでも思ってんのかねえ?

510 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 21:58:07 ]
Perl 6で動かしてるとか



511 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 22:36:19 ]
  エラーメッセージを読む。

そういうクセをつけてあげないと、本人のために良くないだろ。

512 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 22:57:13 ]
すげえ正論っぽいし、事実>>507に対するレスじゃなきゃ
完全同意なんだけどねえ。
車を運転しようとしてる9歳児に「交通規則は守れるか?」
って問うくらいには見当違いだと思う。


513 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 23:17:55 ]
まあまあ、推測に推測を重ねていないで、ここは本人のレスポンスを
待とうじゃないか。

514 名前:デフォルトの名無しさん [2008/11/19(水) 00:13:09 ]
>>505
ありがとうございます。別にきいてみようとおもいます。

515 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 00:44:16 ]
>>507
- java の . と perl の . の違い
- int の意味
- java の size メソッドと perl の scalar @arr で何が得られるか
- java の remove メソッドと perl の shift ( or splice )
- 更には各変数と配列に何が入っててどういう状態なのか
- 前後にどういう処理が行なわれているか
これが直に答えられないなら移植なんか考えない方が良いよ。


516 名前:506 [2008/11/19(水) 03:43:41 ]
No library found for -llibdb じゃなくて
No library found for -ldb でした…。
どなたかよろしくお願いします…。

517 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 07:47:34 ]
>>516
dbは正常にインストールされているのか

518 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 19:35:21 ]
>>512
じゃあ何と言うべきなの?
キミにはまだ早い、オトナになるまで待ちなさい、とでも?

519 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 19:45:50 ]
ゆとり乙

でおk

520 名前:506 [2008/11/20(木) 00:21:04 ]
>>517さん
dbというとちょっと分からないのですが、
Berkeley DB 4.6.21 をインストールして、
www.drk7.jp/MT/archives/001422.html
に書いてある通りに全ての手順を踏んだのですが、
No library found for -ldb
となって出来ないんです…。




521 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 04:46:40 ]
ぜんぜん詳しくないけど、あてずっぽうで・・・

gcc -c -I/usr/local/BerkeleyDB/include -s -O2 -DWIN32 -DHAVE_DES_FCRYPT
-DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -DPERL_MSVCRT_
READFIX -s -O2 -DVERSION=\"1.817\" -DXS_VERSION=\"1.817\" "-IC:\strawberry
\perl\lib\CORE" -D_NOT_CORE -DmDB_Prefix_t=size_t -DmDB_Hash_t=u_int32_t versi
on.c

-L オプションが見当たらないけど、なんで?
-IC:\strawberry\perl\lib\CORE" って正しいのかな?lib のディレクトリを -I で指定してるけど。
  lib ディレクトリにヘッダファイルが入ってるの??
-ldb が無い、って言ってるんだから、ほんとうに無いのか、あるのか、自分の目で確かめたかな?
-ldb と省略せずに、\hoge\hage\libdb.l みたいにフルパスで指定してみてはどうか?


522 名前:デフォルトの名無しさん [2008/11/20(木) 20:16:22 ]
require 'ファイル名';
とするときに、1つ前のディレクトリにあるファイルを指定したいのですが、どうすればいいでしょうか?
require '../ファイル名';
だとエラーがでてしまい、できません。

523 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 21:40:27 ]
>>522
1つ前の前に現在地がどこかを考えるんだ
../ や ~/ はシェルの機能なんだ


524 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 02:09:21 ]
>>522
スクリプト保存場所と実行場所が同じならそれで動く。
(多分このケースだろうけど)違って場所固定ならスクリプトに
use FindBin;
require "$FindBin::Bin/../hoge.pl" ;
但し、FindBin はケースによってスクリプト保存場所を
示さない場合があるので、そんな場合には FindBin::Real
だか CPAN から引っ張って来て使う。

(蛇足)スクリプト内でカレントディレクトリに動的変化があり、
require する対象も連動変化があるなら、
use Cwd ;
しといて
require getcwd . q{/../hoge.pl}しなきゃならん。

525 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 02:16:40 ]
あ。説明一行目正確じゃねえな。
「保存場所に関係無く、実行場所の ../ にあるならそれで動く。」
に訂正。

526 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 03:33:20 ]
まぁたいてい、マウスでクリックして動作させるだろうから
カレントディレクトリをスクリプトのあるディレクトリに移動させておく、とか
そういう処理が必要だろうな。

527 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 06:37:05 ]
>>522 エラーメッセージは?




528 名前:506 [2008/11/21(金) 13:19:05 ]
>>521さん
返信ありがとうございます。
libdb.a
というのは前述したURLに書いてある通りに作成しました。
-Lオプションに関してはわかりません…。
確認したところ
\strawberry\perl\lib\CORE
にヘッダファイルがたくさん入ってました。
-ldbに関しては検索しているのですが、どうしてもわからないんですよね。
やはりWindowsでperl環境は無茶があるのでしょうか。

529 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 17:18:30 ]
>>528
なんか>>506のエラーは
エラー情報(version.cないよ、コンパイルエラーみたいな)っていうのは、
そのページの「CPAN で DB_File をインストール → 必ず失敗する。」のところだから
そのまま次の「config.in を修正して DB_File を手動で dmake してインストール」
にいけばいいんじゃないの? そこでLIBパス設定してるし

530 名前:506 [2008/11/22(土) 01:11:58 ]
>>529さん
返信ありがとうございます。
修正して、dmakeしたところ
C:C:\strawberry\cpan\build\DB_File-1.817-aAwZC0>dmake
dlltool --def DB_File.def --output-exp dll.exp
g++ -o blib\arch\auto\DB_File\DB_File.dll -Wl,--base-file -Wl,dll.base -mdll -s
-L"C:\strawberry\perl\lib\CORE" -L"C:\strawberry\c\lib" version.o DB_File.o -Wl,
--image-base,0x2d2e0000 C:\strawberry\perl\lib\CORE\libperl510.a \strawberry\c\
lib\libmsvcrt.a \strawberry\c\lib\libmoldname.a \strawberry\c\lib\libkernel32.a
\strawberry\c\lib\libuser32.a \strawberry\c\lib\libgdi32.a \strawberry\c\lib\lib
winspool.a \strawberry\c\lib\libcomdlg32.a \strawberry\c\lib\libadvapi32.a \stra
wberry\c\lib\libshell32.a \strawberry\c\lib\libole32.a \strawberry\c\lib\libolea
ut32.a \strawberry\c\lib\libnetapi32.a \strawberry\c\lib\libuuid.a \strawberry\c
\lib\libws2_32.a \strawberry\c\lib\libmpr.a \strawberry\c\lib\libwinmm.a \strawb
erry\c\lib\libversion.a \strawberry\c\lib\libodbc32.a \strawberry\c\lib\libodbcc
p32.a dll.exp
version.o:version.c:(.text+0x7a): undefined reference to `db_version'
DB_File.o:DB_File.c:(.text+0x10d5): undefined reference to `db_create'
collect2: ld returned 1 exit status
dmake: Error code 129, while making 'blib\arch\auto\DB_File\DB_File.dll'
となりました…。
blib\arch\auto\DB_File\
には.existsファイルしかありませんでした。



531 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 21:00:21 ]
>>530
libdb.a はちゃんと C:\strawberry\c\lib\ にあるのかい?ってのと
↑には libdb.a という文字が登場しないなってのがあやしいかと。

532 名前:デフォルトの名無しさん [2008/11/22(土) 22:41:13 ]
さくらインターネットの環境のせいかどうかわからないのですが、LWP::UserAgent mirrprの挙動がおかしいってことはありますか?
mirror呼ぶと$tmpfile作るみたいなのだけど、そのstatのrdeb, size, blocksが0になって以下のエラーがでます。
Transfer truncated: only 0 out of 9446 bytes received

何かわかれば教えてもらえますか?

LWP::UserAgent 5.819
FreeBSD 6.1-RELEASE-p23
This is perl, v5.8.8 built for i386-freebsd-64int

533 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 23:43:51 ]
x64のppmリポジトリってまだないのね。
リポジトリ追加してもパッケージ数が0で何かと思ったらそういうことか…。

534 名前:506 [2008/11/23(日) 01:56:00 ]
>>531さん
解決しました!
531さんに指摘されて、libdb.aという文字が出ないのかを考えたところ、
ファイル名だけ変えていて、拡張子が変わっていませんでした。
要はlibdb.a.libというファイルでした。
なので拡張子変換ソフトを使ったところ上手くいきました!
本当ありがとうございます!

535 名前:デフォルトの名無しさん mailto:sage [2008/11/24(月) 01:41:41 ]
ちょっと前に、WWW::Mechanizeを1.34から1.50にupしたんですが、この1.50の挙動についての質問です。

1.50になってから、$mech->get('example.com/')なんかでgetsしてきたページの内容を
$mech->content()で書き出すと、utf8フラグ付の文字列に自動でdecodeされたものが出力されます。
($mech->response->contentでは、そのまま変換なしで返ってきます。)
さらにこの状態で、$mech->find_linksやfind_images,$mech->form->inputsなどの戻り値オブジェクトから
$_->textや$_->valueなども、utf8_decodeされたものが返ってくるようになりました。

これはこれで、戻り値を正規表現等で検知するのに便利になった部分もあるのですが、
今少しばかり困ったことになっております。

実は、とあるサイトをクロールしていて、そのページ自体はsjisで書いてあるのですが、
ページのheaderに、<meta http-equiv="content-type" content="EUC-JP">とかの記述があって、
どうもこの記述を鵜呑みにして、元の文字列をEUC-JPとしてdecodeをしてしまって、化けバケになりました。

536 名前:535 mailto:sage [2008/11/24(月) 01:42:13 ]
そこで、$mech->get()した時に、自動でutf8デコードさせないようなオプションやメソッドを
探したんですが、それが見当たりません。

ドキュメントやソースファイルを読んでみて、Mechanize.pm内部で、$content = $res->decoded_content()
が呼ばれているようで、それではとHTTP::MessageやHTTP::Headerにある、Encodingヘッダーやcontent_encoding
あたりで制御するのかなと色々やって見ましたが、やっぱりutf8デコードされてしまいます。
(と言うか、イマイチこれらの使い方が合ってるのかよくわかりません。)

どなたかこれらの制御方法をご存知の方はおりませんか?

現在のところ、WWW::Mechanizeを1.34以下に戻すか、実行スクリプトの中で
*HTTP::Message::decoded_content = sub { shift->content };
と書く、などで回避しておりますが、もっとスマートな方法がないのかなと思っております。

537 名前:デフォルトの名無しさん mailto:sage [2008/11/24(月) 17:23:57 ]
Perl 5.8.6なんですが
sysopen(TPL, $file, O_RDONLY)
のとこで
Argument "O_RDONLY" isn't numeric in sysopen
というerrorを毎回吐きます。

動作は見たところ正常ですが、Apacheのerror_logにたまるのが気持ち悪くて…。
どこのサンプルにもマニュアルにも上の通りにかいてありますが、
O_RDONLYじゃいかんのですか?

538 名前:デフォルトの名無しさん mailto:sage [2008/11/24(月) 17:33:00 ]
O_RDONLY が定義されてないからじゃないの?
>どこのサンプルにもマニュアルにも上の通りにかいてありますが、
いったい、どこのサンプルやマニュアルを見たんだい?

おぢさんがひとつ、いいことを教えよう。
google 「perl O_RDONLY」
パソコンを買ったら、まず最初に google を覚えよう。

539 名前:537 mailto:sage [2008/11/24(月) 19:46:17 ]
レスありがたふ
そのキーワードで何度もぐぐったんですが
ttp://perldoc.jp/docs/modules/CGI-Session-3.11/Tutorial.pod
ttp://perldoc.jp/docs/perl/5.8.4/perlfunc.pod
こんなんや、他の個人ブログやチュートリアルサイトでも
sysopen(HANDLE, path, O_RDONLY); の例が出てくるんですよね

540 名前:537 mailto:sage [2008/11/24(月) 19:49:25 ]
自己解決しました
改めてよく読んだらperldoc.jpに「標準モジュール Fcntl 経由で」って書いてありましたね
use Fcntlで解決しました
>>537 ありがとうございました



541 名前:デフォルトの名無しさん [2008/11/24(月) 21:43:42 ]
3×3のクロスワードを作ろうと思います。
3文字の辞書ファイルは既にあって
3×3の真ん中には「か」という文字列が入っています。
このとき、3×3のクロスワードを作成するにはどうすればよいでしょうか。



542 名前:デフォルトの名無しさん mailto:sage [2008/11/24(月) 21:55:33 ]
ここって宿題の依頼もありだっけ?


543 名前:デフォルトの名無しさん mailto:sage [2008/11/24(月) 21:57:31 ]
Perlにカスってもいねえし

544 名前:デフォルトの名無しさん mailto:sage [2008/11/24(月) 22:06:30 ]
ゆとりは宿題はやってもらうものと考えてるからな。

545 名前:デフォルトの名無しさん mailto:sage [2008/11/24(月) 23:26:48 ]
学業も仕事も他人に任せてゆとりの時間を楽しむのがゆとりの正しい姿
宿題をやる仕事を貧しい人達から奪うほど情が無いわけではありません

546 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 00:33:23 ]
やってくれって言ってないじゃん!

547 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 01:34:49 ]
メール鯖からパイプで渡された標準入力を
上手い事いじらせてくれるモジュールってあったっけ?
Net::POP3〜MIME::Parserなら分かるんだが
標準入力しか触れないの扱わんとならんorz
テキストをチマチマと拾ってくしかないのか・・・?

548 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 02:15:47 ]
日本語でおk

549 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 05:36:06 ]
>>535
WWW::Mechanizeはよく知らないんだけど
$res->decoded_content(charset => 'none');
この辺りヒントになるかも

550 名前:532 [2008/11/25(火) 13:39:13 ]
mirrorじゃなくてそもそもrequest($url, $file)で$fileに取得できてないってことに気づいた。
おかげでCPANコマンドでも
Transfer truncated: only 0 out of 149396 bytes received
が出て死んでしまう。
ググっても他に同じような人出てこないし何いじってこうなったんだろう。。



551 名前:535 mailto:sage [2008/11/25(火) 13:39:41 ]
>>549
レスありがとうございます。
確かに、LWP::UserAgentからは、$res->decoded_content(charset=>'none')で
decodeされないcontentsが返って来るのを確認しました。

しかしながら、Mechanize.pm内では、このdecoded_contentに引数を渡す方法がなく、
またソース内のコメントに、
"Do we need to expose the options there?"
みたいなことが書いてありますので、現状では必ずdecoded_content()が呼ばれてしまうみたいです。

そのため、リクエストのレスポンスヘッダやページ内の<meta>タグに、charset指定がある場合は、
それに従った Encode::decode($charset,$html) が返って来ます。
(このdecodeがコケた場合は、変換なしの元々のbyte文字列が返ってきます)

code.google.com/p/www-mechanize/issues/list に要望でも出したら対応してくるのかな。

552 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 14:22:15 ]
ヘッダの情報に合わせて自分で変換してしまう






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

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

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