トップページ⇒tech
1001コメント317KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/08/13(月) 18:01:53
Perlについての質問箱 32箱目
0159デフォルトの名無しさん2007/08/20(月) 14:20:15
>>157
えーなにおまえ。
社長からメールくるとき
いっつもそんな文面なの?
0160デフォルトの名無しさん2007/08/20(月) 14:32:03
試験の問題文ぐらいでしか、日本語文に接して来なかったんじゃないだろうか。
>よく読んで
0161デフォルトの名無しさん2007/08/20(月) 15:52:23
>>158
やさしい事だねぇ。
質問(>>147=152)で別の質問(>>23,28,50,前スレ最後)を思い出しさなかった?
ボロクソ言うにしろ、Webprog板のスレ 741-747程度言って通じるかどうかって相手だろ、これ。
0162デフォルトの名無しさん2007/08/20(月) 16:18:27
いや、単にあの配色コードを貼り付けたかったネタだろ?
0163デフォルトの名無しさん2007/08/20(月) 17:07:45
PerlMagick ttp://www.ss.iij4u.or.jp/~somali/web/_perlmagick_ref.html を使っています。

(1)
1つの画像ファイルから、形式やサイズ、フィルタのかけ方が異なる複数のファイルを出力したいと考えています。
この場合、Read() 〜 編集 〜 Write() のセットを、出力したい回数だけ繰り返すしか方法は無いでしょうか?
他はともかく、Read()あたりを省略する方法があってもおかしくなさそうなので。

(2)
JPEG画像を生成しようとしてます。
特定のファイルサイズ以内に収まるように生成したいのですが、PerlMagick単体で可能なのかどうか怪しいところです。
これを解決する方法、サイズ予測モジュールなどがあればお願いします。
01641262007/08/20(月) 17:10:06
>>148,150
真面目な回答ありがとうございます。助かります。
>>121のようなふざけた返答しかないから、困ってました。
しかしPerlはむずかしいですね。なかなかおぼえられません。
0165デフォルトの名無しさん2007/08/20(月) 17:16:57
ふざけてるのは君の方だ
0166デフォルトの名無しさん2007/08/20(月) 17:57:48
>>163
(1) 任意のタイミングで Clone 使うのが楽だと思う。
(2) 実際にファイルに書き出して、サイズが大きければ品質落としてやりなおしでよくね?
0167デフォルトの名無しさん2007/08/20(月) 20:02:47
>>164
> しかしPerlはむずかしいですね。なかなかおぼえられません。

いや、簡単だよ。
01681632007/08/20(月) 21:50:54
>166
(1)
ありがとう。試してみる。

(2)
やっぱそれしか無いのかなー。
上限ギリギリまで画質を上げたいとか考えると、結構な時間的コストがかかりそう。
0169デフォルトの名無しさん2007/08/20(月) 22:25:15
http://mutoys.com/
の英語移植をやってるみたいだが、すでに何年も前に移植されてる。

http://manuke.com/static/view00000296.html
>ちなみに、私は本家 SOLD OUT の英語バージョンを仲間と作って公開したのだが、
>向こうの人たちはそんなに集まらなかった

だから、もうヤメロ。
ココに書き込むな。


開発者向けBBSを見ても、
http://mutoys.com/cgi-bin/bbs-so/ebbs.html
自己中のイタイ書き込みが多い。
0170デフォルトの名無しさん2007/08/21(火) 01:41:52
>>169
よくやった!
あなたをわが社の情報収集担当最高責任者に
任命する!
ストックオプションはどれだけ欲しいですか?
0171デフォルトの名無しさん2007/08/21(火) 06:08:17
>>147
については自己解決した。
カウントの数字は出ていたんだが、
前の文字列にくっついていたんで
見えなかっただけだった。
0172デフォルトの名無しさん2007/08/21(火) 06:57:15
あなたがたが
「忘れることのできない病気」
な人たちであることはわかっております
「おれ達の頭の中から出て行って欲しい」
と思っているでしょうが、出て行ってあげません。
一生あなたがたの頭の中に住み着くつもりですので
あきらめてください。
私を出て行かせる方法はありません。
0173デフォルトの名無しさん2007/08/21(火) 08:43:05
>>172 さん
偽者が出るかもしれないのでコテを付けた方が良いと思いますよ
0174デフォルトの名無しさん2007/08/21(火) 12:44:55
やあ低能社長さん
今日も粘着させて頂きますので
宜しくお願いしますね
0175デフォルトの名無しさん2007/08/21(火) 22:59:59
現在ローカルで動かしていたプログラムを実環境にて動作確認しています。
ローカルではエラーが出なかったのですが、
実環境ですと特定の条件下でエラーが出てしまいます。

以下のコードはエラーが出ないのですが、
my $output = spacesLineDelt($tmpl->output);
textOut($path, $output)
以下のコードだとエラーが出てしまいます。
textOut($path, spacesLineDelt($tmpl->output));

全く原因がわからないのですが、
どなたかお心当たりがある方教えていただけると幸いです。
なお、実環境のPerlのVerは5.00503で、
色々制限が掛かっているのですが詳細が分かりません。
0176デフォルトの名無しさん2007/08/21(火) 23:01:46
エラーメッセージくらい書いてくれよん
0177デフォルトの名無しさん2007/08/21(火) 23:14:58
「500 Internal Server Error と表示されます」は禁止で。
WebProg向きのような気がする。
01781752007/08/21(火) 23:16:02
デバッグ方法に難があり、どうやら上のコードは関係ないようでした。すみません;
エラーなんですが、telnetが繋げずfatalstobrowserを使っても
なぜかこのエラーだけサーバが500エラーを返してきて分かりませんでした;
01791752007/08/22(水) 03:23:37
2MBのメモリ制限に引っかかってエラーが出ているようでした。
お騒がせしました。
0180デフォルトの名無しさん2007/08/22(水) 13:49:38
Perlのオブジェクトプログラミングをぼちぼち勉強しているところなのですが、
継承されたクラスをどうやって扱ったらよいか迷っています。

今悩んでいるのは、複数のクラスを継承するクラスで生成したオブジェクトにおいて
呼び出したいメソッド名がクラス間で重複するとき、
クラスメソッドを呼び分けるにはどうすればよいかということです。

単純には呼び出したいクラスでメソッド名を完全修飾すればと考えたのですが、
重複メソッドが多いとこの方法で呼び分けるのはとてもわかりにくくなります。
それにメソッドの中にメソッド呼び出しがあるとまずいことになります。

そもそもメソッド名が重複するような継承はだめなのでしょうか。
ひとつご教授ください。
0181デフォルトの名無しさん2007/08/22(水) 14:12:58
> そもそもメソッド名が重複するような継承はだめなのでしょうか。

ダメとは言わんけど
「自分が何をやっているか」をきちんと把握できてないと破綻する
そういうことには上級者になるまで手を出さない方がいいんじゃないかと
0182デフォルトの名無しさん2007/08/22(水) 14:22:12
多重継承なんかつかわなければいいだろ。
0183デフォルトの名無しさん2007/08/22(水) 14:28:54
使わないと身に付きませんよ。
0184デフォルトの名無しさん2007/08/22(水) 14:58:59
perlでそんなめんどいことするなんてアホとしか
01851802007/08/22(水) 15:17:30
ひとつ思いつきました。
オブジェクトを目的メソッドの所属クラスにブレスし直して、
メソッド呼出し後、元のクラスに再々ブレスし直すというものです。
コードに書くとこんな感じなります。

$curr_class = ref $object;
bless $object, 'FarInheritClass';
$object->dup_method;
bless $object, $curr_class;

対症療法としてはこれでいいですが、普通は多重継承でメソッドが重なる場合
どういう対策をしているんでしょうか。
クラス別にハンドルを生成するメソッドを用意するとかですか?
一般的な手法が知りたいです。

多重継承そのものを否定している方もいらっしゃるようですが・・・
01861802007/08/22(水) 15:20:57
一応、>>180の単純化した例を用意しました。、
以下の例では、Aで生成したオブジェクトを使ってfというメソッドを呼び出していますが、
素の状態ではB、D、Cの順に探索するのでDのメソッドが呼び出されます。
C::で修飾してもfの中に内部メソッドの呼び出しがあるので、意図とは反して
Dの_pメソッドが呼び出されてしまいます。
これを正しく呼び分けられるようにしたいというのが質問の意図です。

package A; @ISA = qw(B C);

sub new { bless {} }

package B; @ISA = 'D';

package C; @ISA = 'D';

sub f { $_[0]->_p }
sub _p { print "I like C.n" }

package D;

sub f { $_[0]->_p }
sub _p { print "I like D.\n" }

###

package main;

$o = A->new();
$o->f; # I like D
$o->C::f; # I like D (not C)
0187デフォルトの名無しさん2007/08/22(水) 16:27:43
abc_abcdという文字列から
0文字目から3文字分(abc) 4文字目から4文字分(abcd)といった情報を先に作っていて
@position = (0,4);
@substr_len = (3,4);
以下のようにsubstrを使って取り出してsortしていたのですが遅いです。(substrの部分が)
なので
@text=(a,b,c,_,a,b,c,d)と@position と @substr_len を使って基数ソートのような方法でソートし、
(0,3,4,4)のように数値情報だけ得たいと思うのですがコードの書き方がわかりません。
どうすれば良いでしょうか、よろしくお願いします。

while($j < @position)
{
$p = $position[$j];
$len = $substr_len[$p]
$word = substr($text, $p, $len);
push @a_word, $word;
$j++;
}
@a_word = sort @a_word;
0188デフォルトの名無しさん2007/08/22(水) 17:19:14
>>187
で、結局何がしたいんだ?
アンダースコアで単語を切り分けてアルファベット順に並べ替えたいならアプローチが間違ってる。
0189デフォルトの名無しさん2007/08/22(水) 17:58:41
>>186
A を使うに際し A の内部で C が使われている事を
意識しなければいけない状態はカプセル化に失敗しているわけだけど、
それはいいの?

駱駝本や黒豹本だと無闇に継承(is-a)を使わず
合成(has-a、use-a)も考えるよう勧められてるよ。
0190デフォルトの名無しさん2007/08/22(水) 18:04:43
ダイアモンド継承で名前の重複なんて、思いっきり典型的な罠にはまりまくりな
パターンだな
別名つけるのがありがちだけど完璧で美しい対処法なんて無いだろ
だから多重継承は強力でありながら忌み嫌われるんだよ
0191デフォルトの名無しさん2007/08/22(水) 23:54:51
ttp://search.cpan.org/~blblack/Class-C3-0.19/lib/Class/C3.pm
0192デフォルトの名無しさん2007/08/23(木) 10:24:04
shiftjisのinput.txtの全角スペースにマッチングさせるため、

open FP,'<:encoding(shiftjis)', 'input.txt' or die;
$Zspace = "/xE3/x80/x80"; # Zenkaku space on EUC-JP
if($line=~/$Zspace/){
print "detected";
}

というスクリプトを書いてみましたが
これを実行してもマッチングに失敗します。
何が悪いのか分かるかたいらっしゃいませんか?
0193デフォルトの名無しさん2007/08/23(木) 12:20:11
はじめまして。よろしくお願いします。

フォームからCGIにアドレスを送り、次のような感じでリンクの表示したいのですが、
print "<a href=\"$a\" target=\"_parent\">詳細はこちら>></a>";

フォームから送ったアドレスの$_からがうまく渡せません。下のアドレス、
http://xxx.com/app/search.cgi?_mode=mode_detail&_type=rl&_object_id=0001
を、ファームから送っても、
http://xxx.com/app/search.cgi?_mode=mode_detail
でリンクされてしまいます。

&_が原因だろうというのは分かるのですが、どう対処すればいいのか分かりません。
ものすごく初心者な質問だと思いますが、よろしくお願いします。
0194デフォルトの名無しさん2007/08/23(木) 12:25:50
夏休みだからって何だこの質問群は…
0195デフォルトの名無しさん2007/08/23(木) 12:31:11
>>193
Javaスクリプトを無効にしてみたら?
0196デフォルトの名無しさん2007/08/23(木) 12:39:33
>>192
突っ込みどころ満載ですね

\xE3\x80\x80にマッチしないのはutf8フラグ付いてるから
逆に言えばutf8フラグ付いてたら\sで全角スペースにマッチするにょ
0197デフォルトの名無しさん2007/08/23(木) 12:47:30
>>193
俺はここに飛ばされるんだが。。。
http://xxx.com/

そのアドレス先に行ってソース嫁、読めばなぜ飛べないのかわかる
0198デフォルトの名無しさん2007/08/23(木) 12:58:10
>>195
インターネットオプションから試しましたがダメでした。Javaスクリプトを無効に
する方法って他にありますか?
>>197
ttp://xxx.com/ のxxxは仮のURLとして書いたものです。申し訳ありません。
0199デフォルトの名無しさん2007/08/23(木) 13:54:13
193です。もしかすると、フォームからデータを受け取る際のsplit関数の、
@form=split (/&/,$input);
の&部分が、送られたアドレスの&部分とごっちゃになって(表現が変ですが)、
ttp://××.com/app/search.cgi?_mode=mode_detail&_type=rl&_object_id=0001
を、&で分解して
ttp://××.com/app/search.cgi?_mode=mode_detail
_type=rl
_object_id=0001
に分けてしまうのが原因のように思えてきました。
対処方法が分かればお願いいたします。また、説明不足な感じになって、
アドバイスしていただいた方、申し訳ありませんでした。

@form=split (/&/,$input);

$a=$form[0];
・
・
・
$a=$form[5];
$a=~s/詳細=/ /;
print "<a href=\"$a\" target=\"_parent\">詳細はこちら>></a>";
02001802007/08/23(木) 14:10:04
いろいろ回答ありがとうございました。

>>189
B,Cが既存モジュール、DがB,Cが共通して使っている親クラス、
Aがmainを書いた人が書いたカスタムモジュールということにしておいてください。

>合成(has-a、use-a)も考えるよう勧められてるよ。
合成というのは継承機構に頼らず必要なメソッドを手動でA上にディスパッチして
使うということでしょうか?
駱駝本も黒豹本も持ってない・・・

>>190
重複メソッドについてはA上に別名で定義し直すっていうのが現実的な対応でしょうね
あと、内部のメソッド呼び出しが重複する場合は、サブルーチン呼び出しに書き換えるか、
それが出来ない場合は、やはりA上に同名のメソッドを定義して、適切なクラスへ
誘導する必要があると思いました。ばかばかしい事ですが・・・

sub A::_p { $meth = caller().'::_p'; $_[0]->$meth }

>>191
なるほど、next::methodでメソッドが重複するクラスへ誘導するわけですか。
ひとつ勉強になりました。
問題点があるとすれば重複すると分かってからnext::methodを書き込まなければ
いけない点ですね。
0201デフォルトの名無しさん2007/08/23(木) 15:09:51
次のメソッドが無い時でもエラーにならない maybe::next もあるにょ
0202デフォルトの名無しさん2007/08/23(木) 15:30:12
>>200
perlbot - Bag'o Object Tricks (the BOT)
http://search.cpan.org/~nwclark/perl-5.8.8/pod/perlbot.pod
http://www.kt.rim.or.jp/~kbk/perl5.005/perlbot.html
0203デフォルトの名無しさん2007/08/23(木) 16:45:26
お前はもうここに書くな
0204デフォルトの名無しさん2007/08/23(木) 20:10:19
>>193,>>199
で、結局、自分は何をしたいのか、どういう結果を期待しているのか。それを書け。
0205デフォルトの名無しさん2007/08/23(木) 20:34:00
>>187
そのコードで(sortではなく)substrが遅いというのは、
 ・$text に utf8フラグが付いている
 ・配列(@position)の要素数がとても多い
 ・その部分が何回も(数百回,数千回といった回数)実行される
という事?
0206デフォルトの名無しさん2007/08/23(木) 21:30:08
>>204
&を含む以下のようなアドレスをフォームから送ったとき、
ttp://××.com/app/search.cgi?_mode=mode_detail&_type=rl&_object_id=0001

@form=split (/&/,$input); によって
ttp://××.com/app/search.cgi?_mode=mode_detail
_type=rl
_object_id=0001
の3つに分解されて@formに格納されてしまいます。

&を含むアドレスを分解されずにひとつの添え字の中に格納することはできますか?
0207デフォルトの名無しさん2007/08/23(木) 21:38:58
RFCに従ってエスケープしれ

http://www.ietf.org/rfc/rfc2396.txt
http://www.ietf.org/rfc/rfc3986.txt
0208デフォルトの名無しさん2007/08/23(木) 23:02:11
わからん。わけわからん!

&で分解してるのに、&で分解されずに格納したいだと??

わからん。言ってる意味がまったくワカラン!!!
0209デフォルトの名無しさん2007/08/23(木) 23:21:33
CGIの環境変数を勉強してこい
0210デフォルトの名無しさん2007/08/23(木) 23:36:11
>>208
>>209
勉強し直してきます。
02111872007/08/23(木) 23:44:38
>>188
「_」で切り分けたいわけではないです。bc_abのような組み合わせもあります。
かなり長い文字列から、部分文字列を大量に切り取って、ソートしたいです。

>>205
まったくその通りで・・・頭が下がります。
utf8ですし、
ループ回数は10万ちょっとあります。
substrでは1秒近くかかります。

なので以下のように配列で処理しようとしたのですがソートがわからなくなりました。
abc_abcdからabc,abcdと取り出そうとした場合、
配列に0文字目から2文字目まで、4文字目から7文字目までという意味で(0,2,4,7)と格納する。
これだと0.05秒くらいで終わります。
0212デフォルトの名無しさん2007/08/24(金) 00:55:42
>>187>>211
substrが遅くて困る、というなら、
substrを使わないか、回数を減らすアルゴリズムに切り替えること。
そのためのヒントとなるべき「何をしたいのか」が>>187にはない。
substrを使う>>187のアルゴリズムが絶対なら、それはsubstrから逃れられないのでは?
0213デフォルトの名無しさん2007/08/24(金) 02:16:53
180がだいぶわかってないのだけはわかった。
オブジェクト指向プログラミングを学ぶならPerlじゃないほうがいいと思う。
個人的にはJavaがおすすめ
(静的型付のほうが最初はいい気がする)
オブジェクト指向の原則やデザパタを学ぶには「アジャイルソフトウェア開発の奥義」もおすすめ。
0214デフォルトの名無しさん2007/08/24(金) 02:25:59
>>187
オフセット情報があるんだったらunpackで一発じゃない?
0215デフォルトの名無しさん2007/08/24(金) 19:08:39
>>201
あ、そうですね。とりあえず、重複するかどうかわからないけどそう書いとくのも手ですね。
あと、同じことなのですがサブルーチンに属性をつけるのもありだと思いました。

例えば>>186で重複メソッドをロード順に実行するなら
package UNIVERSAL;
use Attribute::Handlers;

sub DUP :ATTR(CODE) {
 my ($pack, $symbol) = @_;
 my $sub = *{$symbol}{NAME};
 my $fa = *{'A::'.$sub}{CODE};
 my $fx = *{$pack.'::'.$sub}{CODE};
 *{'A::'.$sub} = $fa ? sub{ $fa->(@_); $fx->(@_) } : $fx;
}

sub C::f :DUP {・・・}
sub D::f :DUP {・・・}

あと内部呼び出しで重複するメソッドはINSIDE属性をつけるとか

sub INSIDE :ATTR(CODE) {
 my ($pack, $symbol) = @_;
 my $sub = *{$symbol}{NAME};
 return if *{'A::'.$sub}{CODE};
 *{'A::'.$sub} = sub{ my $meth = caller()."::$sub"; $_[0]->$meth };
}

sub C:_p :INSIDE {・・・}
0216デフォルトの名無しさん2007/08/24(金) 19:08:52
LWP-UserAgentでHTTPSのアクセスにSocksプロキシを使いたくて調べたら
LWP-Protocol-https-SocksChainというの見つけたのですが
サンプルコピペして実行しても
Deep recursion on subroutine "LWP::Protocol::http::SocketMethods::sysread" at C:/Perl/site/lib/IO/Socket/SSL.pm line 767.
Deep recursion on subroutine "IO::Socket::SSL::SSL_HANDLE::READ" at C:/Perl/lib/LWP/Protocol/http.pm line 392.
ってエラーでてしまいます。どうすればいいんでしょうか?
環境はActivePerl v5.8.8 WindowsXPです。
LWP-Protocol-https-SocksChain自体Googleで検索してもほとんど出てこないのでどなたか助けてください。
0217デフォルトの名無しさん2007/08/24(金) 19:23:08
>>202
ざっと見ましたが、出来るなら継承より委譲した方がいいようですね。
委譲パターンって単純にはこんな感じでしょうか

sub A::new { bless {delegate_B=>bless({},'B'), delegate_C=>bless({},'C')} }

sub A::delegate_B { $_[0]->{delegate_B} }
sub A::delegate_C { $_[0]->{delegate_C} }

package main;

$o->delegate_B->f;
$o->delegate_C->f;
0218デフォルトの名無しさん2007/08/24(金) 19:54:30
>>213
あー180ですが、これ私に対するレスですよね。
Javaのデザインパターンの考え方は参考になるので、今度図書館で探してみます。
その前に駱駝本とかを読むのが先なのかな?
(借りようと思ったけど、ずっと貸し出し中だった)
前に指摘されていた黒豹本は書店で確認しましたが、あまりオブジェクトに関する記述はなかったです。
今、perlbootとperltoocとperltootを読んでいるところです。
これとperlbotがPerlのオブジェクト〜の教典ってことになるのでしょうか
0219デフォルトの名無しさん2007/08/24(金) 20:48:29
皆さんこんにちは.
$::request
という変数が書かれたスクリプトがあるのですが,
これ何の変数なのか教えていただけないでしょうか.
プログラミングPerlで見つけることができなくて・・・
0220デフォルトの名無しさん2007/08/24(金) 20:53:30
現在のパッケージに属するスカラ変数。
0221デフォルトの名無しさん2007/08/24(金) 22:09:22
プログラミングPerlでは、パッケージに関する項で説明されている。
ただし初版(背表紙が赤い奴)では(当時まだ無かった) $::name という表現は使われていない。
(かわりに $'name という表現が使われている)
0222デフォルトの名無しさん2007/08/25(土) 07:56:42
お前はもうここに書くな
0223素人2007/08/25(土) 15:54:10
perl初心者です。よろしくお願いします。
HTMLのフォームからCGIにデータを送った場合には、内容がきちんと表示される
のですが、CGIに直接アクセスした時には表示されません。どこに問題があるのか
ご教授下さい。お願いします。
#!/usr/local/bin/perl

#データファイル
$datafile='./data.dat';
#ライブラリの読み込み
require './jcode.pl';
#フォームデータの読み込み
if ($ENV{REQUEST_METHOD} eq "POST"){
read (STDIN,$input,$ENV{CONTENT_LENGTH});
}else{
$input=$ENV{QUERY_STRING};
}
#フォームデータのデコード
$input =~ tr/+/ /;
$input =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/eg;
#SJISコード変換
&jcode::convert(\$input, 'sjis');
#フォームデータの分解
@form=split (/&/,$input);
#データのオープン
open(DAT,"+< $datafile");
flock(DAT, 2);
#データの書き込みとクローズ
seek(DAT,0,0);
print DAT @form;
close(DAT);
0224素人、続き2007/08/25(土) 15:56:48
&header;
print "<div class=\"iframe_body\">";
#データを表示する(左)
print "<div class=\"iframe_left\">";
$a=$form[0];
$a=~s/名前=/ /;
print "<b><font color=\"#ff0000\">$a</font></b>";
print "<br>";
$a=$form[1];
$a=~s/画像=/ /;
print "<img src=\"$a\" width=\"120\" height=\"100\" border=\"0\">";
print "<br>";
$a=$form[2];
$a=~s/住所=/ /;
print $a;
print "<br></div>";
・
#データを表示する(中央)と(右)があります。
・
print <<EOM;
</body>
</html>
EOM
exit;

#-----------------------------------------------------------------------------------
# HTMLヘッダー
#-----------------------------------------------------------------------------------
割愛
0225デフォルトの名無しさん2007/08/25(土) 16:21:09
板違い。テンプレヨメ。
0226素人2007/08/25(土) 16:42:14
>>225
板違いでしたか。失礼しました。
0227デフォルトの名無しさん2007/08/25(土) 16:42:36
入力がないのに、どうやってデータを出すんだよ
0228素人2007/08/25(土) 16:55:13
入力ってなんですか?教えてください。お願いします。
0229デフォルトの名無しさん2007/08/25(土) 17:05:37
Perl、CGIの本買ってくればのってる

手間、金、時間を惜しむ奴は勉強しなくてよろしい
0230素人2007/08/25(土) 17:21:25
>>229
open(IN,"ファイル名");
@form=<IN>;
close(IN);
は試してみたんですが、ぜんぜん別のことでしょうか?
とりあえず、もう一度本を読み直してみます。
0231デフォルトの名無しさん2007/08/25(土) 20:48:47
> 手間、金、時間を惜しむ奴は勉強しなくてよろしい

君んちの近くに心療内科ないの?
あったら一度行ってみた方が良いよ。
0232デフォルトの名無しさん2007/08/25(土) 20:54:30
>>231
君んちの近くにはないの?
0233デフォルトの名無しさん2007/08/25(土) 21:00:45
>>232
自分が行ってみて良かったから人にも勧めてるんだろ。
0234デフォルトの名無しさん2007/08/25(土) 21:21:27
回答者を煽っても質問者が得する事は
何一つ無いと言うのに 全く愚かな奴だ
0235デフォルトの名無しさん2007/08/25(土) 21:31:50
心療内科を探す手間、金、時間を惜しむ奴は治療しなくてよろしい
02362052007/08/25(土) 21:32:13
>>211
それは大変そうだね。
普通は位置情報で処理すると、187の@a_wordへ分割するコードより遅くなるよ?
sortの準備が1秒から0.05秒に減る代わりに、sort自体が0.5秒から10秒に増える感じになる。
ソート済みの位置情報を保存して使いまわす場合には、速度は気にならないだろうけどね。

n番目という情報をソートするだけなら、例えば @a_word = sort @a_word; ならば比較関数を
@order = (0..$#a_word);
@order = sort { $a_word[$a] cmp $a_word[$b]} @order;
のように書けばいい。(@a_word = sort @a_word; より数倍遅い)
同様に
@order = sort { substr($text,$position[$a],...
と、より複雑な比較関数を使って @a_word 自体を作らない手もある。(更に数倍以上遅い)
0237デフォルトの名無しさん2007/08/26(日) 13:55:19
perlのモジュールをインストールするのにすごい手間どっています。

http://digit.que.ne.jp/work/index.cgi?Perl%e3%83%a1%e3%83%a2%2f%e3%83%a2%e3%82%b8%e3%83%a5%e3%83%bc%e3%83%ab%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%28CPAN%29
http://blog.ko-c.jp/?eid=661566";>Windows

↑これらのページを参考にしてがんばっているのですがどうもうまくいきません。

NMAKE : fatal error U1077: 'C:\PROGRA~1\MID05A~1\VC\bin\cl.EXE' : リターン コー
ド '0xc0000135

このようなエラーがでてnmakeが途中で終わってしまうのですが何が原因なのでしょうか?
cl.exeのあるフォルダにはPATHを通してあります。
0238デフォルトの名無しさん2007/08/26(日) 14:17:41
諦めてppmにしておいたほうが幸せになれる
0239デフォルトの名無しさん2007/08/26(日) 15:53:34
あきらめて VMware の中に Linux 入れたほうが幸せになれる
0240デフォルトの名無しさん2007/08/27(月) 01:10:00
テキストファイルの文字コードを調べて、もしUTF-8じゃなかったら、UTF-8として読み出すみたいなことは出来るんですか?

ナニナニを使え、みたいなお返事でも結構ですので
0241デフォルトの名無しさん2007/08/27(月) 08:17:58
>>126
今さらだけど、属性使うとそれっぽく書ける

sub f1 :Default(0,'foo') {
  my ($x, $y) = @_;
  print "$x $y\n";
}

実装例

use Attribute::Handlers;
sub UNIVERSAL::Default :ATTR(CODE) {
  my ($pack, $symbol, $referent, $attr, $data) = @_;
  no warnings 'redefine';
  no strict 'refs';
  my $sub = *{$symbol}{NAME};
  my $orig_func = *{$pack."::$sub"}{CODE};
  *{$pack."::$sub"} = sub{
    for my $i (0..$#$data) {
      unless (defined($_[$i])) {splice(@_, $i, 1, $data->[$i]) }
    }
    $orig_func->(@_)
  };
}

0242デフォルトの名無しさん2007/08/27(月) 17:24:59
お前はもうここに書くな
0243デフォルトの名無しさん2007/08/27(月) 17:27:28
質問です。
たまに、戻り値を受け取る変数の型によって、値が変わる関数がありますよね?


(1)
これを自前でサブルーチンとして実装するには、どう記述すればよいのでしょうか。

(2)
この値を呼び出し側で制御することは出来ませんか。
  @tmp = function();
  $result = \@tmp;
のように。

よろしくお願いします。
0244デフォルトの名無しさん2007/08/27(月) 17:53:51
wantarrayとかの話?
02452432007/08/27(月) 18:03:05
>>244
(1)はそれ。ありがとう。
0246デフォルトの名無しさん2007/08/27(月) 18:10:12
>>243
(2)の意味するところがわからん
0247デフォルトの名無しさん2007/08/27(月) 18:16:57
関数の返り値が配列なのかスカラーなのかブーリアンなのか実行前に知りたい時がたまにある。
どうすりゃいいんだろう
0248デフォルトの名無しさん2007/08/27(月) 18:17:44
>>247
ソースを見る
0249デフォルトの名無しさん2007/08/27(月) 18:19:21
>>243
$result = [function()];
02502432007/08/27(月) 18:24:26
>246
戻り値をスカラーで受け取りつつ、関数には、リストコンテキストとして評価できないかなと。
配列のリファレンスが欲しい。

>247
ドキュメントをしっかり作るとか。
あとは、統合環境で何とかならないかな?
02512432007/08/27(月) 18:27:20
リロードしてなかった orz

>249
ありがとうです。そんな使い方があったのですね。
0252デフォルトの名無しさん2007/08/27(月) 18:43:23
>>247
無理だよ。コンテクストや引数、そのほか計り知れない要因によって変わる可能性があるんだから。
0253デフォルトの名無しさん2007/08/27(月) 18:50:31
>>247
なんで分からんねん って話しだが
0254デフォルトの名無しさん2007/08/27(月) 19:01:24
>>248
サブルーチンとか所在のわかっている関数はB::Deparseとかで確認できるけど、
どこから継承されているかわからない階層の深いメソッドとかはどうすりゃいいですか?
0255デフォルトの名無しさん2007/08/27(月) 20:28:52
そんなに深い谷底からメモもなく浮上してくるの?
0256デフォルトの名無しさん2007/08/27(月) 20:35:43
頭の足りない人向けのライブラリでも作ってるのか。大変だな。
0257デフォルトの名無しさん2007/08/27(月) 21:47:15
ソース読むとかドキュメント読むとか取り合えずダンプしてみるとか
callerで深い階層まで拾ってみるとかそんな関数使わないとか
02582542007/08/27(月) 21:51:26
あ、canメソッドを使えばいいのか。canはコードリファレンスを返すんだった。
それをcoderef2textに渡せばソースが出力される。
自己解決しました。お騒がせしました。
■ このスレッドは過去ログ倉庫に格納されています