[表示 : 全て 最新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/


357 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 12:08:14 ]
forもforeachも一緒じゃないの?ただのシンタックスシュガーかと思ってたけど

358 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 12:17:35 ]
>>357 それを前提として書いたつもり。

a) for my $n (0..9) {}
b) foreach (my $n=0; $n<10; $n++) {}

a は許容できるが、b は嫌かなってこと。






359 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 12:21:56 ]
for しか使わね。それと、C type の for は使わね。

360 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 12:29:16 ]
俺も同じくforのみ

361 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 13:32:56 ]
どうでもいい。
んで、暗黙のループカウンタなんてあったら言語仕様としてきもい

362 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 15:39:58 ]
C言語の const 変数の様なのは定義できないでしょうか? perl 5.8です。

363 名前:356 mailto:sage [2008/06/06(金) 16:14:23 ]
んー、やっぱforだけとかの人のほうが多いのね。
まさにPerlスタイル。

>362
use constantとかはー?


364 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 17:02:47 ]
use Readonly ;
>>361
$. は?w


365 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 17:07:46 ]
つまりキモイってことですよPerlはw



366 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 17:19:32 ]
柔軟な頭を持ってない奴が負け惜しみを言ってますw

367 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 17:23:44 ]
ゴミを美味いと思う自分の狂った味覚を「柔軟さ」と主張する人生ですかw

368 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 17:31:57 ]
君がゴミだと思って捨てていた部分は実は高値で取引される珍味でした。


369 名前:デフォルトの名無しさん [2008/06/06(金) 17:56:23 ]
>>362
Cライクにやりたいなら
use constant NAME => 'hoge';

ただし Perlでベアワードはメンドくさい。
"my name is NAME"
とやっても展開されないから
"my name is ".NAME
とするしかない。

*NAME = \'hone';
これを使えば
"my name is $NAME"
で展開できる。

*C_STR = \'xxxx'; # 文字列定数。参照は $C_STR
*C_NUM = \100; # 数値定数。参照は $C_NUM
*C_ARRY = [1,2,3]; # 配列定数。参照は @C_ARRY
*C_ASSOC = {k1 => v1,k2 => v2}; # ハッシュ定数。参照は %C_ASSOC

370 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 18:04:39 ]
>>368
まぁ、珍の字はニュアンスぴったりだと思うよ。
Perlの仕様を漢字一字で表せといったら、珍・奇・醜・糞あたりが有力だろうし。

371 名前:デフォルトの名無しさん [2008/06/06(金) 18:44:43 ]
forは数値カウンタのときやCライクな使い方のとき。
配列から読み取るってときはforeachにしてるな。こっちはPHPぽい方で

372 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 18:45:22 ]
>>370
あれ?なんでわざわざこのスレに?

373 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 18:50:29 ]
・上にあがってるから
・Perlを盲目的に全肯定するキチガイだけが住人ではないから

374 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 19:03:32 ]
誰も全肯定なんてしとらんがな・・・

375 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 19:41:58 ]
それを言ったら、誰も負け惜しみなんて言ってないよな。



376 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:34:35 ]
>>373
ゲテモノだってのは認識しとる。

377 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 21:41:28 ]
>>352
レスありがとうございます。
substを使ってうまくいきました。
ありがとうございました。

378 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 22:15:29 BE:477576296-DIA(100004)]
まず匿名の臆病者は自分の (好きな|メインの) Lightweight Language を言えよ

379 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 22:52:56 ]
BER圧縮された数値(オフセット値、ID)のビット列に対し、
二分探索法を行なっている実装例ってありませんかね?

380 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 01:02:59 ]
そういうのはCでやった方が

381 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:17:18 ]
>>378
できるよ。
以上。
↓次どうぞ

382 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 00:21:35 ]
↑おつかれさまでした

383 名前:デフォルトの名無しさん [2008/06/08(日) 19:02:55 ]
他のファイルに変数を設定したファイルを用意し、
そのファイルを読み込み設定された変数を利用したいのですが、
どのようにすれば実現できますか?

384 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:05:01 ]
そのようにすれば

385 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:13:01 ]
そういうふうにプログラムすりゃいいでしょ



386 名前:383 mailto:sage [2008/06/08(日) 19:14:47 ]
すみません。
サンプルコードなど頂けませんでしょうか?

387 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:16:05 ]
do "configs";

388 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:17:30 ]
D'OH !

389 名前:383 mailto:sage [2008/06/08(日) 19:19:09 ]
reqireでできました。

阿呆しか答えてくれないので、聞く手間をかけずに調べれば良かったですね。

390 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:26:32 ]
reqireなんてあったか?

391 名前:383 mailto:sage [2008/06/08(日) 19:26:33 ]
>>389は私ではありません。
requireも試してみたのですが、変数の値が継承されないようで
うまくできませんでした。

>>387
ありがとうございます。
試してみたのですが、requireと同じように変数の値が継承されません。
doと言うものを調べたのですが、while文のdoしかなかなか見付からず
使い方が悪いのかも知れません。
すみませんが詳しく教えて頂けるとありがたいです。


392 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:28:41 ]
まず自分で調べる手間をかけずにいきなり聞くという方法で何か学ぼうとするのもなんだかなあ…。
何かを知ろう学ぼうとするなら知る学ぶ為の正しい手段を取るべきだと思うけどなあ…。

393 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:42:06 ]
>>391
perlfunc嫁

394 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:49:07 ]
何ができないと言っているのかがわからない

395 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:59:13 ]
1行ずつ読み込んでdoじゃだめなわけ?



396 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 20:18:32 ]
doはファイル名を引数に取るわけだが

397 名前:デフォルトの名無しさん [2008/06/08(日) 22:03:27 ]
open FILE, "unko.pl";
read FILE, my $unko, -s FILE;
close FILE;
eval $unko;

398 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:04:06 ]
それならdoでいいだろ。

399 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:32:17 ]
関係ないけど do-dai っていい曲だよね

400 名前:デフォルトの名無しさん [2008/06/09(月) 01:10:43 ]
WinXP、perl5.8.8、でPerl/Tkからボタンを押した時にthreadsを使ってバックグラウンド処理をしようと考えています。
バックグラウンド処理そのものは最後まで実行されますが、終了同期を取ろうとjoinを呼び出した時に、クラッシュして更に、Free from wrong pool during global…
となります。

これを回避出来た猛者はいますか?



401 名前:有吉 ◆01z1p9gzeo mailto:sage [2008/06/09(月) 01:43:25 ]
子プロセスから親プロセスのTkウィジェットにアクセスするとactiveperlが落ちてしまいます。
$top = MainWindow->new();
$frame1=$top->Frame(-height=>25)->pack(-side=>top,-fill=>'x',-expand=>'no');
$listbox1 = $frame1->Scrolled('Listbox',-scrollbars=>'osoe')->pack(-fill=>'both',-expand=>'yes');
$listbox1_ref = \$listbox1;
if ($pid = fork()) { MainLoop; }
else { &refresh($listbox1_ref); }
sub refresh {
my $listbox1_ref = shift;
$$listbox1_ref->delete(0,'end');
opendir(DIR,'mail/');
@file = sort readdir(DIR);
@file = grep(!/^\.\.|^\./,@file);
foreach(@file) {
my $time = localtime((stat "mail/$_")[9]);
$$listbox1_ref->insert('end',$time);
}
}
ログには
Free to wrong pool 1ec5020 not 274dc8 at C:/Perl/site/lib/Tk.pm line 250.
と出て終わってるようです。refreshの処理中に落ちてるみたいです。
ググったところ、同じ症状の方もいるようですがこの場合の解決策が見つかりませんでした。
子プロセスから親プロセスのウィジェットにはアクセスできないのでしょうか?ご教授ください。OSはWinXP SP2です。

402 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 01:44:44 ]
改行が多すぎると怒られたので
色々はしょったら読みづらくなりました。
大変申し訳ないです。。

403 名前:デフォルトの名無しさん [2008/06/09(月) 11:00:13 ]
>>398
キミ、シロウトだね。

404 名前: ̄ ̄ ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ mailto:sage [2008/06/09(月) 11:09:09 ]
        ,. -ー冖'⌒'ー-、
       ,ノ         \
       / ,r‐へへく⌒'¬、  ヽ
       {ノ へ.._、 ,,/~`  〉  }    ,r=-、
      /ク ̄`y'¨Y´ ̄ヽ―}j=く    /,ミ=/
    ノ /ル'>-〈_ュ`ー‐'  リ,イ}    〃 /
   / _勺 ミ;;∵r;==、、∴'∵; シ    〃 /
  ,/ └' ノ \   こ¨`    ノ{ー--、〃__/
  人__/ー┬ 个-、__,,.. ‐'´ 〃`ァーァー\
. /   |/ |::::::|、       〃 /:::::/    ヽ
/   |   |::::::|\、_________/'   /:::::/〃

405 名前:383 mailto:sage [2008/06/09(月) 11:24:22 ]
すみません。私の書き込みが悪いとおもうので、再度書き込ませていただきます。

-- define.pl ------
my $hoge = "hoge";

-- body.pl ------
do "define.pl";
print $hoge;

というファイルがあったとしても、body.plでdefine.plの変数が使えません。
どのようにすれば、他のファイルの変数を使えるようになりますか?



406 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 11:33:56 ]
myしてやがる……

407 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 11:39:48 ]
>>405
なんというオチ

408 名前:デフォルトの名無しさん [2008/06/09(月) 12:31:41 ]
いぢわるしねいで、ちゃんと教えてやれよ。
my じゃなく、 our で宣言しろって事だよ。

409 名前:383 mailto:sage [2008/06/09(月) 13:03:46 ]
そんなのがあったのですね・・。
簡単に本を読んだのですが、myとlocalがあってmyを普通使う。localはあまり使わない。
という説明でした・・。

リャマ本というのを簡単に確認したのですが。ourって載ってます?
見つけられなかったのですが。

410 名前:383 mailto:sage [2008/06/09(月) 13:04:12 ]
お礼を言い忘れました。

お手数をおかけしてすみませんでした。
ありがとうございました。

411 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 13:22:51 ]
最初から405かいときゃ無駄なレスしなくていいのに
jこれだから小出しするやつはうぜぇ

412 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 13:38:55 ]
>>409
アルパカ本に載ってる。

413 名前:273 mailto:sage [2008/06/09(月) 13:41:12 ]
>>273

自己レス
いろいろと遠回りしたけど、ReadKey.pm入れ直しで
スンナリ解決しました。

ハァ・・・、なんですぐにやらなかったのか。
自己嫌悪だわ。
何時間費やしとんねん!


414 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 13:43:11 ]
>>410
こんな感じ↓
ttp://blog.livedoor.jp/dankogai/archives/50982802.html

415 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 13:46:16 ]
思うんだけど,この業界の人って,自分で調べたことに対して疑問を抱いた!みたいな
感じでブログとかに書いておくと,すげえ補足を書いてくれたりするよね。

俺はそういうところが好きだ。



416 名前:デフォルトの名無しさん [2008/06/09(月) 13:48:00 ]
質問です。Perlでクラスを使ってみたいのですが
どのように書けばいいのでしょうか?
知らない用語ばかり出てきて、さっぱり答えにたどり着きません。。

例としてPHP版で書きます。これと同等の機能をPerlで書いてください。
お願いします。

class Hoge {
 private $var1 = 'A';

 function var1() {
  return $this->var1;
 }

 function getValue() {
  return 1;
 }
}

class Hage extends Hoge {
 function getValue() {
  return 2;
 }
}

$hogehoge = new Hoge();
print $hogehoge->getValue();
$hagehage = new Hage();
print $hagehage->getValue();


417 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 14:10:53 ]
#!/usr/bin/perl
use strict;
use warnings;
{   package Hoge;
    sub new {
        my $class = shift;
        my $self = {var1 => "A"};
        bless $self, $class;
        return $self;
    }
    sub var1 {
        my $self = shift;
        return $self->{var1};
    }
    sub getValue {
        my $self = shift;
        return 1;
    }
}
{   package Hage;
    use base qw(Hoge);
    sub getValue {
        my $self = shift;
        return 2;
    }
}
my $hogehoge = Hoge->new();
print $hogehoge->getValue(), "\n";
my $hagehage = Hage->new();
print $hagehage->getValue(), "\n";

418 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 14:41:00 ]
>>416
一度perltootをキチンと読んでみては?
和訳↓
ttp://perldoc.jp/docs/perl/5.10.0/perltoot.pod

419 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 15:35:06 ]
./にローカルインストールしたモジュールを使うことができません。
使おうとしているものはCurses.pm
search.cpan.org/src/WPS/Curses-1.06/Curses.pm
です。もしよろしければご教授ください。

$ ls
Curses.pm* test.pl*
$ cat test.pl
#!perl
unshift @INC, ".";
use Curses;
exit;
$ perl -w test.pl
Can't locate loadable object for module Curses in @INC (@INC contains: 略 .) at test.pl line 4
Compilation failed in require at test.pl line 4.
BEGIN failed--compilation aborted at test.pl line 4.
$



420 名前:デフォルトの名無しさん [2008/06/09(月) 15:48:35 ]
use lib '.';

421 名前:デフォルトの名無しさん [2008/06/09(月) 15:54:07 ]
ba5.txtには以下になってます。
4131048
4131053
x
x
4850328
x
x
x
x
3870357
3870369
x
x
4131038
4131045
x
x
x
この場合にxの行を一番最後の行の数値に置き換えたい場合
perlだとどのようにすればいいんでしょうか。
シェルでやろうとしたんですけどシェルだとちょっと難しいみたいなので
perlでやりたいと思ってます。誰かいいスクリプトを教えて下さい。
宜しくお願いします。

422 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 16:07:39 ]
>>420
use lib '.'やuse lib qw(.)を試してはいるんですが、>>419と同じエラーが出てしまいます。
また、use Curses;をuse ::Curses;として実行すると、>>419のCompilation failed in require at test.pl line 4.が消え、
Can't locate loadable object for module CursesもCan't locate /Curses.pmと表記が変わります。

423 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 16:51:43 ]
>>419
本当にCurcesモジュールをインストールしたのか?
Curses.pmをコピーしただけじゃないのか?




424 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 16:52:54 ]
>>417
ありがとうございます。

継承するときは、
use base qw(Hoge);
なんて書くんですね。

sub newってなんなんでしょう?
なんでそんな関数が必要なのですか?

425 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 16:55:17 ]
>>423
>コピーしただけ
はい。アクセス権の関係でインストールが出来ないので、
test.plと同じディレクトリにCurses.pmを配置し利用したいと思っています。



426 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 16:59:36 ]
>>425
だから、Cursesモジュールは、C言語で書かれたバイナリがメインで、
Curses.pmはそのインターフェイスでしかない。
ちゃんとコンパイルしてインストールしないとだめ。
エラーメッセージにある "loadable object" っていうのがそれ。

アクセス権の関係ってどういうこと? インストール過程で、
インストール先を指定できるぞ。
コンパイラも使えないのか?


427 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 17:00:37 ]
>>424
コンストラクタ

不精しないできちんとperltootを読め。
>>418

428 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 17:03:00 ]
>>421
聊かエスパーぎみにレス。↓こういう事がしたいのか?
$ perl -pe '$_=$t if/^x/; $t=$_' ba5.txt
4131048
4131053
4131053
4131053
4850328
4850328
4850328
4850328
4850328
3870357
3870369
3870369
3870369
4131038
4131045
4131045
4131045
4131045


429 名前:421 [2008/06/09(月) 17:16:09 ]
>>428さん
そのとおりです!
ありがとうございます!

430 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 17:17:17 ]
>>426
ありがとうございます。何か大きな勘違いをしていたようです。
Cの方でcurses/ncursesを使っていたので、システム上にcurses環境があると救いようの無いいい加減な誤認があり、
また、@INCサーチパス上にCurses.pmを置くことが出来ないのでアクセス権という的外れも甚だしい話をしてしまいました。
現在make中です。今のところエラーは吐いていません。

wget search.cpan.org/CPAN/authors/id/G/GI/GIRAFFED/Curses-1.23.tgz
tar xvf Curses-1.23.tgz
cd Curses-1.23
#Makefileの生成
perl Makefile.PL GEN PANELS MENUS FORMS
#コンパイル
make

431 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 17:28:19 ]
>>427
コンストラクタなんですか?

普通、コンストラクタは必要がある場合を除いて
書かないと思うのですが?

書かないとまずいですか?

432 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:16:16 ]
釣れますか?

433 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:24:44 ]
>>427
初心者には perltoot を読むのを薦めるよりも
perlboot を読むのを薦めた方が良いと思うよ
なんとなく読む気が無さそうな気配ではあるけども
5.8 なら以前どこかで perlboot の邦訳も見掛けたた気がするけど

434 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 19:43:23 ]
>>428
すげー。そういう意味だったのか。
そこまで読めなかったよ。

435 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 01:30:01 ]
5.005の頃、よくXS書いてたんだけど
その後、Perlはワンライナーでしか使わなくなってしまった。
その頃のXSの知識ってまだ使えるのかな。



436 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 03:06:37 ]
oshiete1.goo.ne.jp/qa4087225.html

437 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 04:02:57 ]
おや、なんだかどこかで見たような……。

438 名前:デフォルトの名無しさん [2008/06/10(火) 11:24:14 ]
マルチ死ねよwwwwwwwwww

439 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 12:02:49 ]
HTML::FillInForm を使用しているのですが、出力されるhtmlから
DOCTYPE 宣言が消えてしまいます。
対処法がありましたら教えて下さい。


440 名前:439 mailto:sage [2008/06/10(火) 13:58:23 ]
ここ(↓)を参考にして自己解決しました。
www.geocities.co.jp/SiliconValley-Sunnyvale/6128/perl/htmlpaser.html

use HTML::FillInForm;
use base qw(HTML::FillInForm);

sub comment {
my($self, $text) = @_;
$self->{output} .= "<!--$text-->";
}

sub declation {
my($self, $text) = @_;
$self->{output} .= "<!$text>";
}

441 名前:439 mailto:sage [2008/06/10(火) 14:05:33 ]
>>440
× sub declation {
○ sub declaration {

442 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:39:31 ]
ロード済みのサブルーチンと同じpackageかつ同じ名前のサブルーチンを含む外部plファイルを
requireすると、後の内容で上書きされてしまいますが、元のサブルーチンを壊さないですむ
方法はないでしょうか。

443 名前:デフォルトの名無しさん [2008/06/11(水) 18:07:18 ]

皆さん、エスパーでよろ。

意図した挙動にならず、どこが問題かのきっかけも掴めずにかなり時間をかけてしまったが、
ようやくやりたいこと出来た。が、どうにも腑に落ちない。
DB(mysql)からデータとってきて、Scraperに渡して・・・と、こんな感じで組んでいたんだけど、

レコード数は3とします。


パターン1------------------------------------

$rows = $sth->rows;
print "hajimari";

while(my $ref=$sth->fetchrow_hashref()){
$scraper->scrape($ref->{url});
print "roop dayo";
}

print "owari";

このような感じでやっていたんだが、ループが1回しか回らない!?なんで?
てなことで、webで情報あさったり、モジュールのソース眺めてもわからんし。



444 名前:デフォルトの名無しさん [2008/06/11(水) 18:07:56 ]

パターン2------------------------------------

$rows = $sth->rows;
print "hajimari";

while(my $ref=$sth->fetchrow_hashref()){
print "roop dayo";
}

print "owari";

と、Scraperになげなかったら、ちゃんと3回ループするんだよね。
でScraperでこけてんのかと思いきや、これも特に見当たんない。
問題なさそうだ・・・。


445 名前:デフォルトの名無しさん [2008/06/11(水) 18:08:25 ]

パターン3------------------------------------

$rows = $sth->rows;
print "hajimari";
$i = 0;

while(my $ref=$sth->fetchrow_hashref()){
$url[$z] = $ref->{url};
$i++;
}

for($z = 0;$z < $rows;$z++){
$scraper->scrape($url[$z]);
}

print "owari";

ちょいと思うところがあり、一旦配列にほりこんでみる・・・。
キター!!!3回まわったじゃんか!


ふむ、思うところというのは、Scraperでこけないでループ1週目は
ちゃんとループしているということ。
で、結局ちゃんとした原因が解ってないんだけど、メモリ制限とか
あるのかな?

アドバイス下さい。
(もしかしたら、CGIまわりの問題?)
OS:FreeBSD
Perl:5.8.3



446 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:44:14 ]
デバッグしろよ

447 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:47:02 ]
またきたのか

448 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:48:59 ]
Dump吐いてみたら?

449 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:52:18 ]
内部状態をインスペクトしたら

450 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:56:50 ]
printf だ! printf を挟め!

451 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:59:07 ]
if(!$hoge->{'hoged'}){
    $hoge->{'hoged'} = [];
}

push(@{$hoge->{'hoged'}}, $hoging);

これをスマートに書く方法ありませんか?
ちなみに$hogingは2箇所以上に書くなら一時変数必要です。

452 名前:デフォルトの名無しさん [2008/06/11(水) 19:04:06 ]
少し説明がヘタだとは思いますが以下の処理をしたいです。お願いします。
★処理の方法
行の先頭が [ の場合には、行の先頭が 20 の行の先頭にそれを加える
行の先頭が 空白の場合には一旦処理を終えて再度行の先頭の [ を読む
行の先頭に < がきた場合にはその処理を終えて再度行の先頭の [ を読む
結合した場合、その文字列の最後に必ず区切り文字としてタブを挟む
●処理前のabc.txt
<100100>
[1044]あいうえお
20321 1137 4850328 60
20321 1137 4850328 60
20321 1137 4850328 60
   【合計1044】
[1047]かきくけこ
20319 1090 3870357
20319 1101 3870369
   【合計1047】
[1051]さしすせそ
20328 1206 4131038 52
20328 1206 4131045 52
20328 1206 4131045 52
    【合計1047】    
    【累計】
<100200>
[1057]たちつてと
20328 1206 4131045 52
20328 1206 4131045 52 

453 名前:デフォルトの名無しさん [2008/06/11(水) 19:04:54 ]
●処理後のabc.txt
<100100>
[1044]あいうえお 20321 1137 4850328 60
[1044]あいうえお 20321 1137 4850328 60
[1044]あいうえお 20321 1137 4850328 60
   【合計1044】
[1047]かきくけこ 20319 1090 3870357
[1047]かきくけこ 20319 1101 3870369
   【合計1047】
[1051]さしすせそ 20328 1206 4131038 52
[1051]さしすせそ 20328 1206 4131045 52
[1051]さしすせそ 20328 1206 4131045 52
    【合計1047】    
    【累計】
<100200>
[1057]たちつてと 20328 1206 4131045 52
[1057]たちつてと 20328 1206 4131045 52

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

454 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:15:23 ]
>>452
宿題を肩代わりするスレじゃないんだけど。
少しはperl文を書いてから出なおせ。

455 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:33:31 ]
たしかに最近どうみても入門者向けの課題を回答させようとする連中が多いような?




456 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:39:49 ]
>>451
push(@{$hoge->{'hoged'}}, $hoging);


457 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:55:00 ]
宿題を人に頼む奴は大学やめればいい

学部生いわく。






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

前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