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


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

Perlコーディング初心者質問スレ Part 57



1 名前:nobodyさん mailto:sage [2008/02/25(月) 19:25:51 ID:???]
Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。

お勧めサイトは >2 以降

前スレ pc11.2ch.net/test/read.cgi/php/1189939783/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/


655 名前:nobodyさん [2008/06/02(月) 18:52:18 ID:VCfcjQkN]
HTML::Templateの昔のバージョンとかなら5.00503でも動きますかね?

656 名前:nobodyさん mailto:sage [2008/06/02(月) 18:56:19 ID:???]
その知識だと、HTML::Templateなんて必要ないじゃん!的な使い方しかしてしないと予想されるので、
自前でテンプレート化した方が早い。

スキン対応と銘打ってる配布CGIのソース読んだ方が早い気がする。

657 名前:nobodyさん mailto:sage [2008/06/02(月) 18:59:25 ID:???]
HTML をテンプレート使って出力するようにすると病み付きになる

658 名前:nobodyさん mailto:sage [2008/06/02(月) 19:03:56 ID:???]
5.005のこと詳しくしらないけど、DynaLorderとかって、標準で入ってないの?
ってか、>>649の内容を見るに、DynaLorderでわなくて、Digest::MD5(.so)が無いんでないの?(これも標準でない?)

まあなければ、Digest::MD5はXSモジュール含んでるから、
そのサーバー上でコンパイルし直さないと実行できないのは、>>653と同じ意見だけど。

659 名前:nobodyさん [2008/06/02(月) 19:07:00 ID:VCfcjQkN]
PerlってHTMLと親和性ないですよね〜。
テンプレート使えないとなると、めんどくさくなるけど、まぁがんばります。
ありがとうございました。

660 名前:nobodyさん mailto:sage [2008/06/02(月) 19:49:04 ID:???]
自分の未熟さを言語のせいにするなよw
HTMLと最も親和性のある言語として、Perl/CGIが一世風靡しただろ。

661 名前:nobodyさん mailto:sage [2008/06/02(月) 19:51:49 ID:???]
>>657
kwsk

662 名前:nobodyさん mailto:sage [2008/06/02(月) 19:59:46 ID:???]
>>661
ちょっとかじった程度の人でもデザイナーとプログラマを切り分けられる利点がある

663 名前:nobodyさん [2008/06/03(火) 00:57:17 ID:etSjPPZK]
PostやGetで送られてきたURIエンコードをデコードしてハッシュに確保するような
プログラムを作ったのですが
HTMLのformでenctypeをmultipart/form-dataにすると
送られてくるデータの形式が変わってしまって
うまくハッシュに確保することができなくなっちゃいました。

送られてきたデータが
multipart/form-dataなのか
application/x-www-form-urlencodedなのか
調べる方法ってありますか?

ついでに、multipart/form-dataで送られてきたデータの扱い方を
まとめてあるサイトとかありましたら教えてほしいです。



664 名前:nobodyさん mailto:sage [2008/06/03(火) 01:01:53 ID:???]
multipart/form-data って文字があるのか application/x-www-form-urlencoded って文字があるのかで簡単に判別着く
multipart/form-data の処理は CGI.pm 使ってね♪

665 名前:nobodyさん mailto:sage [2008/06/03(火) 01:12:56 ID:???]
>>663
CGI.pm ならどちらの形式でも意識せず受け取れる。
perldoc.jp/docs/modules/CGI.pm-2.89/CGI.pod

自前実装したいのなら
www.studyinghttp.net/cgi-bin/rfc.cgi?3875#Sec8.2
www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/interact/forms.html#h-17.13.4.1
www.studyinghttp.net/cgi-bin/rfc.cgi?2388

666 名前:nobodyさん [2008/06/03(火) 01:24:31 ID:etSjPPZK]
>>665
ありがとう!

667 名前:nobodyさん mailto:sage [2008/06/03(火) 01:58:53 ID:???]
>>659
テンプレートエンジン、自分で作るという手もある。
そんなに難しくないよ。
Compositeパターンでも使えば。


668 名前:nobodyさん mailto:sage [2008/06/03(火) 09:41:38 ID:???]
>>659
HTML をふつうに書く
HTML なかに <%BODY%> とか、挿入場所を示す識別子をいくつか用意して書き込む
プログラムからテンプレート HTML を読み込む
正規表現で置換

たったこれだけです。


669 名前:nobodyさん mailto:sage [2008/06/03(火) 11:07:04 ID:???]
Template::Toolkitならともかく
HTML::Templateは単純な処理だしね
さくっと使いたい時には便利、無けりゃ無いでどうにでもなる

670 名前:nobodyさん [2008/06/03(火) 12:56:41 ID:K4KbdDUT]
Perlでindex.cgiを作って
そのCGIですべてを管理するような仕組みを作った場合
やっぱindex.cgiにアクセスが集中してよくなかったりするんですか?

671 名前:nobodyさん mailto:sage [2008/06/03(火) 13:31:41 ID:???]
index.cgi で処理させる内容を挙げてくれないとまったくわからない

自分は普通のエディタ (関数へのジャンプとか無くて色分けだけ) なので
まったく違う処理はファイル分けてる

672 名前:nobodyさん mailto:sage [2008/06/03(火) 17:01:51 ID:???]
多分聞きたい事って、hoge1.cgiとhoge2.cgi…hoge100.cgiとかあったら
それぞれ頭で同じ事やってるから、all.cgi(index.cgi?)に全て
まとめられないか?って事じゃないのかな?
 my $cgi = CGI->new();
 my $config = init();
 if( $cgi->param('mode')eq'hoge1' ) {
  require 'hoge1.pl';
  hoge1::main($config);
 } elsif( $cgi->param('mode')eq'hoge2' ) {
  require 'hoge2.pl';
  hoge2::main($config);
…って、感じで。漏れも昔、初心者だった時に同じ事を思った。

答えは、当然all.cgi(index.cgi?)の呼び出しのオーバーヘッドは
全CGIの呼び出し回数倍増えるよ。

そういう事じゃなくて??


673 名前:nobodyさん mailto:sage [2008/06/03(火) 17:44:51 ID:???]
>>670
俺それやってる
wikiみたいに書けるテキストファイルを自動で携帯/PCに最適化してValid XHTML出力する、みたいな。



674 名前:nobodyさん mailto:sage [2008/06/03(火) 17:56:29 ID:???]
bloxsomだっけ?

675 名前:nobodyさん mailto:sage [2008/06/03(火) 19:41:27 ID:???]
perl関連のプロジェクトは企画倒れが本当に多いね。
企画倒れというより、制作者が途中で飽きて、ブームになっても、そのまま放置……みたいな。
かのCPANだって、一部のモジュール以外は、姥捨山みたいになってる。
古いモジュールに、パッチ送ってもメール不達とか多すぎるんだよ!

676 名前:nobodyさん mailto:sage [2008/06/03(火) 20:52:43 ID:???]
tp://www.drk7.jp/weather/
ここの 東京の xml から加工を行っています。
最終的には明日の天気を出力したいのですが、以下のコードを書いたところ
気温や降水確率が出力されなくて悩んでいます。

================================================
use XML::TreePP;
use strict;

my $tpp = XML::TreePP->new();
my $tree = $tpp->parsefile( '13.xml' );

print $tree->{weatherforecast}->{pref}->{area}->[1]->{info}->[1]->{weather} , "\n";
print $tree->{weatherforecast}->{pref}->{area}->[1]->{info}->[1]->{temperature}->{range}->[1];
================================================

{range}->[1] で %hash と言われてしまうのはどうしてでしょうか。
その後に [1]->{-centigrade} をするとこの場合は min が出てくるのは判っています。

677 名前:nobodyさん mailto:sage [2008/06/03(火) 21:13:48 ID:???]
[1]->'#text'

ダンプしろよ

678 名前:nobodyさん mailto:sage [2008/06/03(火) 21:21:10 ID:???]
print $tree->{weatherforecast}{pref}{area}[1]{info}[1]{temperature}{range}[1]{#text}
manual嫁。
あと、XMLの中にareaやinfoやrangeの要素が1つしか無い場合に配列要素に
ならないのがTreePPの仕様なので、例えばinfoが1要素しか無い場合は
print $tree->{weatherforecast}{pref}{area}[1]{info}{temperature}{range}[1]{#text}
とアクセスしなくてはいけない。オプションで回避できるけど。


679 名前:670 [2008/06/03(火) 22:25:48 ID:etSjPPZK]
言葉が足りんでした。スミマセン。

>>673
ちょっと俺の勉強不足で言ってることがよくわからないけれど

例えばindex.cgi?page=homeだとhome.htmlをcgiプログラムが引っ張ってきて表示する
みたいな仕組みを作った場合、
どのユーザーがどのページを見てもindex.cgiに必ずアクセスするわけじゃない?
てことはページが1000ページとかできたとして
いろんな人がいろんなページを見出したらindex.cgiのアクセスが集中して
なんかまずいことになったりしないのかなって思ったの。

教えてLarry!!

680 名前:nobodyさん mailto:sage [2008/06/03(火) 22:40:04 ID:???]
つか、ほとんどのWEBアプリケーションは、特定ファイルに負荷集中するがな。

681 名前:670 [2008/06/04(水) 00:28:11 ID:KcodebuX]
>>680
あ、じゃあ余計な心配しなくて大丈夫かぁ

682 名前:nobodyさん mailto:sage [2008/06/04(水) 01:09:20 ID:???]
つ mod_perl

683 名前:nobodyさん mailto:sage [2008/06/04(水) 05:38:01 ID:???]

A:opendir でファイル一覧を取得する

B:予めファイル一覧をそれ用のメモファイルに書き出しておいてそれを読みこんで取得

AとBではどちらが負荷が少ないですか?





684 名前:nobodyさん mailto:sage [2008/06/04(水) 06:05:53 ID:???]
自分で調べられる手間を人に仮託するな。

685 名前:nobodyさん mailto:sage [2008/06/04(水) 08:14:25 ID:???]
>>670
>>672に答えが書いてあるのだが、何故それを無視する?

686 名前:nobodyさん mailto:sage [2008/06/04(水) 10:13:14 ID:???]
どなたか教えてください。

掲示板のタイトル一覧取得を現在作っています。
それでタイトルがもし長かった場合、最初の9byteだけを表示するようにしたいのですが・・・

if (length($title) > 9) { $get = substr($title[3],0,9); }


以上のようにしてしまうと、9byte目に全角文字が来た場合文字化けしてしまいます。
例えば、

$title = "testtesttest";  この場合は $get = testtestt

$title = "テストテスト"; これだと $get = テストテ爛


こういった文字化けを回避するような、いい方法は無いでしょうか?

687 名前:nobodyさん mailto:sage [2008/06/04(水) 10:15:53 ID:???]
jfold

688 名前:686 mailto:sage [2008/06/04(水) 10:27:56 ID:???]
2分での光速のお返事ありがとうございます。

調べてみたところ、Jcode.pmのモジュールみたいですね。
今までずっとjcode.plばっかだったので知らなかった…

さっそく試してみます。
どうもありがとうございました。

689 名前:670 [2008/06/04(水) 13:24:15 ID:44uKn/lk]
>>685
スミマセン基地外でした。

690 名前:nobodyさん [2008/06/05(木) 00:08:18 ID:S7Nj2GEO]
ところでさ…何故elsifなんだと思う?
どうせならifにあわせてelとefとか2文字にしてほしかったん

691 名前:nobodyさん mailto:sage [2008/06/05(木) 00:28:25 ID:???]
ごめんなさいごめんなさい

692 名前:nobodyさん mailto:sage [2008/06/05(木) 22:21:15 ID:???]
Cか何かでやってる人いたな。

693 名前:nobodyさん mailto:sage [2008/06/05(木) 23:21:13 ID:???]
最近5.10を使うようにしてんだけどgiven-whenが馴染めない
switch-caseでいいと思うのになんでgiven-whenにしたのかな?Switch.pmがあるから?



694 名前:nobodyさん mailto:sage [2008/06/06(金) 01:28:23 ID:???]
>>693
pc11.2ch.net/test/read.cgi/php/1008355270/85
Perl の自然言語的体裁には switch-case より given-when の方が
よりしっくりくるかもね。

695 名前:nobodyさん [2008/06/07(土) 20:54:21 ID:8brPzE2o]
www.vid-dl.net/

このサイトに
v.youku.com/v_show/id_ch00XMjc3MDQ1MzI=.html
を入力するとリンク先が4つほどでます。

これを自分でもPerlCGIで再現したいんですが、4つのリンク先をどうやって出してるのかわかりません。
HTMLのソースを見る限り4つないんです。
ないものを何かを元にして解析?してるようです。
4つの違いは以下です

f.youku.com/player/getFlvPath/sid/12008536434684686883/st/flv/fileid/までは一緒以下が

0200640400482D864C5AE000AEF6647CED502D-7AA2-9D39-9256-82A8FD7CC8D9
0200640401482D864C5AE000AEF6647CED502D-7AA2-9D39-9256-82A8FD7CC8D9
0200640402482D864C5AE000AEF6647CED502D-7AA2-9D39-9256-82A8FD7CC8D9
0200640403482D864C5AE000AEF6647CED502D-7AA2-9D39-9256-82A8FD7CC8D9

です。
<a charset="400-002-2-4" href="javascript:sendVideoLink('XMjc3MDQ1MzI=','0200640400482D864C5AE000AEF6647CED502D-7AA2-9D39-9256-82A8FD7CC8D9');">??</a>
これが大本でこれを解析してるんでしょうか。
こういうのはどうやって解析すればいいのでしょうか?

よろしくお願いします。

696 名前:nobodyさん mailto:sage [2008/06/07(土) 21:00:16 ID:???]
一部の0に1足してるだけじゃないの?

697 名前:nobodyさん [2008/06/07(土) 21:25:47 ID:8brPzE2o]
>>696
ですが4つとは限らないんです。
このビデオは4つですが、者によっては8つとかになります。
それをどうやって特定してるのかがわかりません。

698 名前:nobodyさん mailto:sage [2008/06/07(土) 21:33:39 ID:???]
>>697
youkufireかなんかAPI使ってるんだろ。
Perlとは関係ないな。

699 名前:nobodyさん [2008/06/07(土) 21:43:36 ID:8brPzE2o]
>>698
???
それではyoukufireではどうやってやってるんでしょうか?

こういうのってどういうスレに行くと知ってる人がおられるのでしょうか?
フラッシュ関連なのでしょうか?
自分はPerlをかじる程度しか知らないのでついここに来てしまったのですが。


アドバイスお願いします

700 名前:nobodyさん mailto:sage [2008/06/07(土) 22:34:21 ID:???]
HTTPに関して勉強して下さい。
全くのスレ違いです。

701 名前:nobodyさん [2008/06/07(土) 22:55:37 ID:8brPzE2o]
http???
他で質問してみます。ありがとうございました。

702 名前:nobodyさん mailto:sage [2008/06/07(土) 23:03:35 ID:???]
いや、どこで質問しても無駄だと思うよ。
結局、HTTPレスポンスを解析する必要があるから。

そして、HTTPレスポンスの意味を把握するには、
sidなどユニークなIDのパターン解析と
youkuで使われてるファイル取得swfの内部解析も必要。

この意味が分からない次元じゃ、到底ムリ。

703 名前:nobodyさん [2008/06/07(土) 23:36:39 ID:8brPzE2o]
なるほど。
www.kasai.fm/perlHTTP/
www.kasai.fm/perlHTTP/decode.html
からとりあえずそのhttpレスポンスとやらを実際に見てみようと思いましたが。

どうもCan't locate BASE64 in @INC エラーがでまして。
このモジュールをactiveperl5.8.1のppm(リポジトリは初期状態のまま1つです)でいれようとしましたが
ない模様です。

MINE::Base64って自分でコンパイル?でしたっけができないとダメなものなのでしょうか。




704 名前:nobodyさん [2008/06/07(土) 23:53:12 ID:8brPzE2o]
すいません
getHTTPの

#use MIME::Base64;
require('BASE64');

use MIME::Base64;
#require('BASE64');
にしたらエラーが出ませんでした。動いてるかはわかりませんが。

705 名前:nobodyさん mailto:sage [2008/06/08(日) 00:05:22 ID:???]
MIME::Base64は標準モジュールだ。
というか、質問内容が初心者未満の単なる教えて君だぞ。
最低限、ドキュメント読むかググってから書き込め。

706 名前:nobodyさん [2008/06/08(日) 00:14:24 ID:Mcg1bojL]
そうなんですか。とりあえずperlでwebページを読み込む実験は成功しました。
そこからフラッシュのURLを抜き出すところまではできそうです。

>sidなどユニークなIDのパターン解析と
>youkuで使われてるファイル取得swfの内部解析も必要。

これを検索とか意味を探してきます。

707 名前:nobodyさん mailto:sage [2008/06/08(日) 14:55:02 ID:???]
オブジェクトにメソッドを足すにはどうしたらいいでしょうか?

package foo;
*{foo::hoge::bar} = sub {1};
$hoge = foo->hoge;
$hoge->bar();
Can't locate object method "hoge" via package "foo"

アレ?

708 名前:nobodyさん mailto:sage [2008/06/08(日) 16:56:29 ID:???]
>>707
基本から一通り勉強し直したらいいんじゃないかな。
www.kt.rim.or.jp/~kbk/perl5.005/perlmod.html
www.kt.rim.or.jp/~kbk/perl5.005/perlobj.html

709 名前:nobodyさん mailto:sage [2008/06/08(日) 18:03:33 ID:???]
>>708
サンクス

最後のページ
Summary
なすべきこと。今、あなたは部屋を出てオブジェクト指向方法論に関する書籍を購入して、そして六ヶ月かそこらの間悩む必要があるでしょう。

ワロタ

710 名前:nobodyさん [2008/06/08(日) 18:41:29 ID:NYonUevm]
うーん継承させても
hoge {
$this = shift;
return $this;
}

bar{1}

hoge->bar()ってやったら呼べるんだけどbarはhogeと同じ空間にあるのが変というか
つまり単純化するとこんな感じ。

*{foo::hoge::bar} = sub {1};
print foo->hoge->bar(); エラー
print foo::hoge::bar->(); 動くが気もい

*{foo::hoge::bar} = sub {1}; #もっとキモイ
$top = foo::hoge;
print eval ($top ."::bar");

勉強してきます
しかしあんま資料ないっぽい

711 名前:nobodyさん mailto:sage [2008/06/08(日) 18:52:18 ID:???]
OOPじゃなくて、perlの基本からやり直しては。
*{foo::hoge::bar} じゃなくて *{foo::bar}
hogeなんていうpackage作ってないし。



712 名前:nobodyさん mailto:sage [2008/06/08(日) 19:09:16 ID:???]
> hogeなんていうpackage作ってないし。 !
それだ! ありがとうやっとわかったよ。
てっきり package a::b::c;
ってやると

a
a::b
a::b::c

ってのが自動的に生成されると思ってた。


713 名前:nobodyさん mailto:sage [2008/06/08(日) 20:02:49 ID:???]
パッケージじゃなくてオブジェクトに生やしたいの?
見かけ上はできるけだろうけどPerlのオブジェクトは名前空間に変数結び付けてるだけだからなあ

と思ったけどもう一度勉強した方が良さげだね



714 名前:nobodyさん mailto:sage [2008/06/08(日) 20:20:35 ID:???]
Perl DBI MySQL

CGIであるデータをホームページ上に表示することをやっています。
5000件ほどのデータをfetchrow_arrayで1行ずつフェッチしていますが
どうもフェッチ処理に時間がかかっているようです。
実際に必要なのは20件ほどで、他はページ送りで表示可能。
検索エンジンの検索結果ページなんかをイメージしていただければ。

そこで、不要なフェッチを無くすために、
複数行を飛ばしてフェッチすることってできますか?

もし他に改善策があれば教えてください。
一応、SELECTの段階で20件だけを取り出す方法を思いつきました。

715 名前:nobodyさん mailto:sage [2008/06/08(日) 20:39:35 ID:???]
>> 714 @array の展開はコスト食うのでやめたほうがいいかもね。
@arrayの高速操作が必要ならスライス操作とか調べてみると吉
SELECTで絞れるなら断然そっちのほうが早いと思うよ。





716 名前:nobodyさん mailto:sage [2008/06/08(日) 22:10:54 ID:???]
>>715
ありがとうございます。
スライス操作調べてみました。SELECTでLIMITつければいいんですかね?
これで必要な分だけのフェッチですみましたが、どうも時間がかかるようです。
ちょっと複雑なSQL文なんでそっちのほうがボトルネックのようですorz
SQL文のほうを考え直そうと思います。

717 名前:nobodyさん mailto:sage [2008/06/09(月) 12:35:45 ID:???]
SELECT SQL_CALC_FOUND_ROWS * FROM $table LIMIT ( $page*20+1 ), 20;
SELECT FOUND_ROWS();

>>715
>>716はSQLの話じゃなくて、
大規模の配列使うなって話で、
my @temp = splice( @array, 0, 20 );
的なことでしょ。

SQL文はスレ違い。

718 名前:nobodyさん mailto:sage [2008/06/09(月) 15:41:11 ID:???]
もうメンドクセーから、bind_columns()とfetch()にすれば?
生えーぞ。

719 名前:nobodyさん mailto:sage [2008/06/09(月) 16:00:10 ID:???]
生いいよね

720 名前:nobodyさん [2008/06/09(月) 19:29:41 ID:BYZvhcIN]
LIMITしらねーとか そんなレベルなら
其の都度ひっかかって質問するより勉強したほうがはやいよ
リファレンスページみっけてプリントアウトしとけ

721 名前:nobodyさん mailto:sage [2008/06/09(月) 23:24:50 ID:???]
122
11
11000
↑これをソートすると

11
11000
122
↑こんな風になってしまいます。

11
122
11000
↑こんな感じで大きい順にソートする方法を教えてください。

722 名前:nobodyさん mailto:sage [2008/06/09(月) 23:26:19 ID:???]
sort { $a <=> $b } ( 122, 11, 11000 ) ;

723 名前:nobodyさん mailto:sage [2008/06/09(月) 23:36:47 ID:???]
>>722さん、ありがとうございました。



724 名前:nobodyさん mailto:sage [2008/06/13(金) 02:38:01 ID:???]
ファイルのアップロードについて質問です

*** form.html ***
 <input type="file" name="gazou1">
 <input type=その他 ...>

*** form.cgi ***
use CGI;
$q = new CGI;
@names = $q->param();
foreach $name (@names) {
 $value = $q->param($name);
 if (input type が file だったら ) {
  ファイル受信処理
 }
 なんらかの配列に格納
}
と、したいのですが、
inputのtypeは調べられないのでしょうか?
inputのnameで判断するしかないのでしょうか?

725 名前:nobodyさん mailto:sage [2008/06/13(金) 09:17:11 ID:???]
>>724
ブラウザから渡されるデータ自体に type 属性の値が含まれて
いないのだから、CGI プログラム上から調べる事はできない。

ref $value でアタリを付ける事はできる。
perldoc.jp/docs/perl/5.10.0/perlfunc.pod#item_ref_EXPR_ref_reference
perldoc.jp/docs/modules/CGI.pm-2.89/CGI.pod
(「ファイル・アップロード・フィールドの作成」の項)

726 名前:nobodyさん mailto:sage [2008/06/13(金) 10:25:57 ID:???]
@id には ( '101','106','112','130','150') などと入っており
$unit->{101}->{point} = 2.5;
$unit->{130}->{point} = 6.2;
$unit->{150}->{point} = 3.2;

と代入してあります

このポイント(2.5、6.2等)を元にして@idをソートしたいのですが

@id = sort { $unit->{$_}->point <=>$unit->{$_}->point } @id

とまで考えて、$aや$bをどのように使ったら良いのか分らなくなりました
よろしかったらどのように表記したら良いのか教えてください


727 名前:nobodyさん mailto:sage [2008/06/13(金) 10:51:23 ID:???]
>>726
>>3

728 名前:726 mailto:sage [2008/06/13(金) 11:00:28 ID:???]
ありがとうございます
Perlメモはいつも参考にさせて頂いてまして
・複数の項目でソートする
・自分で決めた順番でソートする
の応用でなんとかなるかと思ったのですが
どうにも分らずこちらでお伺いしました次第です
どの辺りを応用すればよろしいでしょうか?

729 名前:726 mailto:sage [2008/06/13(金) 11:18:24 ID:???]
・複数の項目でソートするを応用して(まんまかも)
先にmapでポイントの配列を作る事でなんとか出来ました

@id = map { $_->[0] } sort { $b->[1] <=> $a->[1] } map { [$_,$unit->{$_}->{point} ] } @id

ありがとうございました
そしてお騒がせ致しました


730 名前:nobodyさん mailto:sage [2008/06/13(金) 11:37:27 ID:???]
@id = sort { $unit->{$a}->{point} <=> $unit->{$b}->{point} } @id

731 名前:724 mailto:sage [2008/06/13(金) 12:09:38 ID:???]
>>725
やはりtypeは知りようがないのですね。
ご回答ありがとうございました。

732 名前:726 mailto:sage [2008/06/13(金) 12:41:47 ID:???]
なるほど、$_ がキーになる場合はそこが$a,$bの対象になるんですね
コードがすっきりしました
>>730さん、ありがとうございます


733 名前:nobodyさん mailto:sage [2008/06/13(金) 12:51:42 ID:???]
>>732
sortでなんで$_がでてくるのかわからない。$aと$bしかないだろ。
grepやmapと混乱してないか?



734 名前:726 mailto:sage [2008/06/13(金) 13:06:56 ID:???]
Perlメモのを応用しようとしていじくりまわして
>>726のソースに間違えて辿り付いたので勘違いしてました
てっきり配列の要素を引っ張り出したらそれが$_になるのかと・・・
で、$a,$bはそれが直接比較の対象にならないといけないのかと勘違いしてました orz


735 名前:nobodyさん mailto:sage [2008/06/14(土) 03:33:00 ID:???]
俺も今多次元ハッシュ使ってるけどコツがわかると便利で気に入ってる。

736 名前:nobodyさん mailto:sage [2008/06/15(日) 00:12:38 ID:???]
ちょっとした構造体風の物を作るのにいいよね
リファレンスで受け渡しも簡単だし


737 名前:nobodyさん mailto:sage [2008/06/15(日) 01:14:21 ID:???]
WinXPPro+Cygwin、iswebでperlを作成しています。
普段は問題なく動いているのですが、自宅で試したperlをiswebにアップロードする作業が面倒でたまりません。
そこで質問なのですが、
#!/usr/local/bin/perl
とかの表記を書き換えずとも、上記二つの環境の両方で動くように出来ないでしょうか。
毎度毎度アップロードするときに、全cgiを書き換えているので、そこだけでも何とかしたいんです。
もしくは、専用のFTPソフトみたいなので、アップと同時に書き換えてくれるような奴があると良いなぁって思ってます。

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

738 名前:nobodyさん mailto:sage [2008/06/15(日) 01:43:19 ID:???]
それこそローカルと同期させる専用FTPクライアントをPerlで作れよw
Net::FTP使えば、30分程度で作れるだろ。

739 名前:nobodyさん mailto:sage [2008/06/15(日) 01:43:42 ID:???]
っ coLinux
っ ActivePerl をC:\usr\local\以下にインストール

っ 「メンドクセーっ! 頭 #!perl に統一してやんよ。」(Path通ってなかったら知らん)

740 名前:738 mailto:sage [2008/06/15(日) 01:45:20 ID:???]
単純にPerlのパスが違うって問題なら、
XPでエイリアス作れるようにするソフト使って、iswebに合わせればいい。

741 名前:nobodyさん mailto:sage [2008/06/15(日) 01:52:33 ID:???]
>>737

■サーバー

#!/usr/local/bin/perl

require "example.cgi";

■ローカル

#!C:/perl/bin/perl

require "example.cgi";


これなら、example.cgi をアップするだけでOKです。
(意味が違うでしょうか??)


742 名前:nobodyさん mailto:sage [2008/06/15(日) 02:10:08 ID:???]
>>738-741
どうも、有難うございます。
>>741さんのが一番楽そうなので、それでいこうと思います。

どうもありがとうございました。

743 名前:nobodyさん mailto:sage [2008/06/15(日) 14:41:47 ID:???]
Perlでコードを書き始めたばかりの物なのですが、基本が少し分からないので質問させて下さい。

PerlでCGIを作っているのですが、いくつかのフォームから入力を取ろうと考えています。
フォームが一箇所ではないので(検索や書き込み、削除等)、送られて来る処理が全く違うため、
送られて来たフォームによって処理を変えたいです。
例えば、検索ならこの関数、書き込みならこの関数、のように分けたいのですが、どのように
実装するのがスマートな方法でしょうか?
考えているのはhiddenで、フォーム別の値を持っておきその値によって分岐しようと思っている
のですが、他にスマートな方法があれば知りたいです。

宜しくお願いします。




744 名前:nobodyさん mailto:sage [2008/06/15(日) 14:43:16 ID:???]
>hiddenで、フォーム別の値を持っておきその値によって分岐
これが一番一般的で分かり易いと思うよ

745 名前:nobodyさん mailto:sage [2008/06/15(日) 15:43:06 ID:???]
ところでお前ら、
postとらgetを使うときのデバッグってどうしてる?
コマンドラインからPOSTを設定する方法とかあるの?

めちゃめちゃ大変なんだが

746 名前:nobodyさん mailto:sage [2008/06/15(日) 17:13:16 ID:???]
>>743

仕様によりますが、動作の種類によって、
スクリプトそのものを分けてしまうのはどうでしょう。


747 名前:nobodyさん mailto:sage [2008/06/15(日) 17:51:51 ID:???]
受け取った値も表示するようにするかテキストに吐かせてるだけだけど、
そんなに面倒?

748 名前:nobodyさん mailto:sage [2008/06/15(日) 17:55:33 ID:???]
何をやってるのかよくわかんないけど、どうやってコーディングするかという問題より、
postでもgetでも、与えられる引数をちゃんとチェックすることで、自然と動作の分岐が行えると思うんだけど

749 名前:nobodyさん mailto:sage [2008/06/16(月) 02:30:03 ID:???]
質問者の想定とは違うかもしれないが、


 | ̄ ̄ ̄ ̄| [検索] [管理] [ほげほげ]
   ̄ ̄ ̄ ̄

みたいな感じなら、submit に文字列を仕込むという方法が。

750 名前:nobodyさん mailto:sage [2008/06/16(月) 10:59:18 ID:???]
でも文字化けという問題が...
ラジオかセレクト使えばいいと思う。
それかAjaxか

751 名前:nobodyさん mailto:sage [2008/06/16(月) 11:58:23 ID:???]
>>745
普通はユニットテスト用のロボット作るんじゃね?
使ってないけど、モジュールも何種類かあるはず。

752 名前:nobodyさん mailto:sage [2008/06/16(月) 12:17:52 ID:???]
じゃあ、まずは画面を見て情報を処理しキーボード操作する
ロボットのAIの開発からしなきゃだな。

753 名前:nobodyさん mailto:sage [2008/06/16(月) 12:26:02 ID:???]
>>752
そのAIのデバッグはどうするんですか。




754 名前:nobodyさん mailto:sage [2008/06/16(月) 12:53:21 ID:???]
ニワトリが先か タマゴが先か

755 名前:nobodyさん mailto:sage [2008/06/16(月) 23:32:06 ID:???]
真ん中をとってヒヨコが先だ






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

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

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