Perlコーディング初心者質問スレ Part 57at PHP
Perlコーディング初心者質問スレ Part 57 - 暇つぶし2ch643:nobodyさん
08/06/02 14:47:28
>>642
%mons = (
Jan => 1, Feb => 2, Mar => 3, Apr = 4, # ……以下省略
);
$mon = $mons{$mon};

とかどうよ?

644:nobodyさん
08/06/02 15:22:18
>>643
ありがとうございます。
連想配列は普段全く使わないので、この機会に試してみます!

645:nobodyさん
08/06/02 15:44:50
>>643は、どうせ後で1引くのに、どうしてわざわざ1足すのさ?w

646:nobodyさん
08/06/02 16:15:30
>>645
ほんとだ><
お前頭いいな
すみません><

647:nobodyさん
08/06/02 17:46:33 VCfcjQkN
CPANを使わずにモジュールを使いたいのですが、なかなかうまくいきません。
HTML::Template を使いたいのですが、

ローカルにインストールしている、
C:\Perl\cpan\build\HTML-Template-2.9\Template.pm
というファイルを、以下のcgiと同ディレクトリにコピーしました。

#!/usr/local/bin/perl
use strict;
use lib qw(.);
use HTML::Template;
print "Content-type:text/html\n\n", "test";

ですが、うまくいかないようです。
use lib qw(.); の部分を、
unshift @INC, '.';
などとしても不可能でした。
ググっても上記の方法ぐらいしか出てこないんですが、何がいけないか教えていただけますでしょうか。
Perl のバージョンは 5.00503 です。

648:nobodyさん
08/06/02 17:51:49
Template.pmをHTMLというディレクトリを作ってそこにいれる

649:nobodyさん
08/06/02 18:08:23 VCfcjQkN
>>648
ありがとうございます。
助言どおりHTML ディレクトリにTemplate.pmを入れて、エラーが出たので、
Digest::MD5がどうだとかエラーが出ました。
同じ要領で、Digest ディレクトリを作り、MD5.pmを入れると、
次はXSLoader.pmが必要らしく、それもcgiと同ディレクトリに入れました。
次はDynaLoader.pmがどうとかエラーが出たので、それも同じディレクトリに入れたのですが、
今度はエラーが消えませんでした。。
最終的にCGI::Carpがはいたエラーは以下です。

[Mon Jun 2 18:01:45 2008] Template.pm:
[Mon Jun 2 18:01:45 2008] Template.pm:
[Mon Jun 2 18:01:45 2008] MD5.pm:
[Mon Jun 2 18:01:45 2008] MD5.pm:
[Mon Jun 2 18:01:45 2008] DynaLoader.pm: Can't locate loadable object for module Digest::MD5 in @INC
(@INC contains: /usr/lib/perl5/5.00503/i386-linux /usr/lib/perl5/5.00503 /usr/lib/perl5/site_perl/5.005/i386-linux /usr/lib/perl5/site_perl/5.005 .) at HTML/Template.pm line 915
[Mon Jun 2 18:01:45 2008] Template.pm:
[Mon Jun 2 18:01:45 2008] Template.pm: BEGIN failed--compilation aborted at HTML/Template.pm line 915. BEGIN failed--compilation aborted at test.cgi line 6.

650:nobodyさん
08/06/02 18:17:18
CPAN にモジュールの関連性とか書いてなかったっけ?

651:nobodyさん
08/06/02 18:18:22
関連性とかじゃなくて依存のこと

652:nobodyさん
08/06/02 18:25:00 VCfcjQkN
URLリンク(q.hatena.ne.jp)
↑必要としているモジュールは違うものの、
この人と同じ状況なのかな、と思うんですがどう思いますか?

同じ状況だとすると、不可能ですよね
FTPであげることしかできませんので。。。

653:nobodyさん
08/06/02 18:41:40
呼び出されてるDLLがWin用のコンパイル済みDynaLoader.pmを、Linuxにそのままコピーしたんでしょ? たぶん。
Linuxでコンパイルし直さないとムリ。よってムリ。

654:nobodyさん
08/06/02 18:45:29 VCfcjQkN
あぁ・・・やはり無理ですか。

5.00503で使えるHTML::Templateの代わりのようなものがほしいんですが、
どこを探せばいいでしょうか。
何度も申し訳ありません。

655:nobodyさん
08/06/02 18:52:18 VCfcjQkN
HTML::Templateの昔のバージョンとかなら5.00503でも動きますかね?

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

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

657:nobodyさん
08/06/02 18:59:25
HTML をテンプレート使って出力するようにすると病み付きになる

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

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

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

660:nobodyさん
08/06/02 19:49:04
自分の未熟さを言語のせいにするなよw
HTMLと最も親和性のある言語として、Perl/CGIが一世風靡しただろ。

661:nobodyさん
08/06/02 19:51:49
>>657
kwsk

662:nobodyさん
08/06/02 19:59:46
>>661
ちょっとかじった程度の人でもデザイナーとプログラマを切り分けられる利点がある

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

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

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

664:nobodyさん
08/06/03 01:01:53
multipart/form-data って文字があるのか application/x-www-form-urlencoded って文字があるのかで簡単に判別着く
multipart/form-data の処理は CGI.pm 使ってね♪

665:nobodyさん
08/06/03 01:12:56
>>663
CGI.pm ならどちらの形式でも意識せず受け取れる。
URLリンク(perldoc.jp)

自前実装したいのなら
URLリンク(www.studyinghttp.net)
URLリンク(www.asahi-net.or.jp)
URLリンク(www.studyinghttp.net)

666:nobodyさん
08/06/03 01:24:31 etSjPPZK
>>665
ありがとう!

667:nobodyさん
08/06/03 01:58:53
>>659
テンプレートエンジン、自分で作るという手もある。
そんなに難しくないよ。
Compositeパターンでも使えば。


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

たったこれだけです。


669:nobodyさん
08/06/03 11:07:04
Template::Toolkitならともかく
HTML::Templateは単純な処理だしね
さくっと使いたい時には便利、無けりゃ無いでどうにでもなる

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

671:nobodyさん
08/06/03 13:31:41
index.cgi で処理させる内容を挙げてくれないとまったくわからない

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

672:nobodyさん
08/06/03 17:01:51
多分聞きたい事って、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さん
08/06/03 17:44:51
>>670
俺それやってる
wikiみたいに書けるテキストファイルを自動で携帯/PCに最適化してValid XHTML出力する、みたいな。

674:nobodyさん
08/06/03 17:56:29
bloxsomだっけ?

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

676:nobodyさん
08/06/03 20:52:43
URLリンク(www.drk7.jp)
ここの 東京の 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さん
08/06/03 21:13:48
[1]->'#text'

ダンプしろよ

678:nobodyさん
08/06/03 21:21:10
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
08/06/03 22:25:48 etSjPPZK
言葉が足りんでした。スミマセン。

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

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

教えてLarry!!

680:nobodyさん
08/06/03 22:40:04
つか、ほとんどのWEBアプリケーションは、特定ファイルに負荷集中するがな。

681:670
08/06/04 00:28:11 KcodebuX
>>680
あ、じゃあ余計な心配しなくて大丈夫かぁ

682:nobodyさん
08/06/04 01:09:20
つ mod_perl

683:nobodyさん
08/06/04 05:38:01

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

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

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



684:nobodyさん
08/06/04 06:05:53
自分で調べられる手間を人に仮託するな。

685:nobodyさん
08/06/04 08:14:25
>>670
>>672に答えが書いてあるのだが、何故それを無視する?

686:nobodyさん
08/06/04 10:13:14
どなたか教えてください。

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

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


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

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

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


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

687:nobodyさん
08/06/04 10:15:53
jfold

688:686
08/06/04 10:27:56
2分での光速のお返事ありがとうございます。

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

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

689:670
08/06/04 13:24:15 44uKn/lk
>>685
スミマセン基地外でした。

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

691:nobodyさん
08/06/05 00:28:25
ごめんなさいごめんなさい

692:nobodyさん
08/06/05 22:21:15
Cか何かでやってる人いたな。

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

694:nobodyさん
08/06/06 01:28:23
>>693
スレリンク(php板:85番)
Perl の自然言語的体裁には switch-case より given-when の方が
よりしっくりくるかもね。

695:nobodyさん
08/06/07 20:54:21 8brPzE2o
URLリンク(www.vid-dl.net)

このサイトに
URLリンク(v.youku.com)
を入力するとリンク先が4つほどでます。

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

URLリンク(f.youku.com)までは一緒以下が

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さん
08/06/07 21:00:16
一部の0に1足してるだけじゃないの?

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

698:nobodyさん
08/06/07 21:33:39
>>697
youkufireかなんかAPI使ってるんだろ。
Perlとは関係ないな。

699:nobodyさん
08/06/07 21:43:36 8brPzE2o
>>698
???
それではyoukufireではどうやってやってるんでしょうか?

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


アドバイスお願いします

700:nobodyさん
08/06/07 22:34:21
HTTPに関して勉強して下さい。
全くのスレ違いです。

701:nobodyさん
08/06/07 22:55:37 8brPzE2o
http???
他で質問してみます。ありがとうございました。

702:nobodyさん
08/06/07 23:03:35
いや、どこで質問しても無駄だと思うよ。
結局、HTTPレスポンスを解析する必要があるから。

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

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

703:nobodyさん
08/06/07 23:36:39 8brPzE2o
なるほど。
URLリンク(www.kasai.fm)
URLリンク(www.kasai.fm)
からとりあえずそのhttpレスポンスとやらを実際に見てみようと思いましたが。

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

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


704:nobodyさん
08/06/07 23:53:12 8brPzE2o
すいません
getHTTPの

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

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

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

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

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

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

707:nobodyさん
08/06/08 14:55:02
オブジェクトにメソッドを足すにはどうしたらいいでしょうか?

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

アレ?

708:nobodyさん
08/06/08 16:56:29
>>707
基本から一通り勉強し直したらいいんじゃないかな。
URLリンク(www.kt.rim.or.jp)
URLリンク(www.kt.rim.or.jp)

709:nobodyさん
08/06/08 18:03:33
>>708
サンクス

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

ワロタ

710:nobodyさん
08/06/08 18:41:29 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さん
08/06/08 18:52:18
OOPじゃなくて、perlの基本からやり直しては。
*{foo::hoge::bar} じゃなくて *{foo::bar}
hogeなんていうpackage作ってないし。



712:nobodyさん
08/06/08 19:09:16
> hogeなんていうpackage作ってないし。 !
それだ! ありがとうやっとわかったよ。
てっきり package a::b::c;
ってやると

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

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


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

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

714:nobodyさん
08/06/08 20:20:35
Perl DBI MySQL

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

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

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

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





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

717:nobodyさん
08/06/09 12:35:45
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さん
08/06/09 15:41:11
もうメンドクセーから、bind_columns()とfetch()にすれば?
生えーぞ。

719:nobodyさん
08/06/09 16:00:10
生いいよね

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

721:nobodyさん
08/06/09 23:24:50
122
11
11000
↑これをソートすると

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

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

722:nobodyさん
08/06/09 23:26:19
sort { $a <=> $b } ( 122, 11, 11000 ) ;

723:nobodyさん
08/06/09 23:36:47
>>722さん、ありがとうございました。

724:nobodyさん
08/06/13 02:38:01
ファイルのアップロードについて質問です

*** 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さん
08/06/13 09:17:11
>>724
ブラウザから渡されるデータ自体に type 属性の値が含まれて
いないのだから、CGI プログラム上から調べる事はできない。

ref $value でアタリを付ける事はできる。
URLリンク(perldoc.jp)
URLリンク(perldoc.jp)
(「ファイル・アップロード・フィールドの作成」の項)

726:nobodyさん
08/06/13 10:25:57
@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さん
08/06/13 10:51:23
>>726
>>3

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

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

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

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


730:nobodyさん
08/06/13 11:37:27
@id = sort { $unit->{$a}->{point} <=> $unit->{$b}->{point} } @id

731:724
08/06/13 12:09:38
>>725
やはりtypeは知りようがないのですね。
ご回答ありがとうございました。

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


733:nobodyさん
08/06/13 12:51:42
>>732
sortでなんで$_がでてくるのかわからない。$aと$bしかないだろ。
grepやmapと混乱してないか?

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


735:nobodyさん
08/06/14 03:33:00
俺も今多次元ハッシュ使ってるけどコツがわかると便利で気に入ってる。

736:nobodyさん
08/06/15 00:12:38
ちょっとした構造体風の物を作るのにいいよね
リファレンスで受け渡しも簡単だし


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

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

738:nobodyさん
08/06/15 01:43:19
それこそローカルと同期させる専用FTPクライアントをPerlで作れよw
Net::FTP使えば、30分程度で作れるだろ。

739:nobodyさん
08/06/15 01:43:42
っ coLinux
っ ActivePerl をC:\usr\local\以下にインストール

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

740:738
08/06/15 01:45:20
単純にPerlのパスが違うって問題なら、
XPでエイリアス作れるようにするソフト使って、iswebに合わせればいい。

741:nobodyさん
08/06/15 01:52:33
>>737

■サーバー

#!/usr/local/bin/perl

require "example.cgi";

■ローカル

#!C:/perl/bin/perl

require "example.cgi";


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


742:nobodyさん
08/06/15 02:10:08
>>738-741
どうも、有難うございます。
>>741さんのが一番楽そうなので、それでいこうと思います。

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

743:nobodyさん
08/06/15 14:41:47
Perlでコードを書き始めたばかりの物なのですが、基本が少し分からないので質問させて下さい。

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

宜しくお願いします。


744:nobodyさん
08/06/15 14:43:16
>hiddenで、フォーム別の値を持っておきその値によって分岐
これが一番一般的で分かり易いと思うよ

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

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

746:nobodyさん
08/06/15 17:13:16
>>743

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


747:nobodyさん
08/06/15 17:51:51
受け取った値も表示するようにするかテキストに吐かせてるだけだけど、
そんなに面倒?

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

749:nobodyさん
08/06/16 02:30:03
質問者の想定とは違うかもしれないが、


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

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

750:nobodyさん
08/06/16 10:59:18
でも文字化けという問題が...
ラジオかセレクト使えばいいと思う。
それかAjaxか

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

752:nobodyさん
08/06/16 12:17:52
じゃあ、まずは画面を見て情報を処理しキーボード操作する
ロボットのAIの開発からしなきゃだな。

753:nobodyさん
08/06/16 12:26:02
>>752
そのAIのデバッグはどうするんですか。


754:nobodyさん
08/06/16 12:53:21
ニワトリが先か タマゴが先か

755:nobodyさん
08/06/16 23:32:06
真ん中をとってヒヨコが先だ

756:nobodyさん
08/06/17 00:45:20
>>745
CGI.pm を使うなら
use CGI qw(-debug);

757:nobodyさん
08/06/17 10:41:46
>>745

実際に色々な条件でPOST、GETさせてみて、
おかしくなったらそのつど、修正します。

あとは、スクリプトをWEB上にアップしている場合、
ユーザーの方からのバグ報告フォームを設けておくと、
問題発見が早くなります。


コマンドライン POSTで検索:
URLリンク(www.google.co.jp)

758:nobodyさん
08/06/17 12:33:48
>>757
500が帰ってきたとき、どこが悪いかどう見当つけてるかってはなしでしょ

759:nobodyさん
08/06/17 14:47:07
なんでTest関係のモジュール使わないの?マゾなの?

760:nobodyさん
08/06/17 16:37:40
世の中には君の環境と違う環境の人もいるのだよ

761:nobodyさん
08/06/17 18:26:54
> 世の中には君の環境と違う環境の人もいるのだよ

意地はってないで、「わかりません!教えてください!」っていうのがオトナだよ

762:nobodyさん
08/06/17 18:42:33
> 意地はってないで、「わかりません!教えてください!」っていうのがオトナだよ

意地はってないで、「詳しいことはわかりません!!」っていうのがオトナだよ


763:nobodyさん
08/06/17 18:53:23
URLリンク(www.google.co.jp)

764:nobodyさん
08/06/18 12:33:38
つまらん('A`)1

765:nobodyさん
08/06/18 14:54:32
Encode::guess_encoding の結果が shiftjis or euc-jp ってなったときで困ってます。
guess_encoding のあとに $utf8 = $enc->decode($inputkeyword); とやってるのですが、エラーとなります。
「 or 」 で split して
my $utf8 = Encode::decode($EncType[0], $inputkeyword);
のようにしたりするのが一般的なんでしょうか?

それとも Encode::decode する際に優先順位を決めたり出来て、それで decode できちゃったりするもんでしょうか?

766:nobodyさん
08/06/18 15:02:39
>>765
一般的かどうかは知らんが、俺は JEncode::_func_getcode() みたいな
ラッパーを書いて使っている。
URLリンク(www.donzoko.net)

767:nobodyさん
08/06/18 15:25:31
>>766
ありがとうございます。
_func_getcode と _ambiguous、_test_mojicode を見ながら実装します。

768:nobodyさん
08/06/20 01:13:32
@X0(a,b,c);
@X1(d,e,f);
と二つリストを作って、
$Y = int(rand(2));
で$Yに0か1を入れて、それに対応したリストを使いたいのですが、どうすればいいですか?
print "$X"$Y"[1]";
のような感じにしたいのですが…。

769:nobodyさん
08/06/20 01:41:21
print @{'X'.$Y};

770:nobodyさん
08/06/20 01:43:48
あ、スライスか
print @{'X'.$Y}[1];

771:nobodyさん
08/06/20 01:53:59
>>770
カッコイー

こんな風にしてた。
$Y = 'X'. int(rand(2));
print ${$Y}[1];

横からスマソ

772:768
08/06/20 02:20:58
>>769-771
素早い回答ありがとうございます。

773:nobodyさん
08/06/20 08:10:04
>>769-771
今時シンボリックリファレンスはやめとけ。
use strict;
my @X = [[a,b,c], [d,e,f]];
print $X[0]->[1]; # ==b ($X[0][1] とも書ける)
print $X[1]->[2]; # ==f

774:770
08/06/20 12:31:24
>>773
>>768に言ってくれ
前提条件に合わせてわかりやすく書いただけだ

775:768
08/06/21 17:41:30
昔やってたEBSってゲームを引っ張り出して弄ってる初心者なので、
バカの一つ覚え状態でかいてます><
>>773の書き方は始めてみました。
ありがとうございます。

776:nobodyさん
08/06/21 17:48:55
ここらへんにいる連中にへりくだる必要ないと思うよ。

777:nobodyさん
08/06/21 23:46:21
配列やハッシュでリファレンスを使うことを覚えると、かな~り違うよ。


778:nobodyさん
08/06/22 01:48:39
>>773
s[\[\[.*\]\]][([$1])]

779:778
08/06/22 01:49:38
s[\[\[(.*)\]\]][([$1])] # キャプチャし忘れたorz


780:nobodyさん
08/06/22 02:10:15
perlにjavaの.propertiesファイルみたいなのはないでしょうか?
ちょっとしたデータをファイルの中にまとめておければ便利だと思っているのですが、
そのような奴があれば、助かります。どなたかご教授ください。

781:nobodyさん
08/06/22 02:24:11
>>780
Data::Properties

782:nobodyさん
08/06/22 13:05:18
外部コマンドの出力結果の取り込みがうまくいきません、なぜなんでしょうか?

open(COM_RET, "ping -n 10 192.168.100.1 |");
while ($data_line = <COM_RET>) {
print $data_line;
};
close(COM_RET);


783:nobodyさん
08/06/22 13:27:13
なにも表示されないってこと?
pingコマンドは存在する?
openの後に$|=1;したら表示される?
for (`ping -n 10 192.168.100.1`){print;}ではどう?



784:782
08/06/22 13:28:07
すみません。
プログラムの保存先を間違えていました。

785:nobodyさん
08/06/25 22:01:59
Google Wireless Transcoder経由でアクセスされるとpostで送信されてくる
フォームのデータがおかしくなってたことありませんか?
たとえば、なにも入力しなかったinputフォームの値が全て文字列の"VALUE"に
なったり・・・

786:rubi
08/06/26 00:32:36 P35F8OvT
system関数で外部コマンドを実行する際、その引数にプログラム内で使用しているスカラ変数の内容を指定するのにはどうすればいいのでしょうか?


787:nobodyさん
08/06/26 00:55:50
system($cmd $arg1 $arg2 ・・・);

引数中にスペース等ある時は、
system qq($cmd "$arg1" "$arg2" ・・・);

788:nobodyさん
08/06/27 16:35:38
すみません知恵を貸してください。
こんなファイルがあります → 項目\tデータ\n

中には同じ項目でデータ違いがあります。
100\t百\n
100\t百円\n
100\t百円玉\n

同じ項目は一つで良いので一番データの短い100\t百\nを残して
残りの長い二行を削除したいと考えています。
何か良い方法は無いでしょうか。
短いデータのみ残したいので配列の重複削除サンプルは
そのままでは利用不可でした。

789:788
08/06/27 16:38:10
…と、そもそも重複ではないですね。
重複サンプル~以下は忘れてください。

790:nobodyさん
08/06/27 17:02:39
とりあえず書いてみろ

791:788
08/06/27 17:30:24
普段はスカラーと配列くらいしか使ってません。
項目もデータもバラバラなので方法が思いつかなくて。

792:nobodyさん
08/06/27 17:41:01
連想配列

793:788
08/06/27 17:59:26
初めは$DATA{項目} = データ; で一つだけ残そうと考えました。
そうじゃなくて、連想配列にしてデータサイズでソートとかあるんでしょうか?
分かりません(><)

794:nobodyさん
08/06/27 18:21:02
連想配列にしてデータサイズでソートすりゃいいだろ

795:nobodyさん
08/06/27 18:27:40
書かないってことはまだなにも書けない状態ってこと?
まずはopenでファイル開けるの解かる?

796:788
08/06/27 18:50:29
>>795
連想配列に入れてみました。

my %DATA;
open R, "koumoku.txt" or die;
while (<R>) {
chomp;
my ($key, $value) = split(/\t/);
$DATA{$key} = $value;
}
close R;

データサイズでソートは後でググってみます。
項目ごとに最短データだけ残す方法は今の時点で想像できません。。

797:nobodyさん
08/06/27 19:15:25
そこまで出来てるならあとは場合わけでしょ

if (exists $DATA{$key}){
length($DATA{$key}) > length($value) and $DATA{$key}= $value;
} else {
$DATA{$key}= $value;
}

798:nobodyさん
08/06/27 19:47:44
>>797
食事してて遅れました。
そのままコピペしたのですが望むとおりです完璧です。
項目ごとに一番小さいデータが残る。凄い考え付かない。
本当にありがとうございました。

799:nobodyさん
08/06/28 13:36:15
◆◆◆◆◆◆◆◆◆毎日新聞社による日本人への誹謗中傷◆◆◆◆◆◆◆◆◆

・母親は受験勉強をする息子の学力向上のためにフェラチオをする
・日本人女性の55%は、出会ったその日に男と寝る
・ファストフードは女子高生たちを性的狂乱状態におとしいれる
・ティーンたちはバイアグラを使ってウサギのようにセックスをする
・女子高生は、刺激のためにノーブラ・ノーパンになる
・日本の最新の流行 : 70歳の売春婦
・老人の売春婦の人気にもかかわらず、日本では小学生の売春婦にも仕事がある
・日本の若い看護婦は売春婦に勝る
・24時間オルガズムが止まらない病気で苦しむ日本人女性の数が増えている
・15未満の子供を対象とした疑似ポルノが日本に蔓延している
・OLの72%が、セックスをより堪能するために何らかのトレーニングを受けている
・人妻は気分転換の目的で昔の恋人に抱かれに行く
・主婦は郊外のコイン・シャワーで売春をしている
・日本男子は柔道や空手の部活で男相手に童貞を捨てている
・ほとんどすべての漁師は海でマンタとSEXしている
・まだ10代の少年から退職した老人までみんな2980円の手コキを利用している
・六本木のあるレストランでは、食事の前にその材料となる動物と獣姦する

※同社が全年齢向けコーナーで七年以上にわたり世界に向けて配信していたものの一部です
※同社の行為は日本人への偏見や人種差別、婦女暴行、幼児虐待を助長するものです

◆毎日新聞の英語版サイトがひどすぎる まとめ@wiki
 URLリンク(www9.atwiki.jp)
◆毎日新聞問題の情報集積wiki
 URLリンク(www8.atwiki.jp)

つまり日本人なら
URLリンク(www.vipper.net)

800:nobodyさん
08/06/29 21:21:31 ib7dTQ8m
シンタックスハイライト用のモジュールでオススメってありますか?
Syntax::Highlight::Engine::Kateはちょっと好みじゃなかったのと、
Text::Highlightは今のところ使い方が分からないの。


801:nobodyさん
08/06/29 21:37:01
Text::VimColor

802:nobodyさん
08/06/29 23:14:30
ありがとう。日本語が上手くいかず。

803:nobodyさん
08/07/03 04:34:06 N0WlacZt
日本人がイスラム過激派に狙われる可能性もあります

220 名前: 名無し三等兵 [sage] 投稿日: 2008/06/30(月) 00:35:59 ID:???
イスラムや胡錦濤の記事にもhentai入ってて
ニュー速の連中がアルジャジーラとかにメールしようとして
鬼女が止めに入ったり、なかなかわかってるなぁと。

262 名前: 名無し三等兵 [sage] 投稿日: 2008/06/30(月) 00:43:47 ID:???
つーか原理主義者は日本に入り込んでいるし組織もあるから
原理主義者によって白昼堂々人通りのある場所で首を掻き切られて
助教授が殺されて犯人が何も特定できていないわけで・・・

297 名前: 名無し三等兵 [sage] 投稿日: 2008/06/30(月) 00:51:28 ID:???
>>272
いや・・・それが・・・
タレコミより前に韓国でコーランが焼かれたと報道されてて
アルジャジーラTVより韓国でコーランを燃やす映像が放映され、アラブ諸国でさまざまの反応が出ている。
・その映像を見た老人がショック死(サウジアラビア)
・その映像を見た青年ら十数人が韓国大使館に投石(シリア)

★祭り★ 「日本の母は息子の性処理係」毎日新聞が捏造記事41
スレリンク(ms板)
★祭り★ 【毎日・変態報道】 毎日新聞、「2ちゃんねる」を名指し…「女性社員中傷書きこみで法的措置」で★26
スレリンク(newsplus板)
【記者】毎日新聞の英語版記事で日本を侮辱【豪人】
スレリンク(english板)
【Daily】毎日新聞英語版がひどすぎる 3【WaiWai】
スレリンク(mass板)
【毎日新聞】 iチャネル解約スレ 【変態報道】
スレリンク(keitai板)


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch