Perlコーディング初心者質問スレ Part 57
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2008/02/25(月) 19:25:51ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
お勧めサイトは >2 以降
前スレ http://pc11.2ch.net/test/read.cgi/php/1189939783/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0002nobodyさん
2008/02/25(月) 19:26:15ID:???[プログラミング自体の経験が無い奴はまずココを読め]
Perlプログラミング講座: ttp://www.site-cooler.com/kwl/perl/
[本]
リャマ: ttp://www.oreilly.co.jp/books/4873111269/
駱駝: ttp://www.oreilly.co.jp/books/4873110963/
Effective Perl: ttp://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html
クックブック: ttp://www.oreilly.co.jp/books/4873112028/
Perl ベストプラクティス: ttp://www.oreilly.co.jp/books/4873113008/
Perl Hacks: ttp://www.oreilly.co.jp/books/9784873113142/
[オンラインマニュアル] (追加)
最新のドキュメント: ttp://search.cpan.org/dist/perl-5.8.8/
perl5.8.xのドキュメント(一部): ttp://www.kt.rim.or.jp/~kbk/perl-5.8/
perl5.005_03 のドキュメント: ttp://www.kt.rim.or.jp/~kbk/perl5.005/
日本語ドキュメント検索: ttp://www.cpan.jp/search.cgi
perldoc.jp: ttp://www.perldoc.jp/
Perldoc.com: ttp://www.perldoc.com/
0003nobodyさん
2008/02/25(月) 19:26:39ID:???[モジュール]
CPAN.com: ttp://search.cpan.org/
河馬屋二千年堂: ttp://homepage3.nifty.com/hippo2000/
[テクニック]
Perlメモ: ttp://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: ttp://homepage1.nifty.com/nomenclator/perl/
Perlの小技: ttp://homepage3.nifty.com/hippo2000/perltips/index.htm
[Perl5.8Unicodeメモ]
ttp://www.pure.ne.jp/~learner/program/Perl_unicode.html
ttp://www.namazu.org/~tsuchiya/perl/perl-5.8.html
ttp://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
0004nobodyさん
2008/02/25(月) 22:05:56ID:???ttp://digit.que.ne.jp/work/wiki.cgi?Perl%e3%83%a2%e3%82%b8%e3%83%a5%e3%83%bc%e3%83%ab%2fWWW%3a%3aMixi
↑のHPのコードを動かしているんですが、
500 Can't locate object method "configure" via package "Net::HTTP"
というエラーが出ます。同じCGIをXREAで動かした場合は正常に動作しました。
これはどういった理由でエラーが起こっているんでしょうか?
0005nobodyさん
2008/02/25(月) 22:17:42ID:???鯖にモジュールがインストールされてないんじゃない?
/usr/lib/的なフォルダに/Net/HTTP.pmを入れてみたら?
0006nobodyさん
2008/02/25(月) 22:28:05ID:???確認してみたのですが、HTTP.pmは既にモジュールとして入っていました。
HTTPというフォルダも同じ場所にあったので、競合してるのかなと思い名前などを弄ってみたのですが、
フォルダ名をいじった場合でもHTTP.pmを移動した場合でも、エラーは
501 Can't locate object method "new" via package "LWP::Protocol::http"
となりました。LWP/Protocol/http.pmも既に入っていました・・・orz
0007nobodyさん
2008/02/25(月) 22:31:43ID:???http://www.google.co.jp/search?hl=ja&client=firefox-a&channel=s&rls=org.mozilla%3Aja%3Aofficial&hs=wkI&q=Can%27t+locate+object+method++Perl&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja
0008nobodyさん
2008/02/25(月) 23:24:10ID:???1つ目のCGIを実行中にエラーが起きた時に$ERROR=1等として
エラーフラグに数値を入れて、その値を2つ目のCGIに渡して
2つ目のCGIでエラーメッセージを表示させたいのですが、
色々調べているのですが上手く行きません。
何か上手く2つ目のCGIに値を渡す方法がありましたら、
よろしくお願いします。
0009nobodyさん
2008/02/25(月) 23:44:14ID:JDOb3tEVAフォルダの中身はこれが全てでこれを全部開きたいのです。
open(FILE, '10.txt') or die "$!";
while (my $line =<FILE>) {
print $line;
}
close(FILE);
これだと一つのファイルの中身は見れますが、フォルダの中全てを開きたい
僕にとってこれは違う気がします。
なんとか、方法はないでしょうか?宜しければ教えてください。
0010nobodyさん
2008/02/25(月) 23:55:34ID:???>>2
http://www.site-cooler.com/kwl/perl/6.htm#6-4
0011nobodyさん
2008/02/26(火) 01:25:07ID:???あるメソッドが、自分自身のクラス内のクラスメソッドを呼び出すには
どのように書いたらよいでしょうか。
クラスメソッドは普通Package->hoge()とするようですが、
自分自身のパッケージをわざわざ書くのが正しいのかと
疑問に思いました。よろしくお願いします。
0012nobodyさん
2008/02/26(火) 01:59:04ID:???0013nobodyさん
2008/02/26(火) 02:33:17ID:???0015nobodyさん
2008/02/26(火) 09:29:48ID:???XAMPPには詳しくないですが、
出力とは別にエラーログに書かれてないですか?
XAMPP/log/error.logみたいに
0016nobodyさん
2008/02/26(火) 11:40:40ID:???カレントディレクトリを最優先したいので、
unshift @INC, pop @INC; ってしたいと思うんですが、
環境によってうまくいかなかったりします?
自分の環境で@INCを表示すると
C:/usr/site/lib C:/usr/lib . となるんですが、
unshift @INC, '.';のほうが良いんですかね?
0017nobodyさん
2008/02/26(火) 11:59:34ID:???0018nobodyさん
2008/02/26(火) 12:45:05ID:???use lib '.'; で良きに計らってくれる。
http://search.cpan.org/src/RGARCIA/perl-5.10.0/lib/lib_pm.PL
5.00503 の lib.pm だと重複除去をしてくれないから
BEGIN {
my %dup;
@INC = grep !$dup{$_}++, ('/path/to/your/extlib', @INC);
}
なんて書いたりするけど。
0019nobodyさん
2008/02/26(火) 13:03:29ID:???use FindBin;
use lib $FindBin::Bin;
で解決しました。
重複してるけど、除去しなくても
確実にカレントディレクトリで見つかれば問題ないですよね?
0020nobodyさん
2008/02/26(火) 15:20:10ID:???apacheのerror.logならあるのですが、
perl実行時のエラーを吐き出しているlogはありませんでした。
WWW:Mixiで使っているモジュールがあるかどうかなども確認したのですが、
全て揃っていて、Winの自鯖なので権限なども関係ないと考えているのですが・・・解決しません。
0021nobodyさん
2008/02/26(火) 16:11:53ID:rftlSzSy切り替えることをおすすめしますよ。
0022nobodyさん
2008/02/26(火) 16:27:13ID:???XAMPPとかWWW::Mixiがどんな仕様か詳しくは知らないけど、
普通のPerl-CGIなら、そのApacheのerror.logにエラーが出力されてるハズ。
0023初心者
2008/02/28(木) 15:16:09ID:GDQH6oGX方法をどなたか教えてください。
0024nobodyさん
2008/02/28(木) 15:55:55ID:???http://search.cpan.org/dist/Date-Calc/
http://perldoc.jp/docs/modules/Date-Calc-5.3/Calc.pod
use Date::Calc qw(Day_of_Week);
my $dow = Day_of_Week($year,$month,$day);
0025nobodyさん
2008/02/28(木) 15:57:12ID:???$^OでOS名は取れるのですが…
現在はシステムの`date /t`の戻り値を見て判断しています。
0026初心者
2008/02/28(木) 16:11:55ID:GDQH6oGX出来ればモジュールを使わずに日数を計算する方法はないんでしょうか?
0029nobodyさん
2008/02/28(木) 16:55:57ID:???http://homepage3.nifty.com/hippo2000/perltips/Win32/OLE/NLS.htm
0030nobodyさん
2008/02/28(木) 17:21:40ID:???ログインスクリプト作ってるんですが
最初の画面でhttpかhttpsを選択
httoの場合は普通に次の画面でCookie食べておしまい
https(SSL)の方はpost後代理鯖(共有SSL)でCookie食べる
locationで元の鯖に飛ばしてhttpの方もCookie食べる
という処理なのですがlocationなので当然丸見えなんです。。。
何かスマートな方法ありましたらご教示願います。
0032nobodyさん
2008/02/28(木) 21:20:30ID:???下ページを取得しようとすると、CPU使用率が100%になったままで
応答がなくなり?ます。ページも取得できません。
こんな場合、途中で諦めたいのですが、タイムアウトを設定しても変化なし。
どうすれば良いかアドバイスお願いします。
#!/usr/bin/perl
use strict;
use LWP::UserAgent;
my $url = 'http://www.mother-house.jp/ceo/2006/10/post.html';
print "$url\n";
my $ua = LWP::UserAgent->new;
$ua->timeout(30);
my $request = HTTP::Request->new(GET => $url);
$request->header('Pragma' => 'no-cache');
my $response = $ua->request($request);
if ($response->is_success) {
print $response->content;
} else {
print "(´・ω・`)ショボーン\n";
}
exit;
0033nobodyさん
2008/02/28(木) 22:07:20ID:???たぶんメモリが足りないだけなんじゃないかな
$ua->max_sizeで上限決めたりヘッダにrange付けて小分けにリクエスト投げるといい
0034nobodyさん
2008/02/28(木) 22:32:37ID:???そんなに大きかったのですか!w
すみません、でもお陰で$ua->max_sizeを知ることができましたし、
デフォルト無制限なのを知ることも出来ました。
どうもありがとうございました。
0035nobodyさん
2008/02/28(木) 23:44:29ID:txq/MTXf上記データのnum2をキーにしてをsortを行うことは可能でしょうか。
もし可能でしたら方法をご教示いただけますと幸いです。
宜しくお願いします。
0036nobodyさん
2008/02/29(金) 00:12:26ID:???0037nobodyさん
2008/02/29(金) 01:24:59ID:??????
そのページ30MB位しかないぞ。
content-lengthも29239056ってなってるし。
たしかにブラウザで開いたらCPU100%で1分くらい固まったけど・・。
でも、取得できたから、保存して、テキストエディタで開いてみたら、やっぱり30MBくらいだったぞ。
>>32
で、LWPなんだが、ウチの環境でも、ファイルサイズが大体3〜4メガ位より大きくなると、
とたんに反応が無くなる。ちなみにメモリは1G積んでて、余りも800M以上ある状態で・・・。
何故だかはわからん。
ちょっとソース読んでみるか。
0038nobodyさん
2008/02/29(金) 01:31:25ID:???まあ、そういうことがしたいってことなら仕方ないけど、そういう非常識なサイト対策って意味で、
>>33-34あたりの対策をしておく必要があるんだなっていう意味で参考になった。
0039nobodyさん
2008/02/29(金) 12:47:11ID:???3Gと勘違いしてて実行しなかったけど
今試してみたら引っかかることなく問題なく取得できたよ
colinuxでメモリ126M割り当て
$ perl -v
This is perl, v5.8.8 built for i386-linux-thread-multi
$perl -MLWP::UserAgent -e 'print $LWP::UserAgent::VERSION'
2.036
004030
2008/02/29(金) 15:29:10ID:???失礼しました
0041初心者
2008/02/29(金) 17:30:27ID:VfFNtRxq日 月 火 水 木 金 土
| | | | | | 1 | 2|
_ _ _ _ _ _ _ ← 線はもっとうえに
うまく書けてなくて申し訳ないですが、数字を囲むような形で常に5行表示させるには
どうしたらよいでしょうか。どなたか教えてください。
0043nobodyさん
2008/02/29(金) 18:16:34ID:???2進数から10進数に変換したいんですけど
どうすればできますか?
>>41
テーブルタグでも使ったほうがいいんじゃないですか?
004443
2008/02/29(金) 18:22:40ID:???$a = 10101010;
となっている場合に
$a = '0b' . $a;
$dec = oct $a;
のようにしてます。
もっとスマートに0bを付けられないでしょうか?
0045nobodyさん
2008/02/29(金) 18:33:58ID:???my $dec = oct "0b$a";
http://mikeneko.creator.club.ne.jp/~lab/perl/numerical_transform/
004737
2008/02/29(金) 20:11:23ID:???あれ、そうなん?って思って、ウチでもちょっと実験してみた。
人のサイトにリクエスト送りまくるんは、ちょっとアレなんで、LAN上に50MBほどのファイルを用意してやってみた。
perl -v
This is perl, v5.8.8 built for MSWin32-x86-multi-thread (WinXp + ActivePerl5.8.8-822)
LWP/5.808 LWP-UserAgent/2.036
の環境だと、この50MBのファイルを受け取って書き出すまでに、実に573秒(9分33秒)かかった。
ちなみに、ab で計測すると約4.7秒で転送できる。
その時、タスクマネージャーで監視していると、CPU80-90%くらいで、システム(グラフの赤色)が40%を占めてる。
で、メモリの使用量が、1〜2秒おき位に、30〜40MB位まとめて、増えたり減ったり激しく変動してる。
そこで、
perl -v
This is perl, v5.8.8 built for i386-linux-thread-multi (Linux/CentOS5.1 + i386.rpm)
LWP/5.808 LWP-UserAgent/2.036
の環境で同じことをやってみたら、ファイル書き出し完了までで、なんと5.3秒!
ab での計測で約4.6秒はWin環境とほとんど変わらず。コレにDisk書き込みの時間が足されてまあこんなもんか。
ちょっとソース読んでみたけど、LWP内部で特に問題になるようなところはなさそう。
WinとLinuxで違いもない(Version同じだから当たり前か)。
多分、IO::Socketとか、もっとCoreに近い部分が原因で、とくにActivePerlとWin環境だけで>>32>>37みたいになるのかな。
>>38
確かに、HTMLやテキストファイルだけでそんな容量使ってるサイトは、非常識と言えるかも知れないけど、
画像や音楽、動画、アプリケーションのzipやtarなんかだと、数MB〜数十MBなんかはザラにあるから、
そんなんクロールして取得しようとか以前思った時に、>>37みたいな現象に遭遇したんだ。
まあそん時は、Win環境しかなくて、今回みたいに検証すらしなかったんだが・・・。
おっしゃるように、max_sizeで小分けにするのがベターなやりかたかな。
0048nobodyさん
2008/02/29(金) 21:04:20ID:???range対応して無くても使えるしいいんじゃないかな?
0049nobodyさん
2008/03/01(土) 04:06:42ID:???そうなんだよな。
確かにそんなことも出来たようなことを、かつてdocument流し読みした時にあったな〜って思って、もっかいmanualを詳しく読んでみたら、
なにも$ua->request()に、code_refを投げなくても、直接$filenameを渡せば、Discにcontentsを書いてくれるそうなんで、いっちょやってみた。
そしたら、Win環境でもNetwork転送時間+書き込み時間位で取得できるようになった。
ファイルサイズを100M,200M,500MとでかくしてやってもLWP(Perl)がハングすることなく、大体見積もり程度の時間で取得出来るようになった。
これだと、取得したHTMLをさらにParseして、処理をかけるってことをやろうとすると、ファイル開かないといけないけど、
まあバイナリファイル取得する分には十分だな。
なんつうか、ちゃんとドキュメント読めよオレ!っていう結論だ。
0050nobodyさん
2008/03/02(日) 22:25:56ID:???それ以前に、数百MBのデータ読み込もうとするな。へぼ。
0051nobodyさん
2008/03/03(月) 05:44:20ID:???いやいや、今回の場合は、メモリに十分余裕があるのに、たかだか5Mとか10M位でも
Win(ActivPerl)環境だと激しく遅くなるのに、Linux環境だとそうはならない。ってとこで色々やって見たわけなんだわ。
まあ確かに、ちゃんとドキュメント読んでたら、最初の質問出たときに素早く正確なレス返せたかもしれないけど、
そこらへんヘボなんは認めるよ。まあ初心者スレなんだし。
だけど、俺なんかはPerlで数百M〜GBクラスのファイル読み込みとか普通にするし、
Perlの使用メモリが2G近くまで行ったりもするけど、今までそんな使い方してて、異常だとか思ったことなかったけど・・。
(そりゃあ、レンサバとか共用マシンとかでやるのは非常識だと思うし、CGIとかの鯖環境ではオレもそんなことしないけど、
自分専用で使う分にはええんでないの。今回みたいな検証したり、ベンチマーク取ったりもするし。)
0052nobodyさん
2008/03/05(水) 05:02:04ID:yN6MH4LB受け取ったファイルパスにファイルを作るサブルーチンを作りたいんですが、
ファイルパスが正しいかチェックするための正規表現がどうしてもかけません。
マッチする条件として
・ドットで始まるファイルは不可
・拡張子は必須/\.[a-z]+$/
・チルダ不可
・先頭のみ./は許可。../は不可。
・ディレクトリ、ファイル名は/[A-Za-z0-9\-]/にマッチ
・連続するスラッシュ、ドットは不可
・m|^/|も許可
書いてみてもものすごく長くなって、結局破綻してしまいます。
たすけて
0053nobodyさん
2008/03/05(水) 05:08:29ID:???open(FH,">",$file);
で作れるファイル名なら問題ないです。
ただし、カレントディレクトリ以下です。
0054nobodyさん
2008/03/05(水) 05:42:23ID:ImwXiBY3use Data::Alias;
で
Can't locate loadable object for module Data::Alias
と言われます。
./lib/Data/にAlias.pmをポコッと置いてるだけなんですけど
何が足りないんでしょうか?
0056nobodyさん
2008/03/05(水) 10:04:58ID:???「Can't locate loadable object」とあるように
Data::Alias は pure perl なモジュールじゃない。
http://search.cpan.org/src/XMATH/Data-Alias-1.07/
0058nobodyさん
2008/03/06(木) 05:45:50ID:F1MYa2quマッチしないものをどんどんはじけば処理少なくならないか?
0059nobodyさん
2008/03/06(木) 15:48:54ID:???社内でネットプログラムに一番詳しい人にされてしまいました。
材料仕入れて加工して個人に売るという会社なのですが、DQN取締役から
「在庫管理と顧客管理をブラウザから処理できるシステムってできるでしょ?
年度始めまでにお願いね」
と言われて涙目です。
プログラムは未経験で何をどうしていいかすら分かりません。
在庫管理のデータベースシステムの概要や、スクリプトの流れが
理解できるような書籍があったら教えてください。
ラクダ本は買ってみたのですが一から勉強するにはちょっと時間が足りません…
0060nobodyさん
2008/03/06(木) 16:06:45ID:???0061nobodyさん
2008/03/06(木) 16:19:02ID:???0062nobodyさん
2008/03/06(木) 16:56:54ID:???0063nobodyさん
2008/03/06(木) 20:17:17ID:???http://xn--lckja1b6r.jp/%E9%A1%A7%E5%AE%A2%E7%AE%A1%E7%90%86%20%43%47%49
0065nobodyさん
2008/03/07(金) 12:30:47ID:???予算もらって外注する
予算なければ出来ないっていうか、
予算相当に自分の人件費を上げてもらって頑張って勉強
0066nobodyさん
2008/03/07(金) 18:55:17ID:+CnMyeLv小数点以下の右端の0を全部取り除きたいです。
小数点以下が0しかない場合は、小数点も含めて取り除きたいです。
3.00 → 3
3.02000 → 0.02
どう書けばよいのでしょうか?
my $result = sprintf("%g", num); とすればいけるかと思いましたが、numが19120730.0000の場合に
1.91207e+07となり、だめでした(19120730となってほしい)。
さっき正規表現スレで聞いたんですが、正規表現は関係ないとレスされました。
宜しくお願いします。
0067名無し募集中。。。
2008/03/07(金) 19:05:18ID:???で削っていけば?
0068nobodyさん
2008/03/07(金) 19:22:48ID:???3.02じゃなくて?
3.02なら*1すりゃいいだけだけど・・・
0069nobodyさん
2008/03/07(金) 19:28:01ID:???一旦数値コンテキストで評価。
print "$_ => ", $_ + 0, "\n" for qw(3.00 3.02000 19120730.0000);
0070nobodyさん
2008/03/07(金) 19:40:11ID:???レスありがとうございます。
>>68
> 3.02じゃなくて?
そのとおり、3.02でした。
*1でも+0でも可能でした。ありがとうございました。
0071nobodyさん
2008/03/09(日) 04:23:14ID:???そんなもんJifty使って1時間もあればプロダクションまでいけるおれが答えよう。
(「在庫」の複雑さにもよるが)
これからプログラムやりたいんであれば、なんとしてでもこの機会を利用しろ。
開発用マシン買ってくれとか、本買ってくれとか、時間くれとか。
どんな言語がやはっていても、RDBMSの知識は常に使える。
3rd manifestoまではまだ10年以上かかるだろう。
プログラムやるきがなくて、この社内アプリが手柄になるなら外注しろ。
どれでもなければ、「できません」だな。
0072nobodyさん
2008/03/09(日) 06:21:52ID:kv7E/tC/期待に応えたりしたらさらに良いように無理難題押し付けられるのが関の山だ
にげちまえ
0073nobodyさん
2008/03/09(日) 10:38:47ID:???「外注」というと上司が文句を言う場合は、部品(ライブラリ)を
買うと言ってみてはどうだろう?
use ZAIKOKANRI
ZAIKOKANRI->new( -option=>... );
みたいな形で起動する、ライブラリという名のアプリケーション。
実際、漏れの上司は何故か外注を嫌がるが、「ライブラリを買う」
というと許可が下りるので、フリーのプログラマの知り合いに
頼んで作ってもらってる。
0075nobodyさん
2008/03/10(月) 16:46:11ID:???これはどう対処すべきなのでしょうか…?
#タイトルのエンコード
$subject = encode('iso-2022-jp', $subject); # iso-2022-jpにエンコード
$subject = encode_base64($subject, ''); # Base64にエンコード
$subject = '=?iso-2022-jp?B?' . $subject . '?='; # ヘッダー文字列の追加
# 本文のエンコード
$content = encode('iso-2022-jp', $content); # iso-2022-jpにエンコード
# メール送信
$cnt=<<"EOT";
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset=iso-2022-jp
From: $from
To: $to
Subject: $subject
$content
EOT
open MAIL, "| /usr/sbin/sendmail -t" or &err("Cannot open sendmail: $!");
print MAIL $cnt;
close MAIL or &err("Cannot close sendmail: !=$! ?=$?");
0076nobodyさん
2008/03/10(月) 17:53:13ID:dzM4A1jo他池
007775
2008/03/10(月) 19:29:36ID:???>>75のは、「文字コードが意味不明だゴラァ」と言われていたようでした。
(『encode』とは『UTF-8から』sjisやらiso-2022-jpやらにエンコードする機能。
一度UTF-8に『decode』しなければならなかった。)
以上、スレ汚し失礼しました。
0078nobodyさん
2008/03/10(月) 22:41:42ID:???といったものを作りたいのですが上手く行きません。
症状は、エラーは吐かず、同じ行があっても末尾に追記されてしまいます。
ご教授いただけたら助かります。
foreach my $aaa ( @{$data->{'aaa'}} ) {
$line="This is $aaa->{'msg'}";
$chk=0;
open( DAT, "./log.txt" );
while ( <DAT> ) {
if( $_ == $line ){
$chk++;
}
}
close( DAT );
if( $chk == 0 ){
open(FILE, ">>./log.txt");
$line="$line\n";
print FILE $line;
close(FILE);
}
}
0079nobodyさん
2008/03/10(月) 22:51:05ID:???0080nobodyさん
2008/03/10(月) 23:25:05ID:???0081nobodyさん
2008/03/10(月) 23:34:28ID:dzM4A1jo比較的簡単に見つかるはずだからググッてみそ
0083nobodyさん
2008/03/10(月) 23:43:47ID:???ありがとうございます。
別サイトのRSSのタイムスタンプを読み、データベース化するのに秒数の方が効率がいいと思いました。
ただ標準実装では出来ないようなのでYYYYMMDDhhmmssで行こうと思います。
チラシの裏
RSSの仕様のいい加減さと各サイトの独自拡張と欧文フォーマットの日付表記ウザすぎですね。
少々殺意を覚えました。YahooやgooやニュースサイトのRSSを見てみると、バージョン違いで
タグが違う(pubDateやらdc:dateやら)はまだ許せますが、フォーマットもめちゃくちゃですね。
Mon, 10 Mar 2008 19:17:02 +0900
Mon,10 Mar 2008 11:02:29 +0900
2008-03-10T21:56:00+09:00
少なくとも3パターンはあるようで、非常に嘆かわしいと思いました。
0084nobodyさん
2008/03/11(火) 00:00:51ID:kt3GGsX40085nobodyさん
2008/03/11(火) 00:17:08ID:???自由にできるのは結構なことだけど,良く使う日時のフォーマットくらい統一してほしいぜ・・・
0086nobodyさん
2008/03/11(火) 00:31:27ID:???Time::Local (の timelocal) は組込関数ではないが標準モジュール。
故意に抜かない限り入っている。
0087nobodyさん
2008/03/11(火) 00:55:54ID:???#!/usr/local/bin/perl
sub DateFmt{
my $str=$_[0];
my $i,$temp,$num;
if($str =~ /[0-9]{4}?(-[0-9]{2}?){2}?T[0-9]{2}?:[0-9]{2}?:[0-9]{2}?\+[0-9]{2}?:[0-9]{2}?/){
return $str;
}
$str =~ s/^[a-zA-Z]{3}?\,//;
$str =~ s/^\ +//g;
@mname = ('Jun','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
$i=1;
foreach $temp (@mname){
$num=sprintf("%02d",$i);
$str =~ s/$temp/$num/i;
$i++;
}
($day,$month,$year,$hms,$jst) = split(/ /,$str);
$jst =~ s/\+(..)(..)/+$1:$2/;
return "$year-$month-${day}T$hms$jst";
}
print &DateFmt("Mon, 10 Mar 2008 19:17:02 +0900");
print "\n";
print &DateFmt("Mon,10 Mar 2008 11:02:29 +0900");
print "\n";
print &DateFmt("2008-03-10T21:56:00+09:00");
print "\n";
0088nobodyさん
2008/03/11(火) 05:18:16ID:???use Date::Parse;
print str2time($_), "\n" for <DATA>;
__DATA__
Mon, 10 Mar 2008 19:17:02 +0900
Mon,10 Mar 2008 11:02:29 +0900
2008-03-10T21:56:00+09:00
0089nobodyさん
2008/03/11(火) 05:24:13ID:???0090nobodyさん
2008/03/11(火) 09:52:01ID:???0092nobodyさん
2008/03/11(火) 12:11:54ID:PA7R3QgSこのモジュールのあるバージョン以下の場合はメソッドA実行、それ以外はメソッドB実行
といった振り分けを行いたいのですが、モジュールのバージョンをperl上で調べるには
どうすればいいのでしょうか?
print $SpreadSheet::WriteExcel::VERSION;
としても、何も表示されませんでした。
0093nobodyさん
2008/03/11(火) 12:35:37ID:???ソースに当ってみたら?
0094nobodyさん
2008/03/11(火) 13:47:11ID:???レスありがとうございます。わざわざ調べて頂きどうもです。
やってしまいました。
print $SpreadSheet::WriteExcel::VERSION;
ではなく、
print $Spreadsheet::WriteExcel::VERSION;
でした。これははずかしい(*´Д`)
バージョン2.15、2.20とも表示されました。大変失礼しました。
0095nobodyさん
2008/03/11(火) 14:00:50ID:???0096nobodyさん
2008/03/11(火) 14:26:49ID:???0097nobodyさん
2008/03/11(火) 14:34:32ID:???0099nobodyさん
2008/03/12(水) 20:50:08ID:???Perlの勉強中で簡素なプログラムを作成しているのですが
POSTでデータがうまく送信できなくて困っています。
同じコードでMETHOD="GET"とすると送信できるのですが
パスワード入力などをするため、URLにパラメータを表示したくないのです。
お知恵を拝借させてください。よろしくお願いします
0101nobodyさん
2008/03/12(水) 21:02:36ID:???0102nobodyさん
2008/03/12(水) 21:04:45ID:???迅速なレス、感謝します。
浅学でお恥ずかしいのですがCGI.pmについてこれから調べてみます。
ありがとうございます。
0103nobodyさん
2008/03/12(水) 21:10:03ID:???レスありがとうございます
受信後の処理は、次のような処理を記述しております
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $form, $ENV{'CONTENT_LENGTH'});
} else {
$form = $ENV{'QUERY_STRING'};
}
@pairs = split(/&/, $form);
foreach (@pairs) {
($name, $value) = split(/=/, $_);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/>/>/g;
$value =~ s/</</g;
&jcode'convert(*value, 'sjis');
&jcode'convert(*name, 'sjis');
$FORM{$name} = $value;
}
GETだとうまく処理されるので2行目の
read(STDIN, $form, $ENV{'CONTENT_LENGTH'});
が怪しそうですね。
CGI.pm?で調べられるのかどうなのかまだよくわかっておりませんが
まずいところの見当すらつかなかったので助かります。
ありがとうございます。
0104nobodyさん
2008/03/12(水) 21:18:29ID:???しかしnameにも日本語を使ってるのか
0105nobodyさん
2008/03/13(木) 00:55:15ID:???0107nobodyさん
2008/03/13(木) 02:21:43ID:???0108nobodyさん
2008/03/13(木) 03:58:19ID:???0109nobodyさん
2008/03/13(木) 13:54:44ID:???「あれ? どうやるんだっけ?」と本気で焦った俺。
使わないとそんなもんだよな。
0111nobodyさん
2008/03/14(金) 00:19:02ID:jE/64EXv$aaa=1;
if($aaa==1||$aaa==3)
これをもっと簡潔に書くにはどうすればいいですか。
あと、「$aaaが8のn倍ならマッチさせる」というのも
わかりませんでした、おねがいしますm(_ _)m
0112nobodyさん
2008/03/14(金) 00:26:38ID:???8で割ってみて余りが0なら割り切れてるので8の倍数ということ
0113nobodyさん
2008/03/14(金) 00:34:03ID:???if($aaa==1||$aaa==3)
if ($aaa =~ /^[13]$/)
こんなのできないこともないけど、そのままでいいんじゃないか?
0114111
2008/03/14(金) 00:40:08ID:jE/64EXvそういうやりかたもあるんですね。
>113
極端にいえば
if($aaa==1||$aaa==5||$aaa==13||$aaa==17||$aaa==25||$aaa==34||)
こんなに長くなってしまう。
これじゃあまりにもじゃないですか?
0115nobodyさん
2008/03/14(金) 01:07:31ID:???長くなるんだと思う。
0116nobodyさん
2008/03/14(金) 01:13:26ID:???1つの変数に対して配列で一気にチェックできた気がする
grep 使ったような使わなかったような・・・ごめん。 俺にはもう無理w
0117nobodyさん
2008/03/14(金) 01:41:34ID:???そんな劇的な違いは無いとしても気分的になんとなくw
0118nobodyさん
2008/03/14(金) 01:51:12ID:???if($aaa =~ /^(1|5|13|17|25|34)$/)
0119nobodyさん
2008/03/14(金) 06:02:08ID:???if ( defined $tmp{$aaa} ){
print "俺の名を言ってみろ\n" ;
}
0120nobodyさん
2008/03/14(金) 11:41:19ID:???grep使う方法だとこうかな?
if ( grep { $aaa == $_ } qw( 1 5 13 17 25 34 ) ) {
# code here
}
0121nobodyさん
2008/03/14(金) 11:42:57ID:???grep { $aaa == $_ } qw/1 5 13 17 25/;
#
use List::MoreUtils qw/any/;
any { $aaa == $_ } qw/1 5 13 17 25/;
# use 5.10
$aaa ~~ [qw/1 5 13 17 25/];
0122nobodyさん
2008/03/14(金) 11:53:06ID:???my %tmp = map +( $_ => 1 ), ( 1, 5, 13, 17, 25, 34 );
grep $aaa == $_ ,( 1, 5, 13, 17, 25, 34 );
0123nobodyさん
2008/03/14(金) 14:50:45ID:???ttp://blog.livedoor.jp/dankogai/archives/51017983.html
0124nobodyさん
2008/03/14(金) 15:48:58ID:???http://www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq4.html#how_can_i_tell_whether_a_certain_element_is_contained_in_a_list_or_array
0125nobodyさん
2008/03/14(金) 22:34:42ID:exCIvuwaディレクトリ探索し、ディレクトリの中の「.txt」をファイルを見つけたら
その行数を出力したいのですが、「open(FH, "$_") or die;」のところで
落ちます。何がいけないのでしょうか?
---ここから
use File::Find;
my $dir = 'TestDir';
find(\&print_file, $dir);
sub print_file {
$_ = $File::Find::name;
if (/.+\.txt/) {
print "$_ \t";
open(FH, "$_") or die;
1 for <FH>;
print $. . "行\n";
close(FH);
} else {
print "$_ \n";
}
}
0126nobodyさん
2008/03/14(金) 22:50:02ID:???open(FH, "$_") or die "$! [$_]";
1 while <FH>;
とでもして吐かれたエラーメッセージを読む。
0127nobodyさん
2008/03/14(金) 23:25:19ID:???File::Find の find では pwd が変りますが、
$File::Find::name で得られるのはこの場合は $dir からのパス。
use Cwd ;
して if 文の中に
print getcwd ;
して確認してみそ。
簡単な解決方法は、$dir にゼッタイパスを突っ込め。
それから perldoc File::Find くらいしろ。
0128nobodyさん
2008/03/16(日) 19:27:01ID:483Ek7KZ以下で生成されたcontentをチェックしても、漢字だけ消えています。
どの様にすれば良いでしょうか。
よろしくお願いいたします。
use encoding "shift-jis";
LWP::UserAgent;
use HTTP::Request::Common qw(POST);
my %form=('test'=>'漢字123');
my $request = POST('http://test.test',[%form]);
my $con=$request->content;
print "test:$form{test}\n";
print "content:$con\n";
出力
test:漢字123
content:test=123
0130nobodyさん
2008/03/16(日) 23:03:42ID:eaCmNgRi自作の掲示板を作ってまして、ある書き込みにレスが付いた場合は
そのレスの数をカウントして画面に表示させる、という事をやってます。
現状はこんな感じです。
print "($res)<br>\n" if ($res ne "");
レスがある場合は(9)とかの某かの数字、レスが付いてない場合は空白という所までは
上手く行ってるのですが、
この(9)の部分を赤で出力したいと思ってます。
出来れば上記の命令の中だけで完結させたいのですが、無理でしょうか?
0131nobodyさん
2008/03/16(日) 23:16:51ID:???print qq|<span style="color:red;">($res)</span><br>\n| if $res;
Webサイト制作初心者用質問スレ Part 194
http://pc11.2ch.net/test/read.cgi/hp/1204015309/
△▲ WebProg 初心者の質問 Part17 ▼▽
http://pc11.2ch.net/test/read.cgi/php/1204462146/
0132nobodyさん
2008/03/17(月) 02:23:56ID:WVXzjYIyありがとうございました。
ただ、UserAgentは使うのでコメントアウトできません。
EUCでソースを書き、1行目だけコメントアウトで解決しました。
0134130
2008/03/17(月) 21:21:26ID:iYfDDUadありがとうございました、無事に解決いたしました。
これを応用して、文字のサイズを変える事もやってみましたが上手く行きました!
ところで考え方の確認を1つ。。。
admin.cgiで生成した画面から、subって画像をUPロード。
その画像を、album.cgiという別の画面上に表示させていて上手く動いてるのですが、
「その画像がUPされた日時をalbum.cgiの画面上に表示させる。」という事を考えています。
すごーく単純に考えて、
「subる直前に日時を取得して、それを変数に格納。その変数をalbum.cgiに渡して、その変数をprintすればOKかも。」
と考えてやってますが上手く行きません。(表示すらされない。)
もともとCOBOラーなもんで、この手のコーディングは激苦手なのですが四苦八苦しながら何とかやってます。
変数の初期化は?変数は共通変数なのかpg内変数なのか?受け渡しはどうやってやるのか?
などなど色々疑問は尽きませんが、そもそも上記の考え方でおかしくはないですか?
0135nobodyさん
2008/03/17(月) 22:03:37ID:???>>1-3
△▲ WebProg 初心者の質問 Part17 ▼▽
http://pc11.2ch.net/test/read.cgi/php/1204462146/
CGI: Common Gateway Interface part 13
http://pc11.2ch.net/test/read.cgi/php/1126436361/
0136nobodyさん
2008/03/18(火) 10:37:05ID:???CGIプログラム:バッチ
htmlフォーム:コマンドライン
と考えれば、おのずと答えが見えると思われ。
各バッチ処理間でデータをやり取りするには、
・ファイルまたはDBに格納する
・コマンドラインオプションを利用しうまく受け渡す方法を考える
のいずれかになる。
CGIプログラム間でうまくデータを受け渡すには
・セッション(ファイルまたはDB)を利用する
・htmlフォームデータとして生成しPOSTする(値を変えられたくなければHIDE要素にする)
のいずれかになる。
0137nobodyさん
2008/03/18(火) 11:07:18ID:???stat使えばいいだろ
0138nobodyさん
2008/03/18(火) 17:51:36ID:yz+TlyvN----------------
sub test{
$hoge = shift;
$fuga = shift;
$hoge += $fuga;
}
----------------
のような感じのプログラムを作っていましたが
うまくいかなくてどうしてだろうかと考えた所
文字列として認識していたっぽいです。
この $fuga を 数字に明言したいのですが
どのようにやるのでしょうか?
以上 ご助力いただけますとありがたいです。
0140nobodyさん
2008/03/18(火) 18:25:39ID:???$hoge と $fuga に数字がきちんと入ってたら、最初に文字列として認識してようと、
+= の段階で数字として扱ってくれるだろ…。他の部分のミスじゃね?
0141nobodyさん
2008/03/18(火) 18:26:00ID:???0142138
2008/03/18(火) 18:30:10ID:yz+TlyvN$hogeか$fugaに数字以外の記号が入っている場合もあり
ソノ場合は0として扱いたいのですが
数字が入っていた場合は数字として扱いたいのです、、、
num $fuga
int $fuga
などで数字と明言する方法があったような気がするのですが
私の勘違いでしょうか???
0143nobodyさん
2008/03/18(火) 18:35:55ID:???っつーかデバッグして調べろよ
0144nobodyさん
2008/03/18(火) 19:26:34ID:???そのままSQL文を書くと長いので
my ( @n, @q, @p );
foreach my $key ( keys %hash ) {
push @n, $key;
push @q, '?';
push @p, $hash{$key};
}
my $sth=$dbh->prepare('INSERT INTO test('.join(',',@n).') VALUES('.join(',',@q).')');
$sth->execute(@p);
という形でSQL文を構築してデータを格納しているのですが、
もう少しスマートな方法は無いでしょうか?
0145nobodyさん
2008/03/18(火) 19:50:13ID:???$sth->execute(map{$data{$_}}(keys %data));
適当にmapで記述したら、ここまで短くなりましたが、map{'?'}(keys %data)の辺りは、
もうちょっとスマートな方法がありそう…。
0146nobodyさん
2008/03/18(火) 20:25:49ID:???スマートな方法より可読性を選んだら?
keys %data を三回も呼ぶんだったらアレイに突っ込むだろ。
ついでに、join ',' も二回あるんだったらサブルーチンかなんかにしちまえ。<= 嘘。
sub foo { return join ',', @_ ;} ;
@arr = keys %data ;
my $sth=$dbh->prepare('INSERT INTO test('. &foo( @arr ) .') VALUES('. &foo( ('?') x @arr) ).')');
$sth->execute( @data{ @arr } );
てきとーに書いたから、' とか抜けてても勘弁。
0147nobodyさん
2008/03/18(火) 21:49:40ID:???#!/usr/bin/perl -w
use strict;
use Scalar::Util qw(looks_like_number);
test(@ARGV);
test(map looks_like_number($_) ? $_ : 0, @ARGV);
sub test {
my($hoge, $fuga) = @_;
print "hoge:[$hoge] fuga:[$fuga] ";
$hoge += $fuga;
print "result:[$hoge]\n";
}
>>144
my $col = join ',', my @col = keys %hash;
my $phs = join ',', ('?') x @col;
my $sth = $dbh->prepare("INSERT INTO test($col) VALUES($phs)");
$sth->execute(values %hash);
0148138
2008/03/19(水) 16:21:54ID:uoUGbd4u>143さん おっしゃるとおりでした。
すいません。デバッグしてみますと整数になっていなかった訳ではなくバグでした。
下記のようなプログラムでタブ区切りのファイル内の$filename
(フォーマットは「名前\t\t\t\t\t\t\t数\t\n」)
でハッシュデータで $hash{名前}->数
とやろうとして下記のようにプログラムを組んでみました。
----------------
open(FH,"$filename"); my @data = <FH>; close(FH);
my %hash = ();
foreach(@data){
my @splitdata= split(/\t/);
if(defined $hash{$splitdata[7]}){
print "<>$splitdata[7]no$hash{$splitdata[7]} ha mouaru<><br>";
}else{
$hash{$splitdata[7]} = 0;
print "$splitdata[7] wo sengen<br>";
}
}
my $key;
foreach $key ( keys %hash ) {
print "$key<br>";
foreach(@data){
my @splitdata= split(/\t/);
if($key eq $splitdata[7]){
print "$hash{$key} ni $splitdata[10] tumari $hash{$key} += $splitdata[10];wo tasu<br>";
$hash{$key} += $splitdata[10];
print "$hash{$key} : $hash{$splitdata[7]}<br>";
}
}
}
(続く)
0149138
2008/03/19(水) 16:23:18ID:uoUGbd4u----------------
それで出力が
print "$hash{$key} ni $splitdata[10] tumari $hash{$key} += $splitdata[10];wo tasu<br>";
$hash{$key} += $splitdata[10];
print "$hash{$key} : $hash{$splitdata[7]}<br>";
の所が
0 ni 2 tumari 0 += 2 ;wo tasu
0 : 0となっていたのですが どのようにすれば
ハッシュデータで $hash{名前}->数
とのハッシュデータを取得できますでしょうか?
以上 ご助力をいただけますとありがたいです。
0150nobodyさん
2008/03/19(水) 16:44:42ID:???0151nobodyさん
2008/03/19(水) 16:56:44ID:???0152nobodyさん
2008/03/19(水) 17:13:34ID:???$hash{名前} = 数で取り出したいってこと?
$splitdata[10]てなに?空じゃないの?
$hashには$hash{$splitdata[7]} = 0; この部分でしか入れてないよね?
0153nobodyさん
2008/03/19(水) 17:20:14ID:???$splitdata[0] が「名前」
$splitdata[7] が「数」
に見える。
コードは
$splitdata[7] が「名前」
$splitdata[10] が「数」
っぽいことになってるし、いつのまにか $splitdata[10] に 2 が入ってるし、よくわかんない。
(exists $hash{$splitdata[0]}) かどうか調べて、なかったら用意して
$hash{$splitdata[0] += $splitdata[7] したいんじゃないのかな。
0154153
2008/03/19(水) 17:21:25ID:???0155153
2008/03/19(水) 17:23:29ID:???$hash{$splitdata[0]} の } が抜けてました。
0156nobodyさん
2008/03/19(水) 17:28:37ID:???0157nobodyさん
2008/03/19(水) 23:15:18ID:???perl 5.8.4
mysql 4.1.11
OS debian
上記の環境でお勉強目的で BBS を作成しています。
データ自体は utf8 で格納出来ているはずですが、 perl 取得した結果を print した
際に文字化けが発生してしまいます。何処を注意すべきでしょうか?
# やってる内容をかいつまんで記入します
use DBI;use utf8;use Encode;
binmode STDIN, ":encoding(utf8)";
binmode STDOUT, ":encoding(utf8)";
$db = DBI->connect("DBI:mysql:database:localhost:$port", "hoge", "hoge");
$db->prepare("set character set utf8");
あとはセレクトして print しているだけ
# DB の中身は dump したファイルが utf8 で出力されていたのでデータは utf8 のはずです
0159nobodyさん
2008/03/19(水) 23:45:37ID:???それでメタタグの文字コード宣言が違うとか
0160157
2008/03/20(木) 12:29:10ID:???apache を使ってブラウザ上に表示させてます。
メタタグには一応 utf-8 って記入してます。
ブラウザ側の文字コードも utf-8 になってました
0161nobodyさん
2008/03/20(木) 12:38:21ID:???0162nobodyさん
2008/03/20(木) 13:03:57ID:???for ($j=0+$i*10; $j<10+$i*10; $j++) {
$box[$i][$j] = $j;
};
};
print "$box[0][0]\n";
print "$box[0][1]\n";
print "$box[0][2]\n";
print "$box[0][3]\n";
print "$box[0][4]\n";
print "$box[0][5]\n";
print "$box[0][6]\n";
print "$box[0][7]\n";
print "$box[0][8]\n";
print "$box[0][9]\n";
print "$box[1][0]\n";
print "$box[1][1]\n";
print "$box[1][2]\n";
print "$box[1][3]\n";
print "$box[1][4]\n";
print "$box[1][5]\n";
print "$box[1][6]\n";
print "$box[1][7]\n";
print "$box[1][8]\n";
print "$box[1][9]\n";
上記のプログラムを実行すると、$box[1][x]が表示されないのはなぜ?
0163nobodyさん
2008/03/20(木) 13:33:56ID:???0164nobodyさん
2008/03/20(木) 13:41:13ID:???の行の次に
print "[$i][$j]\n";
入れて表示してみ
0165nobodyさん
2008/03/20(木) 13:42:25ID:???期待する動作はこれかな?
0167162
2008/03/20(木) 13:44:57ID:???今、飯食ってるから
終わったら試してみる。
0171162
2008/03/20(木) 14:03:22ID:???解決できました。
PG久しぶりなんで、
頭が退化してたようです。
0172nobodyさん
2008/03/20(木) 14:11:42ID:???まぁ俺もたまに似たようなミスするのであまりコケにできないwww
0173nobodyさん
2008/03/20(木) 15:57:38ID:???見た目の桁数を8桁に揃えたいんです。
先頭は空白にしたいのですが、下記でうまくいきません。
$len = 8 - length($num);
$head = " " x $len;
$txt = $head.$num;
2行目を
$head = "a" x $len;
とすれば、先頭に
"a"は入って、桁が揃うんです。
それとも連続空白を表す記号みたいな物は
あるのでしょうか?
0174nobodyさん
2008/03/20(木) 16:03:28ID:???0175nobodyさん
2008/03/20(木) 16:12:49ID:???げ!、ソースを見たらちゃんと空白が入ってました。
ブラウザで表示すると空白がなくなっちゃう。。。
これはなんでですか?
0176nobodyさん
2008/03/20(木) 16:43:28ID:???0177nobodyさん
2008/03/20(木) 17:00:56ID:???font-family: monospace;
にしたうえで空白を にすればいいです。
0178nobodyさん
2008/03/20(木) 20:32:02ID:cqY9pHpE0180162
2008/03/20(木) 22:33:29ID:???に、しました。
0181nobodyさん
2008/03/20(木) 23:06:14ID:???0183nobodyさん
2008/03/20(木) 23:33:13ID:???いやいや、難しい話でなく。>>181が言ってるのは
「&nbsp;にしました」と入力して投稿すれば
「 にしました」と表示されるからスペース不要ってだけの話だと思うよ。
# でも確か専ブラによって表示が違ったはず。<エンティティ方面
0184nobodyさん
2008/03/21(金) 10:02:10ID:???HTMLでalign=rightのほうがいいんじゃない?
0185nobodyさん
2008/03/21(金) 10:37:17ID:???桁そろえるのにHTMLのブロック要素を使わなかったり
固定幅フォントを使わないのはバカだゆん
0186157
2008/03/21(金) 11:32:07ID:???自己解決決しました。
SQL を実行する前に SET NAMES utf8 を実行する必要があったみたいです。
一旦 SET NAMES utf8 を実行した後で select/insert/etc... を実行しないと
化けてしまうようです。
ナゼ化けるのかは理解できていませんが・・・。
# たぶん utf-8 以外で MySQL から出力しようとして化けてしまうとは思いますが理解できていません。
0187nobodyさん
2008/03/21(金) 13:27:45ID:???ハッシュ値の並び方が呼び出しのタイミング等で
一致しないのは知ってますが、keys %hash と values %hash の
並び方って必ず組み合わせが一致するのでしょうか?
0188nobodyさん
2008/03/21(金) 13:31:00ID:???0189nobodyさん
2008/03/21(金) 18:55:25ID:???0190nobodyさん
2008/03/21(金) 21:10:27ID:???my $Number10 = 1234; # 10進数
# 2進数
#my @digits = ('0','1');
# 16進数
#my @digits = ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
# 8進数
#my @digits = ('0','1','2','3','4','5','6','7','8');
# 26進数
my @digits = ('A'..'Z');
print &to_base($Number10,\@digits);
sub to_base {
my $num = shift;
my $digits = shift;
my $dignum = @{$digits};
my $result = '';
while ($num > 0) {
substr($result,0,0) = $$digits[ $num % $dignum ];
$num = int ($num / $dignum);
}
return length $result ? $result : $$digits[0];
}
0191nobodyさん
2008/03/21(金) 21:33:13ID:???sub conv($){
my $alpha = 'A' ;
$alpha ++ for 1 .. $_[0] ;
return $alpha ;
}
printf "%d\t%s\n", $_, conv $_ for 0 .. 200 ;
0192nobodyさん
2008/03/21(金) 21:53:29ID:???0193nobodyさん
2008/03/21(金) 23:12:27ID:???my %table2 = map { $_, $_ } 0..1 ;
my %table8 = map { $_, $_ } 0..7 ;
my %table16 = ( ( map {$_, $_ } 0..9 ), map{ $_, $alpha ++ } 10..15 );
$alpha = q{A} ;
my %table26 = map{ $_, $alpha ++ } 0 .. 25 ;
sub trans($$){
my %table = %{ shift @_ } ;
my $num = shift ;
my $int = keys %table ;
my $res = q{} ;
until( $num / $int <1){
$res = $table{ $num % $int } . $res ;
$num = int ( $num / $int) ;
}
return $table{$num}. $res ;
}
for ( 0 .. 1000 ){
print $_ . qq{\t}
. ( trans \%table26, $_ ) . qq{\t}
. ( trans \%table2, $_ ) . qq{\t}
. ( sprintf "%b", $_ ) . qq{\t}
. ( trans \%table8, $_ ) . qq{\t}
. ( sprintf "%o", $_ ) . qq{\t}
. ( trans \%table16, $_ ) . qq{\t}
. ( sprintf "%x", $_ ) . qq{\n}
;
}
0197nobodyさん
2008/03/22(土) 08:39:40ID:???>>191は取り消しって書いてあるから、
試してなかったんだけど、
試したら、うまくいってると思う。
なんで、取り消したんだろう???
0202nobodyさん
2008/03/22(土) 09:22:10ID:???10進数676は、26進数では、
676/26 = 26 余り0
26/26 = 1 余り0
で、1 0 0(BAAが正しい)が、
>>191だとZAになる。
>>200
インデントの為の全角スペースを除け。
0206nobodyさん
2008/03/22(土) 10:17:00ID:???0208nobodyさん
2008/03/22(土) 10:39:45ID:???0209nobodyさん
2008/03/22(土) 10:54:33ID:???0210nobodyさん
2008/03/22(土) 10:57:42ID:???$calc = new Math::BaseCalc(digits => ['a'..'z']);
$ans = $calc->to_base($number);
これもzの次にbaが出るorz
0211nobodyさん
2008/03/22(土) 11:22:42ID:???おまいがやりたい事は26進とは言わない
0212nobodyさん
2008/03/22(土) 11:23:35ID:???0213nobodyさん
2008/03/22(土) 11:32:56ID:???私が意図したものは
どう書けばいいのだろうか???
0214nobodyさん
2008/03/22(土) 12:54:31ID:???my @digits = ('A'..'Z');
print &to_base($Number10,\@digits);
sub to_base {
my $num = shift;
my $digits = shift;
my $dignum = @{$digits};
my $result = '';
while ($num > 0) {
substr($result,0,0) = $$digits[ $num % $dignum ];
$num = int ($num / $dignum) - 1;
}
return length $result ? $result : $$digits[0];
}
0215nobodyさん
2008/03/22(土) 13:06:15ID:???my @digits = ('A'..'Z');
print &to_base($Number10,\@digits);
sub to_base {
my $num = shift;
my $digits = shift;
my $dignum = @{$digits};
my $result = '';
while ($num >= 0) {
substr($result,0,0) = $$digits[ $num % $dignum ];
$num = int ($num / $dignum) - 1;
}
return length $result ? $result : $$digits[0];
}
0216nobodyさん
2008/03/22(土) 14:55:10ID:???0217138
2008/03/24(月) 22:18:54ID:wHKnZ0l2スイマセン。色々試しましたがヤハリ分からないのでコチラに書き込みをさせていただきます。
「名前\t数\t」というデータ(@arrangeData)から
$hash{名前}=合計数とのhashデータを作成したいのです。
# データを宣言
foreach(@arrangeData){
my @splitdata = split(/\t/);
if(defined $hash{$splitdata[0]}){
}else{
$hash{$splitdata[0]} = 0;
}
}
my $key;
print "取得した数を数える。<br>";
# 取得した数を合計する。
foreach(@arrangeData){
my @splitdata= split(/\t/);
foreach $key ( keys %hash ) {
if($key eq $splitdata[0]){
print "$hash{ $key } ni $splitdata[1] tumari $hash{$key} += $splitdata[1];wo tasu<br>";
$hash{$key} += $splitdata[1];
print "$key : $hash{$key}<br>";
}
}
}
とのプログラムでは何故か
$hash{$key} += $splitdata[1];
print "$key : $hash{$key}<br>";
が0で数値が入りません。
どうしてでしょうか?
0218nobodyさん
2008/03/24(月) 22:49:38ID:???0219nobodyさん
2008/03/24(月) 22:52:29ID:???#!/usr/bin/perl -w
use strict;
# use Scalar::Util qw(looks_like_number);
sub looks_like_number { $_[0] =~ /([0-9]+)/ ? $1 : 0 }
my @arrangeData = (
"name1\t1\t", "name2\t2\t", "name3\t\t", "name4\t4\t",
"name1\t10\t", "name2\t20\t", "name3\t\t", "name4\t40\t",
);
my %hash;
for (@arrangeData) {
my($name, $num) = split /\t/;
$hash{$name} += looks_like_number($num) ? $num : 0;
}
print "key:[$_] value:[$hash{$_}]\n" for sort keys %hash;
0220nobodyさん
2008/03/24(月) 23:29:25ID:???その @arrangeData を >>217 のコードに食わせても
name1 : 11
name2 : 22
name3 : 0
name4 : 44
になるんよね。"name3\tぱ\t" にしたりしても。
データのフォーマットが本人の説明と違うように思う。
という指摘が前回もあったような。
0221nobodyさん
2008/03/26(水) 00:57:12ID:???対象の集合をそのままハッシュのキーにして値を++したんですが、
ハッシュはソートできませんよね。配列を使うしかないでしょうか。
0222nobodyさん
2008/03/26(水) 01:00:59ID:???0223nobodyさん
2008/03/26(水) 01:01:47ID:???質問が漠然とし過ぎてるんで、この辺一通り読んでから来て。
http://www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq4.html
http://perldoc.jp/docs/perl/5.8.8/perldsc.pod
0225nobodyさん
2008/03/26(水) 09:29:51ID:LilkylgSそこで終わりにしたい場合はどうしたらいいでしょうか?
どうも全部読むか、失敗かの選択しかないみたいなんですが。。
0226nobodyさん
2008/03/26(水) 14:32:04ID:???一旦保存してから読み直せば?
0227nobodyさん
2008/03/26(水) 14:47:06ID:???httpd が受け取る/受け取らないという話でなく、
プログラム中の処理の流れでという意味なら
http://perldoc.jp/docs/modules/CGI.pm-2.89/CGI.pod
の「ファイル・アップロード・フィールドの作成」の項
0228nobodyさん
2008/03/26(水) 22:35:17ID:OE9DSfjk定数なんかを別ファイルに置いてそこから取得したい。
---const.pl---
my $x="あいうえお";
1;
---main.cgi---(ヘッダとかは略)
use strict;
require "./const.pl";
print $x;
とするとGlobal symbol "$x" requires explicit package nameという
$xが定義されていませんエラーになります。
use strict外すと$xは空白です。
http://q.hatena.ne.jp/1190815879
とかを見るとどう見てもこれで正しいようにしか思えないのですが何故?
他にこんなところで迷ってる人居ないから環境の問題なんだろうか?
CoLinux,perl5.8.6
0229nobodyさん
2008/03/26(水) 22:45:43ID:???0230nobodyさん
2008/03/26(水) 22:57:38ID:???<q cite="http://perldoc.jp/docs/perl/5.10.0/perlfunc.pod#item_my_EXPR_my">
my はリストアップされた変数を、囲っているブロック、ファイル、eval の中で
ローカルな (レキシカルな) ものにします。
</q>
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlmod.html#Perl_Modules
0231nobodyさん
2008/03/26(水) 23:12:52ID:???変数の局所化とか strict とは無縁になるけど。
はてなでやり取りしてる人らはそうしてるんじゃないかな。
0232nobodyさん
2008/03/27(木) 01:07:20ID:???0233nobodyさん
2008/03/27(木) 01:23:34ID:R/qLdwoIhoge.pm
package hoge;
sub kaze_hiita{
"hayaku neru"
}
our $x = 1;
1;
foo.pl
use hoge;
print hoge::kaze_hiita; -> 早く寝る
print $hoge::x; -> 1
$hoge::x = 10;
print $hoge::x; -> 10
関数のときのみ::じゃなくて->が使えるんだぜ。
あと関数の尻尾には();って書いてあると俺はうれしい。
ハッシュで渡すとさらにうれしい。
あと、そゆのがコンフィグを一杯つかうなら
普通に Auto-Config使うべし。
http://memo.majide.com/index.php?%A1%DAPerl%A1%DBConfig-Auto%A4%CB%A4%E8%A4%EB%C0%DF%C4%EA%A5%D5%A5%A1%A5%A4%A5%EB%A4%CE%C6%C9%A4%DF%B9%FE%A4%DF
当然だがファイル間は文字コードは統一しとけよ
それでしんだひとをみたことがあります。>俺自身
0235nobodyさん
2008/03/27(木) 12:35:04ID:???234が責任を持って書き換えます。おながい。
0236nobodyさん
2008/03/27(木) 12:36:10ID:???こうするのさ。
---const.pl---
$x="あいうえお";
1;
---main.cgi---
use strict;
our $x;
require "./const.pl";
print $x;
0237nobodyさん
2008/03/27(木) 16:59:46ID:???0238nobodyさん
2008/03/27(木) 19:04:51ID:???0239nobodyさん
2008/03/27(木) 22:17:48ID:???0240228
2008/03/27(木) 23:49:16ID:OO8NUyXNさっぱりわからんがサンクス。調べてみる
iniファイルやPHPみたいに簡単に取得できる方法はないのかのう・・・
0241nobodyさん
2008/03/27(木) 23:56:27ID:???だからモジュール紹介されてるやんけwww
0242nobodyさん
2008/03/28(金) 00:17:56ID:???0243233
2008/03/28(金) 00:26:56ID:???感想でいいからくれ
何がさっぱりわからんと思ったか書いてくれれば分かりやすくもういっかい書くよ。
1. リンクを開いたと思うんだが、何が意味不明だと思った(全部ってのはなしで)
2. 何を作っててプログラム暦何年か教えてくれ。
スレ汚しならすまん。ちょっと個人的に技法よりも心理障壁に興味がある。
0244nobodyさん
2008/03/28(金) 10:02:51ID:???0245nobodyさん
2008/03/28(金) 15:01:30ID:jpsDmJfA2008/03/28(金) 09:30:08
↓
08/3/28 9:30
0246nobodyさん
2008/03/28(金) 15:33:52ID:???sub reduce_date {
my @date = split /\D+/, $_[0];
$date[0] -= 2000;
sprintf '%02d/%d/%d %d:%d', @date[0..4];
}
print reduce_date('2008/03/28(金) 09:30:08');
0247nobodyさん
2008/03/28(金) 15:36:13ID:???my $orgdate = '2008/03/28(金) 09:30:08';
my @splitdata = $orgdate =~ /(\d{2})+/g;
printf("%02d/%02d/%02d %02d:%02d:%02d", @splitdata);
0248nobodyさん
2008/03/28(金) 15:46:09ID:???0249nobodyさん
2008/03/28(金) 15:48:45ID:???0250nobodyさん
2008/03/28(金) 15:57:20ID:???s{\d\d(\d\d)/0?(\d+)/0?(\d+)[^ ]+ 0?(\d+):(\d+):\d+}{$1/$2/$3 $4:$5};
0251nobodyさん
2008/03/28(金) 16:45:45ID:???my $datetime = sprintf("%02d/%d/%d %d:%d:%d", @splitdata);
0252nobodyさん
2008/03/28(金) 16:49:23ID:???my @splitdata = $orgdate =~ /(\d{1,2})+/g;
my $datetime = sprintf("%02d/%d/%d %d:%d", @splitdata);
print $datetime;
0253nobodyさん
2008/03/28(金) 16:59:35ID:???0255nobodyさん
2008/03/28(金) 19:09:17ID:???例えばjavascriptで
var c=1;alert(c=c+(c*=10)+(c*=100));
は1011
Perlで
my $c=1;print($c=$c+($c*=10)+($c*=100));
は1020
になります。
そこで、この問題について載っているサイトがあれば教えてください。
0256nobodyさん
2008/03/28(金) 20:04:35ID:???0257nobodyさん
2008/03/28(金) 23:58:05ID:???> var c=1;alert(c=c+(c*=10)+(c*=100));
こう書くのはクズグラマー。
0258nobodyさん
2008/03/29(土) 03:54:49ID:???http://www.st.rim.or.jp/~phinloda/cqa/cqa7.html
0263nobodyさん
2008/03/29(土) 17:56:41ID:???0265259
2008/03/30(日) 22:02:27ID:???0267nobodyさん
2008/03/30(日) 23:58:51ID:???言っとくけど俺をあまりナメないほうがいいよ
vipでコテハンやってるしこのスレ潰すくらいの影響力は持ってるから
くだらないことで刺激して後悔しないようにね
0270nobodyさん
2008/03/31(月) 10:11:33ID:???0271nobodyさん
2008/03/31(月) 12:02:54ID:???0272nobodyさん
2008/04/01(火) 21:14:09ID:???鯖管理してる人が入れたくないです。っていうので
HTML::Templateの代わりになるような標準モジュールって何かありますかね?
個人的にはHTML::Templateの<TMPL_IF>みたいなのが使えれば大満足なんだけども
自分で作っちゃったほうが早いかな?
0273nobodyさん
2008/04/02(水) 01:00:40ID:???0274nobodyさん
2008/04/02(水) 10:50:31ID:???0275nobodyさん
2008/04/02(水) 14:04:47ID:???perlには大きくわけて2つあると聞きました
1:恐らくActivePerlの為に書かれたであろうソースをcygwinで動かしたい
(書いた方はどちらのperlと言うこともなく消えちゃいました。他の方が「それperlだよ」と教えてくれました)
2:1行目に書かれていた 「 #!/perl/bin/perl 」 を 「 #!/cygwin/bin/perl 」 に書き換えた
2行目にあった 「 # /usr/bin/perl はないはず 」 を削除した
読み込ませるファイルをcgi-binフォルダーに置いた
3: Internet Explorer ではこのページは表示できません
cygwinとActiveperlは書き換える箇所があるのですか?
基本は同じと聞いたのですが細かく言うと変更すべきところもあるんでしょうか?
どなたかよろしくお願い致します
0276nobodyさん
2008/04/02(水) 14:28:33ID:???>perlには大きくわけて2つある
ファイルを置けば動くPurePerlと、installが必要なバイナリの2種類かな?
>恐らくActivePerlの為に書かれたであろうソースをcygwinで
プログラムファイル自体にその差は無い
よって
>cygwinとActiveperlは書き換える箇所があるのですか?
書き換える箇所は無い
ただしActivePerlでは動かないものもあるかもしれない
cygwinはUNIXエミュレータ(みたいなもの)
ActivePerlはWindows版のPerlインタプリタ
同列に並べるのはおかしい
> Internet Explorer ではこのページは表示できません
このエラーが出るってことはおそらくパーミッション
0277nobodyさん
2008/04/02(水) 15:21:24ID:???書いた人です。「それは Perl だ」と言ったのも自分。
あれはCGIではなくてCLIスクリプト(=コンソールアプリ)なので、
Perl実行環境さえあればWebサーバだの何だのは要りません。
# 「標準出力に何も吐かない」ブツはCGIではない。
あなたのしたいことは、Web制作板ともWebProg板とも関係のないことです。
ブツ自体はActivePerl だろうが cygwin 上の Perl だろうが動きます。
プロンプトから perl hoge.pl するだけ。以上。
ただ、glob() に2万ファイル食わせるのはやめといたほうがいいと思うな。
0278nobodyさん
2008/04/02(水) 15:33:03ID:???0279nobodyさん
2008/04/02(水) 15:40:45ID:???http://pc11.2ch.net/test/read.cgi/hp/1205922529/100
ほんとか?
0280nobodyさん
2008/04/02(水) 15:52:10ID:???>>276
詳しくありがとうございます
勉強になります
>>277
手取り足取りスレでお世話になりました
>>277さんのお陰で目標までの道が見えたような気がします
本当に感謝しております
HTMLとTXTそれぞれ3枚づつ置いてテストしてみようとしたのですが
上記の通り読み込めませんでした
hello.plで試したところ読み込みはできているようなので
書き込み用のファイルを用意しておくべきなのかわからないです
サーバなしで動くのでしたか私はサーバを通して操作するものかと勘違いしてましたすいません
perlでできると教えてくれて本当にありがとうございます
板違いになるのかーショボーン
どこに行けばいいのか・・・
みなさんありがとうございました
0281277
2008/04/02(水) 16:00:03ID:???とりあえず、物凄い勢いで板違い。>>275さんには、教えてgoo辺りがお勧め。
当分消えよう。
>>278
間接でも偏頭痛がしたので勘弁してください。
放置するとめんどくさい流れになりそうだったので出てきました。すみません。
>>279
そこで正解です…。
0282nobodyさん
2008/04/02(水) 17:09:09ID:???0283nobodyさん
2008/04/02(水) 21:09:16ID:???0284nobodyさん
2008/04/03(木) 00:13:59ID:???それぐらい察してくれるとありがたい
0285nobodyさん
2008/04/03(木) 03:38:43ID:x8vlzbgB0286nobodyさん
2008/04/03(木) 10:28:20ID:???0287nobodyさん
2008/04/03(木) 13:05:14ID:???0288nobodyさん
2008/04/03(木) 14:21:42ID:???0289nobodyさん
2008/04/03(木) 16:36:19ID:???0290nobodyさん
2008/04/03(木) 18:06:58ID:???0291nobodyさん
2008/04/03(木) 19:03:25ID:???StrawberryPerlと比べてActivePerlはどういうメリットがあるのかな。
PPMが便利なこともあるけど、CPANが使いやすいStrawberryPerlの方が自分は便利。
ActivePerlの方を推す方の意見を聞きたいです。
0292nobodyさん
2008/04/03(木) 19:56:47ID:???Strawberry Perl に一致する日本語のページ 約 13,000 件中 1 - 50 件目 (0.37 秒)
ActivePerl入れっぱなしだから特に探さなかった
0293nobodyさん
2008/04/03(木) 20:05:15ID:???0295nobodyさん
2008/04/03(木) 22:08:39ID:???存在すらしらなかった
0296nobodyさん
2008/04/03(木) 22:33:14ID:???何かあっても日本語で済ませられるからなぁ。あそこだとCatalyst+DBIC+TT2もJiftyもPlaggerもそろってるし。
0297nobodyさん
2008/04/04(金) 04:20:23ID:???0298nobodyさん
2008/04/04(金) 10:07:57ID:???たしかにそれはもっともなんだが、クライアントの要望でWinで動かなきゃだめ、ってのでも
対応できて助かる。ほんと。
0299nobodyさん
2008/04/04(金) 14:10:52ID:???特殊なことをするのでなければ、cronとSpeedyCGIぐらいしか思いつかない。
0300nobodyさん
2008/04/04(金) 16:49:23ID:???0301nobodyさん
2008/04/04(金) 17:29:46ID:???0302nobodyさん
2008/04/05(土) 00:28:43ID:???SQLに日本語が混じっているときSJISだとうまくいくのですが
UTF8だと文字化けしてエラーになってしまいます。
Unicodeでも文字化けしない方法はないでしょうか?
0303nobodyさん
2008/04/05(土) 03:41:48ID:???0304nobodyさん
2008/04/07(月) 18:30:35ID:/Zogy0zf現在、mod_perl下で動いているプログラムがあります。
必要があり、これを修正してみたところ、何が悪かったのかそのままサーバダウン。
サーバダウン直前の挙動、エラーメッセージ、mod_perlの特性などから検証した結果、
プログラムの必要メモリ量が極端に増え、それに伴いメモリ不足で落ちたのではないかという結論に至りました。
さて、ここからが質問なんですが、
mod_perlのプログラムを書くにあたり、メモリ使用量などに関して、
コーディングのコツ、書くときの注意、メモリ使用量を見る方法などがありましたら教えてください。
参考になるサイトや書籍などでも構いません。
英語でも頑張って読んでみようとは思いますが、理解できるかどうかは甚だ怪しいです。
0305nobodyさん
2008/04/07(月) 19:21:31ID:???0306nobodyさん
2008/04/07(月) 19:50:42ID:???0307nobodyさん
2008/04/07(月) 21:42:21ID:TcHrwP/20308nobodyさん
2008/04/07(月) 23:10:26ID:???0309nobodyさん
2008/04/07(月) 23:27:22ID:???0310nobodyさん
2008/04/08(火) 03:52:16ID:???0311nobodyさん
2008/04/08(火) 06:53:24ID:O35wAre8特定のオブジェクトを外部から判定したいとしたときなど、
文字列(ClassName=HASHxxxなど)を見て判断できるとも思いますが、
文字列変換が値の出力にオーバーライドされていたりするとダメですし・・
例えば、あるサブルーチンの引数をClassNameオブジェクトに限る、といったときに判定したいのです。
よろしくお願いします。
0312311
2008/04/08(火) 07:27:45ID:???if ($obj->isa('ClassName')) {・・・}
この辺から探っていけそうでしたので、311の質問は一旦取り下げますm(_ _)m
0313nobodyさん
2008/04/08(火) 09:05:59ID:???してます。
今回の場合に限りますが、解放されてないリソースが溜まり続けると言うより、1回の必要量が大きすぎた模様。
>305
いや、そんなこと言われても。
>306-309
質問文は後半だ。
0314nobodyさん
2008/04/08(火) 09:13:08ID:???>>1
【激速】mod_perl SpeedyCGI FastCGI【激速】
http://pc11.2ch.net/test/read.cgi/php/1149505269/
0315nobodyさん
2008/04/08(火) 12:45:16ID:???mod_perlかcgiかに関係なく
strictを付ける
サイズの予想できないデータは一括取り込みしない
ってのは当たり前だと思うんだが・・・
mod_perlで問題になりそうなのは
循環参照と意図しないクロージャくらいかな?
0316nobodyさん
2008/04/08(火) 18:50:34ID:???ありがとうございます。
宗教戦争が勃発してる魔境にしか見えないのが辛いところですが。
>315
ちょっとだけ内部の挙動を変えたらメモリ容量が4倍に膨れ上がってしまいまして…。
こういうのを、topコマンドでリアルタイムに監視する以外の方法があれば教えてください。
0317nobodyさん
2008/04/08(火) 19:19:20ID:???0318nobodyさん
2008/04/08(火) 19:20:40ID:???0319nobodyさん
2008/04/08(火) 19:26:09ID:???http://perl.apache.org/docs/1.0/guide/performance.html#Measuring_the_Memory_of_the_Process
参考リンク
0320nobodyさん
2008/04/08(火) 20:31:28ID:???単純計算ですが、総計にしてメモリ1GBほど増加です。
>318
ありがとうございます
>319
ちょうど英語にひぃひぃ言いながら読んでたところです。
0321nobodyさん
2008/04/08(火) 20:55:45ID:???とりあえずこのへんも参考にするといい
http://iandeth.dyndns.org/mt/ian/archives/000624.html
http://www.typemiss.net/blog/kounoike/20060212-64
0323nobodyさん
2008/04/08(火) 23:49:56ID:ng1N9SG/utf8::decode($str);
if ($str =~ /\P{IsASCII}/ and not (utf8::is_utf8($str))) {
### エラー
}
ってやってみましたが、あってますか?
0324nobodyさん
2008/04/11(金) 10:40:16ID:???0325nobodyさん
2008/04/11(金) 11:53:06ID:???それとも手動で?
0326nobodyさん
2008/04/14(月) 15:21:25ID:???↑の人と同じ悩みなんですが、jugem.jpのRSSをLWP::Simple::mirrorでミラーリングしようとすると、
RSSの内容ではなく、HTMLの内容が帰ってくるのは、どうしてですか?
RSSは以下のURLなのですが、引数を渡しているURLは、LWP::Simpleでは対応できないってでしょうか?
http://watalog.jugem.jp/?mode=rss
0327訂正
2008/04/14(月) 15:22:02ID:???↑の人と同じ悩みなんですが、jugem.jpのRSSをLWP::Simple::mirrorでミラーリングしようとすると、
RSSの内容ではなく、HTMLの内容が帰ってくるのは、どうしてですか?
RSSは以下のURLなのですが、引数を渡しているURLは、LWP::Simpleでは対応できないってことでしょうか?
http://watalog.jugem.jp/?mode=rss
0328nobodyさん
2008/04/14(月) 16:19:57ID:???UAで判定してる模様。
$ua = LWP::UserAgent->new(agent=>'IEみたいなUA');
でやってみ。
0329nobodyさん
2008/04/14(月) 16:25:16ID:???ありがとうございます。いやらしいことしますね…
LWP::Simple::mirrorを使っているので、全部書き直すか、例外処理を作るしかなさそうですねorz
0331nobodyさん
2008/04/14(月) 16:52:36ID:???オブジェクト指向的な話(->とか)が全くわからないので、そういうところを避けながらコーディングしてきたのですが厳しいですね。
0332327
2008/04/14(月) 19:32:33ID:???今後はSimpleではなくて、こっちを使おう…
0333nobodyさん
2008/04/14(月) 21:28:37ID:vhVZb6UQWeb上でいろいろサンプルコードを見ていたんですが、
使いたいモジュールがある場合は
CGI::Application::Plugin として利用するのがお決まりのように見えます。
実際、それが推奨スタイルなんでしょうか?
Log::Handler が使いたかったのですが、
単純に use Log::Handler; して使うと何か不都合があるのでしょうか?
0334nobodyさん
2008/04/15(火) 07:46:19ID:m7oSRbUq好きにしたらいいと思うよ
0335nobodyさん
2008/04/15(火) 11:53:04ID:7+9bkjp80336いしはら
2008/04/15(火) 18:41:44ID:y4DgL3Q4☆簡易CTIサービス(1万5千円)
http://s1s.jp/CTI/
☆自動クリックサービス
http://s1s.jp/
☆ブログ自動更新 記事投稿 コメント書き込みアプリ
http://s1s.jp/BLOG/
------------------------------------------------
ヽ('A`)ノ
( ) 大金星!!
ノω|
0337nobodyさん
2008/04/16(水) 14:37:06ID:???これらをperlかPHPで計算する方法が分かる方いましたらアドバイス頂けないでしょうか。
式は見ても理解できないのでサンプルソースを頂けると助かります。
0338nobodyさん
2008/04/16(水) 15:16:19ID:???0339nobodyさん
2008/04/16(水) 16:03:06ID:???0340nobodyさん
2008/04/16(水) 17:57:49ID:???サイコロ10000回投げて1が1666回出る確率とかだそうとする際に
数値が大きすぎるのかバグります…。
以前調べた時のソースも、数値が小さければ問題無いものの、
規模を大きくすると1.#INFというエラーが返ったり。
0341nobodyさん
2008/04/16(水) 21:19:23ID:WbXSl+I/与えられた文字列が大小文字同一視でハッシュのキーとして存在するかどうか、
調べる方法はないでしょうか。ハッシュキーは膨大な数あるので、配列にコピーとかは
したくないです。よろしくお願いし明日。
0342nobodyさん
2008/04/16(水) 21:28:03ID:???2 tieで1と同じ事を行う。
好きなほうをどうぞ。
0344nobodyさん
2008/04/16(水) 21:39:38ID:???実は、元の正しい表記を後で取り出したいんですが、
ハッシュのvalueは空いてるので、そこに元の表記を入れておいて
キーを大文字統一にしてみようと思います。
コピーするのと変わらないかもしれませんが。
0345nobodyさん
2008/04/17(木) 04:13:49ID:CjUpsUhEAll UTF-8 でやってます。
さらに USE CGI しないURLデコードをやってみたところ、マルチバイト文字が文字化けするようになりました。
全部□になります。
?#!c:/user/local/bin/perl510/bin/perl.exe
use utf8;
use encoding "utf8";
# ↓UTF8でPOSTされた情報を想定
my $str = '%E8%8C%B6%E6%B1%B2%E5%85%BC%E9%9B%91%E7%94%A8%E4%BF%82';
# ↓URLデコード(今回$strに+はないのでそのへんは省略)
$str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("H2", $1)/eg;
# ↓出力
print "Content-type: text/html; charset=UTF-8\n\n";
print "テスト // START // $str<br>\n";
これでHTML全体としては正しく表示されているんですが、$str部分のみが文字化けします。
ウェブで原因を調べること丸1日、これについてどこにも情報がありませんでした……
0346nobodyさん
2008/04/17(木) 07:21:16ID:???use encoding "utf8";
# ↓UTF8でPOSTされた情報を想定(内部ではワイドキャラクタとして格納されてます)
my $str = '%E8%8C%B6%E6%B1%B2%E5%85%BC%E9%9B%91%E7%94%A8%E4%BF%82';
utf8::encode($str); # 一旦UTF-8フラグを落として
# ↓URLデコード(今回$strに+はないのでそのへんは省略)
$str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("H2", $1)/eg;
utf8::decode($str); # UTF-8フラグを付け直す
0347nobodyさん
2008/04/17(木) 09:58:36ID:???> # ↓UTF8でPOSTされた情報を想定(内部ではワイドキャラクタとして格納されてます)
> my $str = '%E8%8C%B6%E6%B1%B2%E5%85%BC%E9%9B%91%E7%94%A8%E4%BF%82';
それデコードしたら、バイナリ(utf8フラグoff)のUTF-8文字列。
とりあえず、use utf8;とuse encoding "utf8"を外して、そのままprintしてみ。
ちゅうか、use utf8 とuse encoding "utf8"両方してる意味がわからん。
0348nobodyさん
2008/04/17(木) 14:34:42ID:FD3bsXbG解決しました。情報に感謝します。
>>346の内容を、Encode::〜でやりました。
こういうのって結構な落とし穴ですね。フラグのことはわかっているつもりでしたが……
0349nobodyさん
2008/04/17(木) 20:17:29ID:2zzFnXWLCGI::Applicationパッケージを使っているんだけど、
param() 関数で、数字だけの長い「文字列」を受け取ると
数値リテラルとして、しかも丸められた値が返されちゃうんだけど、
文字リテラルとしてそのまま受け取れるよい方法ないかな?
0350349
2008/04/17(木) 22:21:21ID:???CGI.pmにまでさかのぼって調べた結果、
query()->param()は文字リテラルで返してました。
自分が書いた、表示する際の処理のバグでした。orz
0351nobodyさん
2008/04/18(金) 00:03:02ID:qXgVgrBZ自分で作ったhash refの配列がデリファレンスできません。
$array[0]->{key}
$array[0]{key}
${$array[0]}->{key}
とか書いてみましたが様々なエラーが出ました。どう書いたらいいですか?
0352nobodyさん
2008/04/18(金) 00:07:12ID:???ソートをしようと思い、下記のように書いたらhash refを配列扱いするなと言われます。
my @sorted = sort {$array[$b]->{score} <=> $array[$a]->{score}} @array;
よろしくお願いします。
0353nobodyさん
2008/04/18(金) 00:20:08ID:???my @sorted = sort {$b->{score} <=> $a->{score}} @array;
0354nobodyさん
2008/04/18(金) 10:01:49ID:???0355nobodyさん
2008/04/18(金) 18:42:42ID:J/rLxrZJこれだけでも教えてくれると助かります…。
1.#INF の意味はなんですか?インフィニティ?
検索しても#は検索対象にならないらしく、
*.INFの設定ファイルや関係無いものが出て来るばかりで…。
0356nobodyさん
2008/04/18(金) 19:06:45ID:???0357nobodyさん
2008/04/19(土) 09:40:11ID:???それかインフォーラム
もしくはインフェルノ
0358nobodyさん
2008/04/19(土) 12:48:02ID:n4AN2xdTRNAというアンテナソフトを使っています。
すでに動作してるのですが、summary部分のhtmlタグを除去したいと思います。
http://www-kasm.nii.ac.jp/~i2k/tmp/rna/rss/recent_entry.html
のようにRSSを取得してくるCGIなのですが、
summary部分にhtmlタグが残ってしまいます。
ATOMやRSS2.0などでしょうか、
Yahoo!やexcite等RSSにhtmlタグが入ってるサイトを巡回すると
htmlタグが入ってしまいます。
template/recent_template には
<div class="summary">
<$RNAItemDescription$>
</div>
となっており、そのあたりを作ってると思われる
lib/RNA/AntennaTree.pmの1029行目、
my $encoded_descript = encode($item->{channel}->{description});
の後に
my $encoded_descript =~ s/<.*?>//g;
を追加してみたところ、サマリー部分がなくなってしまいました。
開発がストップしてるCGIなので、なんとか改造して使い続けたいと思っています。
どうかご教示願います。
0359nobodyさん
2008/04/20(日) 00:00:52ID:???>>355
備長炭 自殺方法 でぐぐれ。それでダメなら二項分布 オーバーフローとか。
0360nobodyさん
2008/04/20(日) 01:46:25ID:???現物ソース確認したわけじゃないけど
ttp://naoya.dyndns.org/~naoya/mt/archives/000611.html
の下の方にある remove_html を試してみたらどうかな。
0361nobodyさん
2008/04/20(日) 02:10:18ID:???そのモジュールについては詳しくはわからないけど、もともとのソースをいぢるんじゃなくて、
それが吐き出したものを、自前で書き換えればいいんじゃね?
0362nobodyさん
2008/04/20(日) 02:30:50ID:???> my $encoded_descript = encode($item->{channel}->{description});
> の後に
> my $encoded_descript =~ s/<.*?>//g;
> を追加
って書いてるんだから
my $str = "<strong>大切な</strong>文書";
my $str =~ s/(.)/$1/g; # 行頭の何かが余計
print length($str);
こういうことじゃないの。
0363nobodyさん
2008/04/20(日) 16:44:58ID:???$text =<<EOL;
name = $h->{'name'}
mail = $h->{'mail'}
EOL
とやっても変数が展開されません。
仕方ないのでハッシュにデリファンスしてますが、
方法があったら教えてください。
0364nobodyさん
2008/04/20(日) 17:36:03ID:???0365nobodyさん
2008/04/20(日) 20:52:48ID:tHisgd6UOUTをカウントするためなんすけど、アンカーから自前のCGIページを通過させてリンク先を表示させるにはどうすればいいですか?
0366nobodyさん
2008/04/21(月) 00:00:18ID:???0367nobodyさん
2008/04/21(月) 18:56:21ID:???my $h = {name=>'john', mail=>'john@example.net'};
my $text =<<EOL;
name = $h->{'name'}
mail = $h->{'mail'}
EOL
print $text;
こんな感じ。
0368358
2008/04/23(水) 09:11:49ID:???ありがとうございます。
remove_html、使いたいのですが使い方がわかりません...
# http://naoya.dyndns.org/~naoya/mt/archives/000611.html
sub remove_html {
my ($str) = @_;
my $ret;
if (defined $str) {
my $p = HTML::TokeParser->new( \$str ) or die "$!";
do {
my $plain = $p->get_text;
$ret .= $plain;
} while (my $token = $p->get_tag);
}
$ret;
}
を lib/RNA/AntennaTree.pm の最下部に追記して、
my $encoded_descript = encode($item->{channel}->{description});
の後に見よう見まねで
my $encodec_descript = &remove_html();
としてみましたが変わらずでした。
0369nobodyさん
2008/04/23(水) 12:47:07ID:???どこで手に入れる事ができるでしょうか?
0371↑
2008/04/23(水) 13:08:34ID:???0372nobodyさん
2008/04/24(木) 18:43:40ID:???という文字列から
ABCとDEFを削除してXXXのみを表示させたい場合はどうすればよいのでしょうか?
$moji = ABCXXXDEF;
$ans = $moji からABCとDEFを削除;
print "$ansです\n"
という具合でいいんでしょうか?
このABCとDEFを消す処理の部分がわかりません。
0373nobodyさん
2008/04/24(木) 18:47:46ID:???print $moji;
0376nobodyさん
2008/04/26(土) 13:15:07ID:flUVuiqJ区切りが/であったり\であったりとまちまちです。
perlはLinux上で動いているので、デフォルトでは、/で区切られている場合しか、ファイル名を取り出せません。
\で区切られている場合でも、取り出せるようにするにはどのようにしたらよいのでしょうか?
fileparse_set_fstypeでMSWin32を指定してしまうと今度は、Unixからアクセスしてきた場合にうまくいきません。
0377nobodyさん
2008/04/26(土) 13:19:19ID:???こんなもん中学生でも分かるぞカス死ね
0378nobodyさん
2008/04/26(土) 16:13:45ID:flUVuiqJ0380nobodyさん
2008/04/26(土) 17:01:10ID:???Perlが動いているサーバーのOSが関係する。
そして、basenameは動いているOSによって区切りを/か\か自動的に
判断してくれるので便利に使える。
サーバーがWindowsでもLinuxでもbasenameは正しく動いてファイル名を取り出せる。
取り出せない場合は、何か別の原因。
0381nobodyさん
2008/04/26(土) 19:45:43ID:???0382nobodyさん
2008/04/26(土) 21:48:20ID:vQRq4Omz時間と日数おしえてもらえませんか?時間とか1日何時間くらいしてます?
0383nobodyさん
2008/04/26(土) 22:09:54ID:???0385nobodyさん
2008/04/26(土) 22:49:57ID:???皆さんは「週何日、1日当たり何時間」なんていう時間割みたいな方式で
取り組んできたわけじゃないので、そういうのはよくわかんないのです。
そりゃ、そんな方式で堅苦しく取り組んできた人もいるかもしれないけど。
あなたが今までにちんちんを何ストロークしてきたかが不明なのと似てます。
0386nobodyさん
2008/04/27(日) 00:52:54ID:G3KB/HmGスラッシュをURLエンコードさせたくないのですが、可能でしょうか?どなたか助けてください・・
p://example.net/dir/index.cgi?name=<em>hoge</em>
このように、どうしてもタグが含まれてしまうURLなので困ってます。
見るからに初心者ですが、どうかよろしくお願いします。
0388386
2008/04/27(日) 02:55:07ID:G3KB/HmGそうですか・・
諦めて他に方法がないか試行錯誤してみます
ありがとうございました。
0390nobodyさん
2008/04/27(日) 23:35:33ID:???コード書いて1週間かかった気がする
そんな自分は C (すっかり書けないけど、ポインタで躓くまでは書いてた)、VB (アプリをいくつか作ってた) の経験ありです。
0391nobodyさん
2008/04/27(日) 23:39:03ID:???Webアプリ(cgi)は時間がかかると思う。
0392nobodyさん
2008/04/27(日) 23:44:48ID:???0393nobodyさん
2008/04/30(水) 17:01:56ID:9OxUbc+M0394nobodyさん
2008/04/30(水) 17:13:24ID:???rand(51)
0 〜 51 未満を生成 (未満は 51 を含まないので 50 以下の数字が現れる)
+100
下限値である 100 を加えてやる
以上
0395nobodyさん
2008/04/30(水) 17:14:49ID:???0396nobodyさん
2008/04/30(水) 17:19:40ID:???0398nobodyさん
2008/04/30(水) 18:11:00ID:???質問者の質問が悪いところまでフォローして手取り足取りするのが役目?
0399>>393
2008/04/30(水) 18:26:54ID:9OxUbc+M確かに>>398さんの言うとおりです。わざわざフォローして下さった親切なお二方に感謝します。
0400nobodyさん
2008/04/30(水) 18:38:47ID:???どうも下記例のforeachのループの中で、さらにwhileのループを
回せないのですが、たぶん簡単な理由だとは思うのですが、
お助け下さい。
他にもこのようなforeachのループの中で、foreachのループも回せないと
思います。
foreach $number(@number){
while (<F2>) {
print "$number\n";
if (/$number/)
{
print "マッチしました\n";
print F3;
}
}
}
0403nobodyさん
2008/04/30(水) 19:48:00ID:???0404nobodyさん
2008/04/30(水) 20:17:59ID:GavbPT5W2周目はファイルを読み込むループが発生しません
解決法は2つ
・While の直前でファイルを開くようにする
・While の直前で seek を使ってファイル位置を先頭に戻す
です。
負荷は後者の方が幾分か軽いです
0405nobodyさん
2008/04/30(水) 20:28:06ID:???場合によってはこれもありかなと思った。無駄にメモリ食うけど。
0406nobodyさん
2008/04/30(水) 20:47:41ID:???0407400
2008/04/30(水) 23:43:57ID:???1回目のforeachが終わったときに<F2>が空になる ってマジですか。
例のループにseekを追加して、動くようにしていただけませんか?
お願いします。
0409nobodyさん
2008/05/01(木) 12:48:54ID:???open(F2, "hoge.txt");
while (<F2>) {
foreach $number(@number){
〜
}
}
close(F2);
0410nobodyさん
2008/05/01(木) 13:18:21ID:???自分でやれ。
できないなら金払って業者つかえ。
代行するところじゃなく、自分で作るためのヒントを与えるところだ。
ここまでヒントがそろったらあとは調べながらできる。
0411nobodyさん
2008/05/01(木) 13:51:56ID:???ちゃんと意味がわかってから略すように汁
0412400
2008/05/01(木) 23:38:01ID:???>410 GW中くらい、自宅警備を止めてみたら?
>411 省略ハァ? 汁?
0413409,411
2008/05/01(木) 23:46:36ID:???0414nobodyさん
2008/05/02(金) 00:07:00ID:???ワロタ
0415nobodyさん
2008/05/02(金) 05:46:04ID:???「ものを学ぶ姿勢」ってやつを身に着けないと成長できないよね
0416nobodyさん
2008/05/02(金) 08:12:32ID:???これ10代だったら笑って流せるけど、20代以上で本気で言ってたら深刻ww
0417nobodyさん
2008/05/02(金) 10:22:44ID:???0418nobodyさん
2008/05/02(金) 10:32:20ID:???あと、これはおそらくは宿題だなw
0419nobodyさん
2008/05/02(金) 11:18:57ID:???とっくに質問者は消えてることに気づけよ禿げ
0422nobodyさん
2008/05/02(金) 13:12:28ID:???0423nobodyさん
2008/05/02(金) 13:34:20ID:???医者いったほうがええんちゃうかw
リアルでアレかw
0424nobodyさん
2008/05/02(金) 13:43:58ID:???0425nobodyさん
2008/05/02(金) 14:15:25ID:???0426nobodyさん
2008/05/02(金) 14:47:41ID:???0427nobodyさん
2008/05/02(金) 15:08:52ID:???0428nobodyさん
2008/05/02(金) 18:44:35ID:???0429nobodyさん
2008/05/02(金) 23:07:56ID:???思い込み激しいとか言われへん?
回りに迷惑かけても気づかないタイプだな
回答もしないのに罵倒するのはお前だけやろ
頭変すぎてわからんかw
0432nobodyさん
2008/05/02(金) 23:59:11ID:???0433nobodyさん
2008/05/03(土) 02:50:47ID:???0434nobodyさん
2008/05/03(土) 03:07:39ID:???0435nobodyさん
2008/05/03(土) 10:04:09ID:???0436nobodyさん
2008/05/03(土) 18:44:15ID:???0437nobodyさん
2008/05/03(土) 19:02:10ID:???0438フー子
2008/05/04(日) 19:36:48ID:798fbSDd何のためにあるの?どうやって使うの?
君かわいいね。
・・・ぶつ森のスレかとオモタorz...
ttp://search.cpan.org/~mrjc/cvswebedit-v2.0b1/cvs-web/lib/CGI/Base.pm
ttp://search.cpan.org/~mrjc/cvswebedit-v2.0b1/cvs-web/lib/CGI/Request.pm
を眺めてみればよろしいかと。
例文を眺めればだいたい何がしたいのかが見えてくるかと。
英文は無理に読まなくてもよろしいかと。
0441nobodyさん
2008/05/04(日) 20:22:15ID:???0442nobodyさん
2008/05/05(月) 14:08:42ID:GD7pTJpy以下のように記述すると、管理人である自分には登録メールが送られますが、
管理人以外に、書き込みした人にも登録確認メールが送られるようにしたいんです。
#Sendmailによる送信処理
if (open(MAIL,"| $sendmail -t")){
print MAIL "X-Mailer:legend2\n";
print MAIL "To: $administrator\n";
print MAIL "Errors-To: $administrator\n";
print MAIL "From: $administrator\n";
print MAIL "Subject: $subject\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "$mail_comment\n";
print MAIL "\n";
close(MAIL);
}
}
以下のどれかを使うのでしょうか?
print SENDMAIL "From: $sender <$from>\n";
print SENDMAIL "To: $to\n";
print SENDMAIL "Cc: $cc\n";
print SENDMAIL "Bcc: $bcc\n";
どうすれば良いか御教授下さい。宜しくお願いします。
0443nobodyさん
2008/05/05(月) 14:20:17ID:???# CGIは板違いだが、この処理自体はCGIと関係がないので。
if文のブロックを、Toヘッダだけ「書き込みした人」のアドレスにしてもう一度処理するか、
Toを「書き込みした人」のアドレス、CcまたはBccを「管理人」のアドレスにするか。
Errors-Toヘッダはobsoluteだった気がします。
envelopeアドレスを指定するべし。sendmailに-fオプションに続けてアドレスを指定する。
ttp://sonic64.com/2004-11-07.html
0444nobodyさん
2008/05/05(月) 16:36:56ID:???書かれた古文書を元にCGI作るな。めーわくだ。
0445nobodyさん
2008/05/05(月) 18:19:44ID:???例文または参考 URL ぐらい提示すればいいじゃない
0446nobodyさん
2008/05/05(月) 19:20:18ID:???0448nobodyさん
2008/05/05(月) 21:17:57ID:???0449BEET
2008/05/05(月) 21:36:20ID:???0452nobodyさん
2008/05/05(月) 22:16:06ID:???0453nobodyさん
2008/05/05(月) 22:44:54ID:???0454nobodyさん
2008/05/05(月) 23:21:45ID:V/xhfGfA0455BEET
2008/05/06(火) 00:42:09ID:???0456BEET
2008/05/06(火) 00:45:09ID:???このレンタル掲示板の管理パスをクラックされて、改竄されたんだけど、どうやってクラックしてるのかな?
0457nobodyさん
2008/05/06(火) 00:49:33ID:fJq/GBDg0459nobodyさん
2008/05/06(火) 00:51:09ID:fJq/GBDg0460nobodyさん
2008/05/06(火) 09:09:26ID:???cpan > install XML::ATOM::Feed
したのに、それを500エラーになってしまいます
(useしてるところをコメントアウトすると通る)
moduschで見たら「存在しないか、ロード出来ない」っぽい
なぜでしょうか…?
0461nobodyさん
2008/05/06(火) 16:59:23ID:???BCCで目的は達成できると思うけど、
自分のメールアドレスを、スパムを送りたい先などにされると
簡単にスパムの踏み台になるから気をつけてね。
0462nobodyさん
2008/05/06(火) 22:50:17ID:wGWcI8Lv未定義の関数を読んだら無事AUTOLOADが呼ばれたんですが、
変数$AUTOLOADを参照するとGlobal symbol〜っていうエラーが出てしまいます。
AUTOLOADを使う場合はno strictしていいものでしょうか。
0463nobodyさん
2008/05/07(水) 00:05:35ID:???use warnings;
sub AUTOLOAD {
our $AUTOLOAD;
print $AUTOLOAD;
}
foo();
0464nobodyさん
2008/05/10(土) 23:18:32ID:???#!/usr/bin/perl
print "Location: http://*****\n\n";
これに転送するまでHTMLの<meta content="x">みたいに
一定時間ウェイトかける事って出来るのでしょうか?
0465nobodyさん
2008/05/10(土) 23:19:01ID:???0468nobodyさん
2008/05/11(日) 13:18:10ID:yMOlxpUv無名配列のリファレンスとデリファレンスを使ってクォート内に式を埋め込めます。
これ気に入っててよく使うんですが、これのスカラーリファレンス版ってできませんか?
\$()
無名スカラーって存在しないんですかね。
いやそもそも@{[]}に式を埋め込めるのはそこをクォート内ではないと認識するからなわけで。
いや、う〜ん。確かこれなんかいい方法があったような期がするんですが。
0469nobodyさん
2008/05/11(日) 23:02:44ID:Vy6R2X5Cクライアントとの接続を明示的にクローズする方法は
ありませんでしょうか?
以下のようなことが実施したいです。
どなたかよろしくお願いします。
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<html><body>なんちゃら</body></html>";
## ここで明示的にクライアントとのConnectionをクローズしたい。
## ここからクライアント側に影響がない時間がかかる別の処理を実施したい。
&HokaNoShori();
exit;
0470nobodyさん
2008/05/12(月) 01:08:40ID:CYOIx0A2例えばパソコンの30%の能力だけ使わせるとかってできませんか?
0475nobodyさん
2008/05/12(月) 16:03:50ID:???クリップボードにあるテキストに処理を加えて
クリップボードに戻すプログラムを作ろうとしています。
Win32::Clipboardを使用しているのですが、Unicodeだと化けてしまいます。
Unicodeでも化けないで処理できる方法はあるでしょうか?
0476nobodyさん
2008/05/12(月) 16:08:19ID:CYOIx0A2思い出した!
print qq{ ${ \(1+1)} };
でしたね。
なるほどなるほど。${}これでデリファレンスができるというわけだ。
0477nobodyさん
2008/05/12(月) 17:20:30ID:???Encode でShift_JIS にして渡してみたらどうりますか?
0478nobodyさん
2008/05/12(月) 18:00:21ID:???回答ありがとうございます。
Shift_JISにない文字も処理したかったので
Win32::Clipboardでは無理と言うことですね。
Win32::Clipboard以外でクリップボードを利用できるものはありますか?
0479nobodyさん
2008/05/12(月) 20:22:51ID:???use LWP::Simple;
my $page = get('http://hogehogehoge.jp/');
getprint('http://hogehogehoge.jp/');
print $page
0481nobodyさん
2008/05/13(火) 01:04:45ID:???0482479
2008/05/13(火) 03:44:42ID:???何も変わんないですよ
0483nobodyさん
2008/05/13(火) 06:45:22ID:???「ソースファイル」ってのが上の us-ascii で足りそうなコードのことだったら
SJIS → EUC しても何も変わんないですよ。
環境その他も書かれてないし、変換に興味なさそうなので
perl hoge.pl > test.html
して「まともなエディタで見れば文字化けしない」でいいのかも。
0485nobodyさん
2008/05/17(土) 19:31:00ID:???$obj = Class->new();
この二つの違いは何ですか?
0486nobodyさん
2008/05/17(土) 20:03:56ID:???Classってサブルーチンが定義されてるときに問題がおきることがあるので、
$obj = Class->new;
の形式のほうが推奨されるけど。
0487nobodyさん
2008/05/17(土) 23:09:13ID:???ありがとんです
0488nobodyさん
2008/05/18(日) 11:25:25ID:???0489nobodyさん
2008/05/19(月) 06:36:14ID:???ERRNO.pmが、MSWin32-x86-multi-thread-5.00(Windows Updateでいつの間にか変わってた)を弾いてた。
とりあえず、ERRNO.pmを書き換える(!)ことで対処したんだけど、
他に同じトラブルあってる人いません?
0490がんちゃん
2008/05/19(月) 10:02:27ID:???出来上がった画像を右クリックして保存しましたが
そのファイルが開けません。
何が原因でしょうか。宜しくお願いします。
0491nobodyさん
2008/05/19(月) 11:27:27ID:???開けないとは具体的にどういうこと?
単に、変なファイル名(拡張子)で保存してしまって、ダブルクリックしても関連づけの問題で開けないってことではなくて?
0492がんちゃん
2008/05/19(月) 12:15:34ID:???0493がんちゃん
2008/05/19(月) 12:29:05ID:???* + うそです
n ∧_∧ n
+ (ヨ(* ´∀`)E)
Y Y *
0494がんちゃん
2008/05/19(月) 12:32:08ID:???回答者が初心者のスレだったのか・・・
0495がんちゃん
2008/05/19(月) 12:35:01ID:???* + うそです
n ∧_∧ n
+ (ヨ(* ´∀`)E)
Y Y *
0496nobodyさん
2008/05/19(月) 14:06:12ID:???binmode STDOUT;
$image->Write('jpeg:-');
ソース晒せや。
0497nobodyさん
2008/05/19(月) 14:11:40ID:???0498nobodyさん
2008/05/19(月) 15:48:41ID:???Perl云々の前に日本語学校行け
0499nobodyさん
2008/05/19(月) 15:59:52ID:???0500nobodyさん
2008/05/19(月) 16:39:50ID:???0502nobodyさん
2008/05/19(月) 18:36:38ID:82E4EJS9質問です。
Can't locate GD/Image.pm in @INC (@INC contains: C:/perl/site/lib C:/perl/lib .)
というソフトウェアエラーが出て、CGIを実行できません。
どうかどうか、教えてください。
0503nobodyさん
2008/05/19(月) 18:38:59ID:???はい次
0504nobodyさん
2008/05/19(月) 18:39:34ID:82E4EJS90505nobodyさん
2008/05/19(月) 18:44:49ID:???0506nobodyさん
2008/05/19(月) 18:45:58ID:82E4EJS90507nobodyさん
2008/05/19(月) 18:47:44ID:???0508nobodyさん
2008/05/19(月) 18:54:23ID:82E4EJS9けど、このページの、なにをどうすればいいのか。
わかりません
どうしようもない素人なので。。
0509nobodyさん
2008/05/19(月) 19:12:16ID:???エラーの内容は「このモジュールがみつからないよパパ」
→インスコor場所確認
とりあえずモジュールが入ってるか確認する
→ぐぐる
入っていない場合、モジュールをインスコする
→ぐぐる
入っている場合、パスを確認する
→ぐぐる
0510nobodyさん
2008/05/19(月) 19:26:15ID:???0511nobodyさん
2008/05/19(月) 19:58:48ID:???0512nobodyさん
2008/05/19(月) 20:03:39ID:82E4EJS9これは、どこかのサイトに書いてあったので。しました。
そしたら、エラーがでて。GD/Image.pmがどうのこうのとなってまして。
505さん507さん509さん510さんの言葉も、正直、理解しきれてない状況です。
まず、インスコというのが、コマンドプロンプトでするらしいとどこかに書いてて、
してみたんですけど。まず、「ppm」とすると、perlpackagemanagerが起動して、
その中に、GDがなくて。どやってインストールしていいのかも、わかんない感じです。
すみません長々と。どうかお助け願います。。
0513nobodyさん
2008/05/19(月) 20:03:43ID:???どうしようもない素人を名乗るなよ。
向上心ねぇのか
0514nobodyさん
2008/05/19(月) 20:16:06ID:???http://www.bribes.org/perl/ppmdir.html
ここへいってら。
それができたら、こっちも回っておくように。
http://theoryx5.uwinnipeg.ca/ppms/
0515nobodyさん
2008/05/19(月) 20:18:47ID:82E4EJS9読んでます。
0516nobodyさん
2008/05/19(月) 21:08:55ID:82E4EJS90517nobodyさん
2008/05/19(月) 21:35:03ID:???掲示板なんだから、レスに主語と述語をはっきり書いてくれ。
とりあえず、頭にエラーが出たのか?
0518nobodyさん
2008/05/19(月) 22:17:16ID:???スタート→すべてのプログラム→ActivePerl→Perl Package Managerで
必要なものをクリック、クリック!した方が楽で簡単だよ。
0519nobodyさん
2008/05/19(月) 23:01:51ID:82E4EJS9コマンドプロンプトで CPANから install GDってしても
できないんです。
GD/image.pmが@INCに無いっていうエラーが出るんです。517さん。
0520nobodyさん
2008/05/19(月) 23:13:22ID:???>>514サイトをよく読んでppmにリポジトリを追加すると、GD 2.39がインストールできるようになる。
ちゃんとリポジトリを追加したか?
それでも出ないというのなら、ppmに問題があることになる。
0521nobodyさん
2008/05/19(月) 23:23:58ID:???serach のとろを
s GD
としてくださいな
これでも出来なければ諦めてください
サポートしきれないです
0522nobodyさん
2008/05/20(火) 01:25:53ID:???Perl 5.8ならなんか面倒そうなんだけどこれかな?
0523nobodyさん
2008/05/20(火) 03:52:12ID:U/T3y6kmふと、PPM-Repositoriesを0.14に上げて見るとbribesなるレポがあるので、これを見に行くと、
おおー、結構新しいの来てるじゃないか〜と、調子にのってperl areaのmoduleもUpしまくる。
しかし、Compress-ZlibをUpすると、Bandleされてたversionを上書きしてしまい、
それ以降ppmがtar.gzファイルを展開できなくなってしまった。(今まで見たことないエラーでPPMが落ちる)
とゆうことで、今やっと再インストールと、(自分のよく使う)各種モジュールのインストール、最新版へのUpデートが終わった。
なんとか、Compress-Zlibも2.010に上げる事ができた。
ふう、疲れたぜ・・・・。
0524nobodyさん
2008/05/20(火) 04:15:25ID:???0525nobodyさん
2008/05/20(火) 14:16:09ID:XrCi5l42いろいろサポートいただいて、できました。
ほんとに感謝してます。ありがとうです。
0526nobodyさん
2008/05/21(水) 00:33:37ID:???正規表現を使わずに高速に動作するsplitの代わりはないでしょうか?
0527nobodyさん
2008/05/21(水) 01:39:24ID:???0528nobodyさん
2008/05/21(水) 01:41:57ID:???indexとsubstrを併用してちょっと試してみるか。
0529nobodyさん
2008/05/21(水) 11:18:20ID:crauFAgnググってみると、どこもXMLとLWPというモジュールを読み込む事が前提になっているようなのですが、
何も無い状態でXML
0530529
2008/05/21(水) 11:19:42ID:???モジュールが何も無い状態でXMLを読み込むために
参考になるようなサイトがありましたら、ご教示下さい。
宜しくお願いします。
0531nobodyさん
2008/05/21(水) 12:00:10ID:???0532nobodyさん
2008/05/21(水) 12:06:34ID:???とはとても思えないが・・
0533nobodyさん
2008/05/21(水) 12:14:45ID:???どうも事実上無理っぽいということですかね…orz
お騒がせしました、ありがとうございました。
0534nobodyさん
2008/05/21(水) 13:46:16ID:???0535nobodyさん
2008/05/21(水) 23:33:50ID:???XMLを読み込むだけなら、XML::TreePPでXMLが読める。
別サイト上にあるXMLを読むならLWP等が必要。
0536nobodyさん
2008/05/22(木) 08:42:14ID:???ファイル個別HTMLを作成する部分で
$buff = "<html><head><title>$filename</title></head><body>";
$buff .= qq|Download <a href="./$filename">$filename</a>|;
$buff .= '</body></html>';
(ソースの760行目付近です)
特定の拡張子のみ別のHTMLコードを書き出したいのですが
if文で$filename等試してみましたが上手く行きませんでした
どなたか分かる方宜しくお願いします
0537nobodyさん
2008/05/22(木) 10:13:46ID:???0538nobodyさん
2008/05/22(木) 12:40:41ID:???こういう書き方もあるんだ。勉強になったw
0539nobodyさん
2008/05/22(木) 13:18:50ID:???0540nobodyさん
2008/05/22(木) 13:25:55ID:???がなかなか見つからない。
0541nobodyさん
2008/05/22(木) 13:40:38ID:???どう試して、どういう結果になったのか書かないと。
基本だと思うが。
0542nobodyさん
2008/05/22(木) 17:17:18ID:???普通に cookbook にある解ではダメなのか?
ttp://www.unix.com.ua/orelly/perl/cookbook/ch01_12.htm
0543nobodyさん
2008/05/24(土) 13:22:00ID:CztaXqINprint <<EOT
<form action="http://localhost/cgi-bin/session.cgi" method="post">
<p>
<label for="nm">お名前:</label>
<input type="text" name="namae" id="nm"><br>
<label for="ma">メール:</label>
<input type="text" name="email" id="ma">
</p>
<p>
<input type="submit" value="送信">
<input type="reset" value="リセット">
</p>
</form>
EOT
;
これらのフォームデータをセッション変数としてsession.cgiに受け渡したい
のですが、どのようにすればよいでしょうか?
CGI::sessionモジュールを利用して、session.cgi側で
$hoge=$cgi->$session->param('namae');
などとすればセッション変数として受け取れる事は分かったのですが、
フォームからの受け渡し方が分かりません…。
よろしくお願いします。
0544nobodyさん
2008/05/24(土) 13:38:27ID:???0546543
2008/05/24(土) 13:47:45ID:CztaXqINhiddenフィールドを利用すればセッション変数として受け渡されるのでしょうか?
>>545
「お名前」や「メール」フォームに入力された文字列をセッション変数として
session.cgiで受け取りたいと考えています。
0547nobodyさん
2008/05/24(土) 13:47:48ID:???セッションはその後。
0548nobodyさん
2008/05/24(土) 13:49:52ID:???・GET
・cookie
わざわざCGI::session使うくらいなんだから、普通はcookie使うんじゃね?
0549543
2008/05/24(土) 13:53:40ID:CztaXqINすいません。>>543の書き込み微妙に間違っています。
$hoge=$cgi->$session->param('namae'); のところ
通常データの受け取りは
$hoge=$cgi->param('namae');
セッションでの受け取りは
$hoge=$session->param('namae');
の間違いです。
0550nobodyさん
2008/05/24(土) 14:04:47ID:???受け渡しの情報が知りたいって言ってるのに、
受け取りのソース書いてるから、それを指摘されてるんだよ。
>基本的にはセッション系モジュールの役割は、特定のキー=セッションIDに紐付けて、
>データを保存したり、読み込んだりといったことです。
>セッションIDの受渡しはCGI側でする必要があります。
ヒント:http://digit.que.ne.jp/work/wiki.cgi?Perl%e3%83%a1%e3%83%a2%2fCGI%3a%3aApplication%3a%3aPlugin%3a%3aSession%e3%83%a2%e3%82%b8%e3%83%a5%e3%83%bc%e3%83%ab
0551543
2008/05/24(土) 14:05:03ID:CztaXqINサーバ側から要求があった時点でクライアントはそのcookieのデータを受け渡す
といったイメージで良いのでしょうか。
うぅ、難しい。。。
0552543
2008/05/24(土) 14:13:48ID:CztaXqIN>受け渡しの情報が知りたいって言ってるのに、
>受け取りのソース書いてるから、それを指摘されてるんだよ。
データを受け渡す側のソースが>>543で、受け取るソースがsession.cgiだと
認識してるのですが…。間違っているでしょうか。
もしかしたら私が勘違い?をしているのかも?
0553nobodyさん
2008/05/24(土) 14:14:00ID:???正直、目的に対して技術が足りなすぎる。イヤミじゃなくてね。
トラブル起こす前に、オライリーのCGIプログラミング読破オススメ。
0554nobodyさん
2008/05/24(土) 14:18:21ID:???>受け取るソースがsession.cgiだと認識してるのですが…。
少なくてもこのソース中でセッションIDはどこにも発行してないでしょ?
後は調べなさい。
0555554
2008/05/24(土) 14:19:15ID:???× >受け取るソースがsession.cgiだと認識してるのですが…
○ >データを受け渡す側のソースが>>543で
0556543
2008/05/24(土) 14:19:38ID:CztaXqINみなさん、有難うございましたー・・・
0557543
2008/05/24(土) 14:23:19ID:CztaXqINあ、ソースの一部分しか乗せてなかったためです!
use CGI::Session qw/-ip_match/;
my $session=CGI::Session->new(undef,undef,{Directory=>'./session'});
$session->expire('+1m'); #有効期限は1分間
$session->param('name','john'); #セッション経由で引き渡す項目と値
my $cgi=CGI->new;
print $cgi->header(-charset=>'UTF-8',
-cookie=>$cgi->cookie(-name=>'CGISESSID',
-value=>$session->id,
-expires => '+3M')),
#cookieにセッションidを保管
$cgi->start_html(-lang=>'ja',
-encoding=>'UTF-8',
-title=>'CGI.pm使用/cookie'),
$cgi->p('session id: '.$session->id.'<br/>',
'name: '.$session->param('name').'<br/>',
0558543
2008/05/24(土) 14:24:17ID:CztaXqINprint <<EOT
<form action="http://localhost/cgi-bin/session.cgi" method="post">
<p>
<label for="nm">お名前:</label>
<input type="text" name="namae" id="nm"><br>
<label for="ma">メール:</label>
<input type="text" name="email" id="ma">
</p>
<p>
<input type="submit" value="送信">
<input type="reset" value="リセット">
</p>
</form>
EOT
;
$cgi->end_html;
#end
すいません…!
0559nobodyさん
2008/05/24(土) 14:27:18ID:???追記 use CGI;
追記 my $cgi = new CGI;
× my $session=CGI::Session->new(undef,undef,{Directory=>'./session'});
○ my $session=CGI::Session->new(undef, $cgi, {Directory=>'./session'});
0560nobodyさん
2008/05/25(日) 02:16:54ID:???htmlのフォームデータをpost→受け取ったデータをセッション変数を格納するCGI
→それらのセッション変数にアクセス(利用する)CGI
の流れがいるのでは?
自信ないけど
0561nobodyさん
2008/05/25(日) 19:58:56ID:sAYmYKjSもちろん細かく制御するには向いてるんだが始めとっつきにくいかもなー
0562nobodyさん
2008/05/26(月) 13:29:09ID:???>>543の質問を分かりやすくPHPで説明すると、
$_REQUESTの内容を$_SESSIONで受け取るにはどうしたらいいんですか?
ということ。
0563nobodyさん
2008/05/26(月) 19:00:45ID:BXwqNwjPGlobal symbol "%in" requires explicit package name at C:/ApacheGroup/〜〜.cgi line 375, <DATA> line 855.
というソフトウェアエラーが出続けてるんですが。
どうすればいいでしょう。
どなたか教えてください〜。
0564nobodyさん
2008/05/26(月) 19:09:34ID:fmVA2Qe8open(OUT,"+< log.txt");
eval{flock(OUT, 2);};
eval{truncate(OUT, 0);};
seek(OUT, 0, 0);
print OUT @log;
eval{flock(OUT, 8);};
close(OUT);
今はこのように通常のテキストでログの上書き保存をしているのですが、
私はgzipで圧縮して上書き保存をしたいのです!
しかしどれだけGoogle先生に訊いてもgzipでの保存方法を教えてもらえません! あの先生はケチです!
もう先生方だけが頼りなんです! 一体どうすればgzipでの保存が可能になるんでしょうか!
0565nobodyさん
2008/05/26(月) 19:18:18ID:???http://xn--lckja1b6r.jp/%47%6C%6F%62%61%6C%20%73%79%6D%62%6F%6C%20%20%72%65%71%75%69%72%65%73%20%65%78%70%6C%69%63%69%74%20%70%61%63%6B%61%67%65%20%6E%61%6D%65
>>564
http://xn--lckja1b6r.jp/%70%65%72%6C%20%67%7A%69%70
0566nobodyさん
2008/05/26(月) 19:32:47ID:???0568nobodyさん
2008/05/27(火) 11:06:43ID:???0569nobodyさん
2008/05/27(火) 19:27:42ID:???$global_foo = $foo;
$global_bar = $bar;
my $foo;
my $bar;
$foo = $_[0];
$bar = $_[1];
$foo = $global_foo if $foo eq undef;
$bar = $global_bar if $bar eq undef;
}
をコンパクトにまとめたいが、バグが混入しそうでいやん。
0570nobodyさん
2008/05/27(火) 19:44:24ID:???my $global_foo = $foo;
my $global_bar = $bar;
$foo = shift || $global_foo;
$bar = shift || $global_bar;
}
0571nobodyさん
2008/05/27(火) 19:55:45ID:???$foo eq undef もたいがいだが
shift || $global_foo だと $_[0] が '0' の時に挙動変わるな。
0572nobodyさん
2008/05/27(火) 20:06:24ID:???my $global_foo = $foo;
my $global_bar = $bar;
$foo = defined( $_[0] ) ? $_[0] : $global_foo;
$bar = defined( $_[1] ) ? $_[1] : $global_bar;
}
こうか?
0573nobodyさん
2008/05/27(火) 20:06:58ID:???0574nobodyさん
2008/05/27(火) 20:33:00ID:???$foo = $global_foo if $foo eq undef;
$bar = $global_foo if $bar eq undef;
ではなく
$foo = $global_foo unless defined $foo;
$bar = $global_foo unless defined $bar;
でお願いします。あと>>570-573サンクス、参考になります。
0575nobodyさん
2008/05/27(火) 20:38:51ID:???初期化するためにmy使っちゃってるように見えるけど、
この場合、ブロックスコープになるから、
ブロック内の$foo, $barと、グローバル変数$foo, $barは別物になる。
0576nobodyさん
2008/05/27(火) 20:54:18ID:???$global_foo = $foo;
$global_bar = $bar;
{
my $foo;
my $bar;
$foo = $_[0];
$bar = $_[1];
$foo = $global_foo unless defined $foo;
$bar = $global_foo unless defined $bar;
}
欲しい動作はこうかな…
0577nobodyさん
2008/05/27(火) 20:56:48ID:???「perl スコープ 変数」でググっみ。
0578nobodyさん
2008/05/27(火) 21:53:15ID:???0579nobodyさん
2008/05/27(火) 22:34:53ID:???sub func {
my $temp = $_[0];
return defined( $_[1] ) ? $_[1] : $temp;
}
ex :
$foo = func( $foo, 10 ); # $foo = 10
$foo = func( $foo ); $foo = 1
0580nobodyさん
2008/05/28(水) 00:31:36ID:???0581nobodyさん
2008/05/28(水) 01:24:48ID:???0582576
2008/05/28(水) 01:29:54ID:???$global_bar = $bar = 2;
@_ = (3,4); #@_に値あり
{
my $foo;
my $bar;
$foo = $_[0];
$bar = $_[1];
$foo = $global_foo unless defined $foo;
$bar = $global_bar unless defined $bar;
print "point 1: foo=$foo bar=$bar\n";
}
print "point 2: foo=$foo bar=$bar\n";
出力結果
point 1: foo=3 bar=4
point 2: foo=1 bar=2
0583576
2008/05/28(水) 01:32:06ID:???$global_bar = $bar = 2;
@_ = (3,4); #@_に値あり
{
my $foo;
my $bar;
$foo = $_[0];
$bar = $_[1];
$foo = $global_foo unless defined $foo;
$bar = $global_bar unless defined $bar;
print "point 1: foo=$foo bar=$bar\n";
}
print "point 2: foo=$foo bar=$bar\n";
出力結果
point 1: foo=1 bar=2
point 2: foo=1 bar=2
━━━━━━━━━━━━━━━━━━━━━━━
うん、欲しかった動作そのままだけど。
>>577-578が理解できず悩み中
0584nobodyさん
2008/05/28(水) 01:34:02ID:???【誤】@_ = (3,4); #@_に値あり
【正】@_ = (); #@_に値無し
orz 120秒規制が若干きつい…
0585nobodyさん
2008/05/28(水) 01:35:51ID:???0586nobodyさん
2008/05/28(水) 01:46:51ID:???目的が分からん。そもそも何がしたいの?
説明する気あるのか?
my $foo = 1;
my $bar = 2;
print $foo = func( $foo );
print $bar = func( $bar );
print $foo = func( $foo, 3 );
print $bar = func( $bar, 4 );
exit;
sub func {
return defined( $_[1] ) ? $_[1] : $_[0];
}
0588576
2008/05/28(水) 01:58:37ID:???サブルーチン冒頭にて、引数リスト > デフォルト値(グローバル変数の値とか)
の優先順でmy変数値を設定したいことはよくあるから、
perlなら… perlならきっとすごくスマートに書く方法があるに違いない…
という夢を見たけど、幻だったみたいですね…
変数ひとつずつシコシコとunless definedを当てることにします。
0589nobodyさん
2008/05/28(水) 02:00:25ID:???お前の望むようなことは確実にできると思うんだけど、
なにぶん言いたいことがよく分からんw
0590nobodyさん
2008/05/28(水) 02:16:48ID:???my $global_bar = my $bar = 2;
# @_ =( );
@_ =( 3, 4 );
{
my $foo = defined( $_[0] ) ? $_[0] : $global_foo;
my $bar = defined( $_[1] ) ? $_[1] : $global_bar;
print "point 1: foo=$foo bar=$bar\n";
}
print "point 2: foo=$foo bar=$bar\n";
結局、最初に提案されてる回答をアレンジすれば、
>>582-584をシンプルかつ可読性も保ったまま実現できるんだが。
これじゃいかんの?
0591nobodyさん
2008/05/28(水) 02:25:18ID:???そのへんが限界みたいですね…ありがとうございます。
私の欲求そのものが十分特殊だったのかな…
いま考えてる最善の形はサブルーチンを使うことです。
サブルーチンコールは負担かかりそうだからやりたくないんだけど…
sub merge_argument_and_default{
my ($argument, @default) = @_;
my @value;
while(1){
my ($a, $v) = (shift @$argument, shift @default);
my $c = ((defined $a) ? $a : $v);
last unless defined $c;
push @value, $c;
}
return @value;
}
sub foo{
my(@bar) = &merge_argument_and_default(\@_, @default_bar);
}
みなさんありがとうございました。
0592nobodyさん
2008/05/28(水) 02:30:59ID:???0593nobodyさん
2008/05/28(水) 06:17:52ID:???もう実装されてるよ?
http://search.cpan.org/dist/perl/pod/perl5100delta.pod#Defined-or_operator
0594nobodyさん
2008/05/28(水) 06:40:31ID:???当初の目的をすり替えて、自分は違うもの作ってました的な発言するやつは質問にくるなよ。
当初は「>>569をコンパクトにしたい」って言ってただけなのに、
どんな解が提示されても、
どんどん違う方向に勝手に転換して善意のレスすら流し読み。
こういう奴は、治らないから本当に放置すべきだと思うよ。
0595nobodyさん
2008/05/28(水) 07:18:42ID:???それは違うんだけど、あなたへの説得は無理かな。
ひどく機嫌を損ねてしまったのは悪いと思ってるが。
いただいたありがたいアドバイスから、例えば今回は、
「サブルーチン化でもしなければ相当コンパクトに収めるのは難しいらしい」
「そのサブルーチンはこういう形で書くのがよいのだろうか」
などと、自分の知識や興味対象は移り変わっていくことが多いです。
ただ、このスレッドにはしばらく書き込みを自粛します。さよなら。
0596nobodyさん
2008/05/28(水) 10:11:34ID:???0597590
2008/05/28(水) 10:39:10ID:???目的も明確にせず、そのへんが限界てw
そもそも次の疑問に移ったなら、その過程を説明するのが回答者への最低限の礼儀だろ。
社会出て苦労するよ。
ちなみに>>591は、俺ならこう書く。
sub merge_argument_and_default {
my ($argument, @default) = @_;
my %count;
$count{$_} = $default[$_] for( 0..$#default );
$count{$_} = ${ $argument }[$_] for( 0..$#{ $argument } );
return map { $count{$_} } sort keys %count;
}
0598nobodyさん
2008/05/28(水) 11:40:59ID:???言葉遣いが丁寧なだけで、いっぱしの大人だと思ってる人。
0599nobodyさん
2008/05/28(水) 12:04:01ID:???>>598
ガキなの見え見えなんだよねw
ttp://www2.atpages.jp/mirror/2ch/perl/prog/read.php/1157874614/
の595を思い出した。
0601nobodyさん
2008/05/28(水) 15:44:58ID:???5.8より昔のリリースだとしか思えない。
0602nobodyさん
2008/05/28(水) 15:51:58ID:???Ver 5.010000
こう書けばよいのか?
0603nobodyさん
2008/05/28(水) 16:09:29ID:???知らなかったorz
0604nobodyさん
2008/05/28(水) 16:21:25ID:???苦肉の策なんだろうな……。
0605nobodyさん
2008/05/28(水) 17:55:49ID:???0607nobodyさん
2008/05/28(水) 20:28:19ID:???この$ipが存在するか、あるテキストファイル(ip.txt)を読んで
チェックしています。以下は例です。
$ipは"192.168.0.1"
ip.txtに192.168.0.1が記述してあります。
この場合マッチするようプログラムしてあります。
ip.txtに
192.168.0.0/24
または
192.168.0.0/255.255.255.0
と記述してあるものと
マッチさせたいのですが、
そういうサブルーチンは
ありますでしょうか?
簡単にいうと、あるIPアドレスが
サブネットマスクで指定してある
10進表記またはサイダー表記に
マッチするか判定したいのです。
ip.txtは10進表記でもサイダー表記の
どっちでも構いません。
0608nobodyさん
2008/05/28(水) 20:34:04ID:???の543-544及び「IP pack unpack perl」でググれ。
0610597
2008/05/28(水) 21:17:34ID:???終わった話題なんだけど、ちょっと気になった。
めんどくさかったら、スルーして。
提示してくれてるルーチンだと、
引数1 @array1 = ();
引数2 @array2 = ( 1,2 );
のとき、返り値が空になっちゃうよね。
配列1(引数1) > 配列2(引数2) という優先順位で、
配列3(返り値)を混ぜ合わせるというのが目的の処理だと思うんだけど、
配列1と配列2で要素数の大きい配列を、要素数だけループさせる処理にする場合、
キレイにまとめる方法ってないかなぁ?
if( ( $#array1 <=> $#array2 ) == -1 ) {
EXPR for( 0..$#array2 );
} else {
EXPR for( 0..$#array1 );
}
みたいな、冗長な方法しか俺には思い浮かばなかった。
だから、「配列の重複値をハッシュを利用してマージ」の応用みたいなことを>>597でやってみたわけだ。
なんか美しい方法あればいいんだけどなぁ。
0612597
2008/05/28(水) 21:26:18ID:???こんな前処理してから、>>599のmap対象配列に、( 0..\$temp ) って感じかなぁ?
エレガントさには欠けるけど、これが可読性保つギリギリかな?
0613597
2008/05/28(水) 21:28:46ID:???0615599
2008/05/28(水) 22:23:24ID:???ああ、
@array1 = ( undef, undef ) ;
は考えてたけども、それは想定してなかったw
>>612の解で良いんじゃね? 助長を厭わないならば、
map{ 略 } 0 .. $#{$_[0]} , 0 .. $#_ - 1 ;
っつー荒技もw
自分のスクリプトじゃ絶対やんないけどね。
0617nobodyさん
2008/05/29(木) 03:05:45ID:???覚えると便利そうだけど。
0618nobodyさん
2008/05/29(木) 03:45:40ID:???違うっていえば、{}の中を、引数リストのそれぞれの要素で実行した結果をリストとして返すってとこか。
かなり便利な局面もある。覚えとくべきだとは思う。
@res = map{ $_ + 10 } (1,2,3,4,5) ;
print join("\n",@res);
---結果---
11
12
13
14
15
$_->[0] += 1900;
$_->[1]++;
@$_;
}[(localtime)[5,4,3,2,1]];
2008/05/28 07:02
って出るかと思う。
0620nobodyさん
2008/05/29(木) 08:23:18ID:???シュワルツ変換という定番sort手法には必須だよ。
ぐぐって、foreach 文で書いてみたらありがたみが分ると思う。
>>619
お前さんの例は頻繁にとんでもなく斜め上を行くなあw
なんで一要素しかないと分りきってる無名配列を作って map の例にする?
do ならいざしらず
perl -le 'my $Now_Date = sprintf qq|%04d/%02d/%02d %02d:%02d|, do{
@_ = (localtime )[5,4,3,2,1] ;
$_[0] += 1900 ;
$_[1] ++ ;
@_ } ;
print $Now_Date ;'
それ以前に普通は↑こんな面倒な事しないだろ?
perl -MPOSIX=strftime -le '$str =strftime "%Y/%m/%d %H:%M", localtime; print $str, "\n"; '
0621607
2008/05/29(木) 17:51:57ID:???IPアドレスのチェックを行いたいと思ってます。
ググると、以下の様な正規表現がありますが、
\d(バックスペース)の意味が分かりません。
どういう意味なんでしょうか?
\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
0622nobodyさん
2008/05/29(木) 17:53:57ID:???0623607
2008/05/29(木) 17:54:42ID:???\dは数字でした。
申し訳ない
0624607
2008/05/29(木) 18:10:05ID:???正規表現で/をマッチさせたいのですが、
以下であってますでしょうか?
$hoge =~ /\//
0625607
2008/05/29(木) 18:11:58ID:???\/で、いけるみたいです。
お騒がせしました。
0626nobodyさん
2008/05/29(木) 18:15:31ID:???すこしは綺麗?
0627nobodyさん
2008/05/29(木) 18:19:11ID:???シュワルツ変換とかまだいまいち理解できないけど良さそうだね。
sortは結構使うから思い処理の部分で使うのはいいかも。
でも問題は後で読み直して何してるか理解できなくなりそうな所だな。
つっこみおおきに♪
mapを覚えちゃってからどんどん斜め上に逝っちゃいました。
ひとまず車輪の再発明は大好き♪
0629nobodyさん
2008/05/30(金) 02:09:30ID:???0630nobodyさん
2008/05/30(金) 08:17:40ID:???0631nobodyさん
2008/05/30(金) 10:14:07ID:???0632nobodyさん
2008/05/30(金) 10:19:32ID:???0633nobodyさん
2008/05/30(金) 11:57:18ID:???を書くとローカルで文字化けしてしまいます。これをコメントアウトすると
XREA.COMのサーバ上でScript Errorが発生してしまいます(しかもエラーログが見られない)。
ローカルでもXREA.COM上でも動くようにしたいのですがどうすればいいでしょうか。
コードはこんな感じです。
#!/usr/bin/perl
use strict;
use XML::DOM;
use encoding "utf8";
my $xhtml_file = $ENV{'PATH_TRANSLATED'};
my $parser = new XML::DOM::Parser;
my $doc;
eval { $doc = $parser->parsefile($xhtml_file) };
if($@) {
print "Content-Type: text/plain;charset=utf-8\n\n";
print "parsing error occured: $@";
exit;
}
# 広告挿入処理
print "Content-type: application/xhtml+xml;charset=utf-8\n\n";
print $doc->toString;
$doc->dispose;
ローカルの環境はUbuntu 8.04 + Perl 5.8.8 + Apache 2.2.8、
XREA.COMはよくわかりません。
0635nobodyさん
2008/05/30(金) 12:23:13ID:???utf8::is_utf8($doc->toString) ? print encode('utf-8', $doc->toString) : print $doc->toString;
とすればいいみたいです。utf8フラグというのが関係しているみたいなので、
調べてみます。おさわがせしました。
0637nobodyさん
2008/05/30(金) 12:50:11ID:???0638nobodyさん
2008/06/01(日) 07:19:24ID:???0639nobodyさん
2008/06/02(月) 12:34:35ID:???Last-Modified↑これをtimeの値に変換する方法を教えてください。
3600秒以内とかの判定に使いたいので。
0642nobodyさん
2008/06/02(月) 13:51:21ID:???$mon = 1 if $mon eq 'Jan';とか。
スマートな例があったら参考の為に見せてください。
sub last_modified {
my $time = shift;
my($day, $mon, $year, $hour, $min, $sec);
if ($time =~ /\w+, (\d+) (\w+) (\d+) (\d+):(\d+):(\d+) GMT/) {
($day, $mon, $year, $hour, $min, $sec) = ($1, $2, $3, $4, $5, $6);
$mon = 1 if $mon eq 'Jan';
$mon = 2 if $mon eq 'Feb';
$mon = 3 if $mon eq 'Mar';
$mon = 4 if $mon eq 'Apr';
$mon = 5 if $mon eq 'May';
$mon = 6 if $mon eq 'Jun';
$mon = 7 if $mon eq 'Jul';
$mon = 8 if $mon eq 'Aug';
$mon = 9 if $mon eq 'Sep';
$mon = 10 if $mon eq 'Oct';
$mon = 11 if $mon eq 'Nov';
$mon = 12 if $mon eq 'Dec';
} else {
die "Error: $time\n";
}
$time = timelocal($sec,$min,$hour,$day,$mon-1,$year);
return $time;
}
0643nobodyさん
2008/06/02(月) 14:47:28ID:???%mons = (
Jan => 1, Feb => 2, Mar => 3, Apr = 4, # ……以下省略
);
$mon = $mons{$mon};
とかどうよ?
0647nobodyさん
2008/06/02(月) 17:46:33ID:VCfcjQkNHTML::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 です。
0648nobodyさん
2008/06/02(月) 17:51:49ID:???0649nobodyさん
2008/06/02(月) 18:08:23ID:VCfcjQkNありがとうございます。
助言どおり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.
0650nobodyさん
2008/06/02(月) 18:17:18ID:???0651nobodyさん
2008/06/02(月) 18:18:22ID:???0652nobodyさん
2008/06/02(月) 18:25:00ID:VCfcjQkN↑必要としているモジュールは違うものの、
この人と同じ状況なのかな、と思うんですがどう思いますか?
同じ状況だとすると、不可能ですよね
FTPであげることしかできませんので。。。
0653nobodyさん
2008/06/02(月) 18:41:40ID:???Linuxでコンパイルし直さないとムリ。よってムリ。
0654nobodyさん
2008/06/02(月) 18:45:29ID:VCfcjQkN5.00503で使えるHTML::Templateの代わりのようなものがほしいんですが、
どこを探せばいいでしょうか。
何度も申し訳ありません。
0655nobodyさん
2008/06/02(月) 18:52:18ID:VCfcjQkN0656nobodyさん
2008/06/02(月) 18:56:19ID:???自前でテンプレート化した方が早い。
スキン対応と銘打ってる配布CGIのソース読んだ方が早い気がする。
0657nobodyさん
2008/06/02(月) 18:59:25ID:???0658nobodyさん
2008/06/02(月) 19:03:56ID:???ってか、>>649の内容を見るに、DynaLorderでわなくて、Digest::MD5(.so)が無いんでないの?(これも標準でない?)
まあなければ、Digest::MD5はXSモジュール含んでるから、
そのサーバー上でコンパイルし直さないと実行できないのは、>>653と同じ意見だけど。
0659nobodyさん
2008/06/02(月) 19:07:00ID:VCfcjQkNテンプレート使えないとなると、めんどくさくなるけど、まぁがんばります。
ありがとうございました。
0660nobodyさん
2008/06/02(月) 19:49:04ID:???HTMLと最も親和性のある言語として、Perl/CGIが一世風靡しただろ。
0663nobodyさん
2008/06/03(火) 00:57:17ID:etSjPPZKプログラムを作ったのですが
HTMLのformでenctypeをmultipart/form-dataにすると
送られてくるデータの形式が変わってしまって
うまくハッシュに確保することができなくなっちゃいました。
送られてきたデータが
multipart/form-dataなのか
application/x-www-form-urlencodedなのか
調べる方法ってありますか?
ついでに、multipart/form-dataで送られてきたデータの扱い方を
まとめてあるサイトとかありましたら教えてほしいです。
0664nobodyさん
2008/06/03(火) 01:01:53ID:???multipart/form-data の処理は CGI.pm 使ってね♪
0665nobodyさん
2008/06/03(火) 01:12:56ID:???CGI.pm ならどちらの形式でも意識せず受け取れる。
http://perldoc.jp/docs/modules/CGI.pm-2.89/CGI.pod
自前実装したいのなら
http://www.studyinghttp.net/cgi-bin/rfc.cgi?3875#Sec8.2
http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/interact/forms.html#h-17.13.4.1
http://www.studyinghttp.net/cgi-bin/rfc.cgi?2388
0666nobodyさん
2008/06/03(火) 01:24:31ID:etSjPPZKありがとう!
0667nobodyさん
2008/06/03(火) 01:58:53ID:???テンプレートエンジン、自分で作るという手もある。
そんなに難しくないよ。
Compositeパターンでも使えば。
0668nobodyさん
2008/06/03(火) 09:41:38ID:???HTML をふつうに書く
HTML なかに <%BODY%> とか、挿入場所を示す識別子をいくつか用意して書き込む
プログラムからテンプレート HTML を読み込む
正規表現で置換
たったこれだけです。
0669nobodyさん
2008/06/03(火) 11:07:04ID:???HTML::Templateは単純な処理だしね
さくっと使いたい時には便利、無けりゃ無いでどうにでもなる
0670nobodyさん
2008/06/03(火) 12:56:41ID:K4KbdDUTそのCGIですべてを管理するような仕組みを作った場合
やっぱindex.cgiにアクセスが集中してよくなかったりするんですか?
0671nobodyさん
2008/06/03(火) 13:31:41ID:???自分は普通のエディタ (関数へのジャンプとか無くて色分けだけ) なので
まったく違う処理はファイル分けてる
0672nobodyさん
2008/06/03(火) 17:01:51ID:???それぞれ頭で同じ事やってるから、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の呼び出し回数倍増えるよ。
そういう事じゃなくて??
0673nobodyさん
2008/06/03(火) 17:44:51ID:???俺それやってる
wikiみたいに書けるテキストファイルを自動で携帯/PCに最適化してValid XHTML出力する、みたいな。
0674nobodyさん
2008/06/03(火) 17:56:29ID:???0675nobodyさん
2008/06/03(火) 19:41:27ID:???企画倒れというより、制作者が途中で飽きて、ブームになっても、そのまま放置……みたいな。
かのCPANだって、一部のモジュール以外は、姥捨山みたいになってる。
古いモジュールに、パッチ送ってもメール不達とか多すぎるんだよ!
0676nobodyさん
2008/06/03(火) 20:52:43ID:???ここの 東京の 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 が出てくるのは判っています。
0677nobodyさん
2008/06/03(火) 21:13:48ID:???ダンプしろよ
0678nobodyさん
2008/06/03(火) 21:21:10ID:???manual嫁。
あと、XMLの中にareaやinfoやrangeの要素が1つしか無い場合に配列要素に
ならないのがTreePPの仕様なので、例えばinfoが1要素しか無い場合は
print $tree->{weatherforecast}{pref}{area}[1]{info}{temperature}{range}[1]{#text}
とアクセスしなくてはいけない。オプションで回避できるけど。
0679670
2008/06/03(火) 22:25:48ID:etSjPPZK>>673
ちょっと俺の勉強不足で言ってることがよくわからないけれど
例えばindex.cgi?page=homeだとhome.htmlをcgiプログラムが引っ張ってきて表示する
みたいな仕組みを作った場合、
どのユーザーがどのページを見てもindex.cgiに必ずアクセスするわけじゃない?
てことはページが1000ページとかできたとして
いろんな人がいろんなページを見出したらindex.cgiのアクセスが集中して
なんかまずいことになったりしないのかなって思ったの。
教えてLarry!!
0680nobodyさん
2008/06/03(火) 22:40:04ID:???0681670
2008/06/04(水) 00:28:11ID:KcodebuXあ、じゃあ余計な心配しなくて大丈夫かぁ
0682nobodyさん
2008/06/04(水) 01:09:20ID:???0683nobodyさん
2008/06/04(水) 05:38:01ID:???A:opendir でファイル一覧を取得する
B:予めファイル一覧をそれ用のメモファイルに書き出しておいてそれを読みこんで取得
AとBではどちらが負荷が少ないですか?
0684nobodyさん
2008/06/04(水) 06:05:53ID:???0686nobodyさん
2008/06/04(水) 10:13:14ID:???掲示板のタイトル一覧取得を現在作っています。
それでタイトルがもし長かった場合、最初の9byteだけを表示するようにしたいのですが・・・
if (length($title) > 9) { $get = substr($title[3],0,9); }
以上のようにしてしまうと、9byte目に全角文字が来た場合文字化けしてしまいます。
例えば、
$title = "testtesttest"; この場合は $get = testtestt
$title = "テストテスト"; これだと $get = テストテ爛
こういった文字化けを回避するような、いい方法は無いでしょうか?
0687nobodyさん
2008/06/04(水) 10:15:53ID:???0688686
2008/06/04(水) 10:27:56ID:???調べてみたところ、Jcode.pmのモジュールみたいですね。
今までずっとjcode.plばっかだったので知らなかった…
さっそく試してみます。
どうもありがとうございました。
0689670
2008/06/04(水) 13:24:15ID:44uKn/lkスミマセン基地外でした。
0690nobodyさん
2008/06/05(木) 00:08:18ID:S7Nj2GEOどうせならifにあわせてelとefとか2文字にしてほしかったん
0691nobodyさん
2008/06/05(木) 00:28:25ID:???0692nobodyさん
2008/06/05(木) 22:21:15ID:???0693nobodyさん
2008/06/05(木) 23:21:13ID:???switch-caseでいいと思うのになんでgiven-whenにしたのかな?Switch.pmがあるから?
0694nobodyさん
2008/06/06(金) 01:28:23ID:???http://pc11.2ch.net/test/read.cgi/php/1008355270/85
Perl の自然言語的体裁には switch-case より given-when の方が
よりしっくりくるかもね。
0695nobodyさん
2008/06/07(土) 20:54:21ID:8brPzE2oこのサイトに
http://v.youku.com/v_show/id_ch00XMjc3MDQ1MzI=.html
を入力するとリンク先が4つほどでます。
これを自分でもPerlCGIで再現したいんですが、4つのリンク先をどうやって出してるのかわかりません。
HTMLのソースを見る限り4つないんです。
ないものを何かを元にして解析?してるようです。
4つの違いは以下です
http://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>
これが大本でこれを解析してるんでしょうか。
こういうのはどうやって解析すればいいのでしょうか?
よろしくお願いします。
0696nobodyさん
2008/06/07(土) 21:00:16ID:???0697nobodyさん
2008/06/07(土) 21:25:47ID:8brPzE2oですが4つとは限らないんです。
このビデオは4つですが、者によっては8つとかになります。
それをどうやって特定してるのかがわかりません。
0699nobodyさん
2008/06/07(土) 21:43:36ID:8brPzE2o???
それではyoukufireではどうやってやってるんでしょうか?
こういうのってどういうスレに行くと知ってる人がおられるのでしょうか?
フラッシュ関連なのでしょうか?
自分はPerlをかじる程度しか知らないのでついここに来てしまったのですが。
アドバイスお願いします
0700nobodyさん
2008/06/07(土) 22:34:21ID:???全くのスレ違いです。
0701nobodyさん
2008/06/07(土) 22:55:37ID:8brPzE2o他で質問してみます。ありがとうございました。
0702nobodyさん
2008/06/07(土) 23:03:35ID:???結局、HTTPレスポンスを解析する必要があるから。
そして、HTTPレスポンスの意味を把握するには、
sidなどユニークなIDのパターン解析と
youkuで使われてるファイル取得swfの内部解析も必要。
この意味が分からない次元じゃ、到底ムリ。
0703nobodyさん
2008/06/07(土) 23:36:39ID:8brPzE2ohttp://www.kasai.fm/perlHTTP/
http://www.kasai.fm/perlHTTP/decode.html
からとりあえずそのhttpレスポンスとやらを実際に見てみようと思いましたが。
どうもCan't locate BASE64 in @INC エラーがでまして。
このモジュールをactiveperl5.8.1のppm(リポジトリは初期状態のまま1つです)でいれようとしましたが
ない模様です。
MINE::Base64って自分でコンパイル?でしたっけができないとダメなものなのでしょうか。
0704nobodyさん
2008/06/07(土) 23:53:12ID:8brPzE2ogetHTTPの
#use MIME::Base64;
require('BASE64');
を
use MIME::Base64;
#require('BASE64');
にしたらエラーが出ませんでした。動いてるかはわかりませんが。
0705nobodyさん
2008/06/08(日) 00:05:22ID:???というか、質問内容が初心者未満の単なる教えて君だぞ。
最低限、ドキュメント読むかググってから書き込め。
0706nobodyさん
2008/06/08(日) 00:14:24ID:Mcg1bojLそこからフラッシュのURLを抜き出すところまではできそうです。
>sidなどユニークなIDのパターン解析と
>youkuで使われてるファイル取得swfの内部解析も必要。
これを検索とか意味を探してきます。
0707nobodyさん
2008/06/08(日) 14:55:02ID:???package foo;
*{foo::hoge::bar} = sub {1};
$hoge = foo->hoge;
$hoge->bar();
Can't locate object method "hoge" via package "foo"
アレ?
0708nobodyさん
2008/06/08(日) 16:56:29ID:???基本から一通り勉強し直したらいいんじゃないかな。
http://www.kt.rim.or.jp/~kbk/perl5.005/perlmod.html
http://www.kt.rim.or.jp/~kbk/perl5.005/perlobj.html
0709nobodyさん
2008/06/08(日) 18:03:33ID:???サンクス
最後のページ
Summary
なすべきこと。今、あなたは部屋を出てオブジェクト指向方法論に関する書籍を購入して、そして六ヶ月かそこらの間悩む必要があるでしょう。
ワロタ
0710nobodyさん
2008/06/08(日) 18:41:29ID:NYonUevmhoge {
$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");
勉強してきます
しかしあんま資料ないっぽい
0711nobodyさん
2008/06/08(日) 18:52:18ID:???*{foo::hoge::bar} じゃなくて *{foo::bar}
hogeなんていうpackage作ってないし。
0712nobodyさん
2008/06/08(日) 19:09:16ID:???それだ! ありがとうやっとわかったよ。
てっきり package a::b::c;
ってやると
a
a::b
a::b::c
ってのが自動的に生成されると思ってた。
0713nobodyさん
2008/06/08(日) 20:02:49ID:???見かけ上はできるけだろうけどPerlのオブジェクトは名前空間に変数結び付けてるだけだからなあ
と思ったけどもう一度勉強した方が良さげだね
0714nobodyさん
2008/06/08(日) 20:20:35ID:???CGIであるデータをホームページ上に表示することをやっています。
5000件ほどのデータをfetchrow_arrayで1行ずつフェッチしていますが
どうもフェッチ処理に時間がかかっているようです。
実際に必要なのは20件ほどで、他はページ送りで表示可能。
検索エンジンの検索結果ページなんかをイメージしていただければ。
そこで、不要なフェッチを無くすために、
複数行を飛ばしてフェッチすることってできますか?
もし他に改善策があれば教えてください。
一応、SELECTの段階で20件だけを取り出す方法を思いつきました。
0715nobodyさん
2008/06/08(日) 20:39:35ID:???@arrayの高速操作が必要ならスライス操作とか調べてみると吉
SELECTで絞れるなら断然そっちのほうが早いと思うよ。
0716nobodyさん
2008/06/08(日) 22:10:54ID:???ありがとうございます。
スライス操作調べてみました。SELECTでLIMITつければいいんですかね?
これで必要な分だけのフェッチですみましたが、どうも時間がかかるようです。
ちょっと複雑なSQL文なんでそっちのほうがボトルネックのようですorz
SQL文のほうを考え直そうと思います。
0717nobodyさん
2008/06/09(月) 12:35:45ID:???SELECT FOUND_ROWS();
>>715
>>716はSQLの話じゃなくて、
大規模の配列使うなって話で、
my @temp = splice( @array, 0, 20 );
的なことでしょ。
SQL文はスレ違い。
0718nobodyさん
2008/06/09(月) 15:41:11ID:???生えーぞ。
0719nobodyさん
2008/06/09(月) 16:00:10ID:???0720nobodyさん
2008/06/09(月) 19:29:41ID:BYZvhcIN其の都度ひっかかって質問するより勉強したほうがはやいよ
リファレンスページみっけてプリントアウトしとけ
0721nobodyさん
2008/06/09(月) 23:24:50ID:???11
11000
↑これをソートすると
11
11000
122
↑こんな風になってしまいます。
11
122
11000
↑こんな感じで大きい順にソートする方法を教えてください。
0722nobodyさん
2008/06/09(月) 23:26:19ID:???0724nobodyさん
2008/06/13(金) 02:38:01ID:???*** 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で判断するしかないのでしょうか?
0725nobodyさん
2008/06/13(金) 09:17:11ID:???ブラウザから渡されるデータ自体に type 属性の値が含まれて
いないのだから、CGI プログラム上から調べる事はできない。
ref $value でアタリを付ける事はできる。
http://perldoc.jp/docs/perl/5.10.0/perlfunc.pod#item_ref_EXPR_ref_reference
http://perldoc.jp/docs/modules/CGI.pm-2.89/CGI.pod
(「ファイル・アップロード・フィールドの作成」の項)
0726nobodyさん
2008/06/13(金) 10:25:57ID:???$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をどのように使ったら良いのか分らなくなりました
よろしかったらどのように表記したら良いのか教えてください
0728726
2008/06/13(金) 11:00:28ID:???Perlメモはいつも参考にさせて頂いてまして
・複数の項目でソートする
・自分で決めた順番でソートする
の応用でなんとかなるかと思ったのですが
どうにも分らずこちらでお伺いしました次第です
どの辺りを応用すればよろしいでしょうか?
0729726
2008/06/13(金) 11:18:24ID:???先にmapでポイントの配列を作る事でなんとか出来ました
@id = map { $_->[0] } sort { $b->[1] <=> $a->[1] } map { [$_,$unit->{$_}->{point} ] } @id
ありがとうございました
そしてお騒がせ致しました
0730nobodyさん
2008/06/13(金) 11:37:27ID:???0732726
2008/06/13(金) 12:41:47ID:???コードがすっきりしました
>>730さん、ありがとうございます
0733nobodyさん
2008/06/13(金) 12:51:42ID:???sortでなんで$_がでてくるのかわからない。$aと$bしかないだろ。
grepやmapと混乱してないか?
0734726
2008/06/13(金) 13:06:56ID:???>>726のソースに間違えて辿り付いたので勘違いしてました
てっきり配列の要素を引っ張り出したらそれが$_になるのかと・・・
で、$a,$bはそれが直接比較の対象にならないといけないのかと勘違いしてました orz
0735nobodyさん
2008/06/14(土) 03:33:00ID:???0736nobodyさん
2008/06/15(日) 00:12:38ID:???リファレンスで受け渡しも簡単だし
0737nobodyさん
2008/06/15(日) 01:14:21ID:???普段は問題なく動いているのですが、自宅で試したperlをiswebにアップロードする作業が面倒でたまりません。
そこで質問なのですが、
#!/usr/local/bin/perl
とかの表記を書き換えずとも、上記二つの環境の両方で動くように出来ないでしょうか。
毎度毎度アップロードするときに、全cgiを書き換えているので、そこだけでも何とかしたいんです。
もしくは、専用のFTPソフトみたいなので、アップと同時に書き換えてくれるような奴があると良いなぁって思ってます。
どなたか、よろしくお願いいたします。
0738nobodyさん
2008/06/15(日) 01:43:19ID:???Net::FTP使えば、30分程度で作れるだろ。
0739nobodyさん
2008/06/15(日) 01:43:42ID:???っ ActivePerl をC:\usr\local\以下にインストール
っ 「メンドクセーっ! 頭 #!perl に統一してやんよ。」(Path通ってなかったら知らん)
0740738
2008/06/15(日) 01:45:20ID:???XPでエイリアス作れるようにするソフト使って、iswebに合わせればいい。
0741nobodyさん
2008/06/15(日) 01:52:33ID:???■サーバー
#!/usr/local/bin/perl
require "example.cgi";
■ローカル
#!C:/perl/bin/perl
require "example.cgi";
これなら、example.cgi をアップするだけでOKです。
(意味が違うでしょうか??)
0742nobodyさん
2008/06/15(日) 02:10:08ID:???どうも、有難うございます。
>>741さんのが一番楽そうなので、それでいこうと思います。
どうもありがとうございました。
0743nobodyさん
2008/06/15(日) 14:41:47ID:???PerlでCGIを作っているのですが、いくつかのフォームから入力を取ろうと考えています。
フォームが一箇所ではないので(検索や書き込み、削除等)、送られて来る処理が全く違うため、
送られて来たフォームによって処理を変えたいです。
例えば、検索ならこの関数、書き込みならこの関数、のように分けたいのですが、どのように
実装するのがスマートな方法でしょうか?
考えているのはhiddenで、フォーム別の値を持っておきその値によって分岐しようと思っている
のですが、他にスマートな方法があれば知りたいです。
宜しくお願いします。
0744nobodyさん
2008/06/15(日) 14:43:16ID:???これが一番一般的で分かり易いと思うよ
0745nobodyさん
2008/06/15(日) 15:43:06ID:???postとらgetを使うときのデバッグってどうしてる?
コマンドラインからPOSTを設定する方法とかあるの?
めちゃめちゃ大変なんだが
0747nobodyさん
2008/06/15(日) 17:51:51ID:???そんなに面倒?
0748nobodyさん
2008/06/15(日) 17:55:33ID:???postでもgetでも、与えられる引数をちゃんとチェックすることで、自然と動作の分岐が行えると思うんだけど
0749nobodyさん
2008/06/16(月) 02:30:03ID:???| ̄ ̄ ̄ ̄| [検索] [管理] [ほげほげ]
 ̄ ̄ ̄ ̄
みたいな感じなら、submit に文字列を仕込むという方法が。
0750nobodyさん
2008/06/16(月) 10:59:18ID:???ラジオかセレクト使えばいいと思う。
それかAjaxか
0752nobodyさん
2008/06/16(月) 12:17:52ID:???ロボットのAIの開発からしなきゃだな。
0754nobodyさん
2008/06/16(月) 12:53:21ID:???0755nobodyさん
2008/06/16(月) 23:32:06ID:???0757nobodyさん
2008/06/17(火) 10:41:46ID:???実際に色々な条件でPOST、GETさせてみて、
おかしくなったらそのつど、修正します。
あとは、スクリプトをWEB上にアップしている場合、
ユーザーの方からのバグ報告フォームを設けておくと、
問題発見が早くなります。
コマンドライン POSTで検索:
http://www.google.co.jp/search?hl=ja&rls=GFRC%2CGFRC%3A2007-04%2CGFRC%3Aja&q=%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3%E3%80%80POST&lr=
0759nobodyさん
2008/06/17(火) 14:47:07ID:???0760nobodyさん
2008/06/17(火) 16:37:40ID:???0761nobodyさん
2008/06/17(火) 18:26:54ID:???意地はってないで、「わかりません!教えてください!」っていうのがオトナだよ
0762nobodyさん
2008/06/17(火) 18:42:33ID:???意地はってないで、「詳しいことはわかりません!!」っていうのがオトナだよ
0763nobodyさん
2008/06/17(火) 18:53:23ID:???0764nobodyさん
2008/06/18(水) 12:33:38ID:???0765nobodyさん
2008/06/18(水) 14:54:32ID:???guess_encoding のあとに $utf8 = $enc->decode($inputkeyword); とやってるのですが、エラーとなります。
「 or 」 で split して
my $utf8 = Encode::decode($EncType[0], $inputkeyword);
のようにしたりするのが一般的なんでしょうか?
それとも Encode::decode する際に優先順位を決めたり出来て、それで decode できちゃったりするもんでしょうか?
0766nobodyさん
2008/06/18(水) 15:02:39ID:???一般的かどうかは知らんが、俺は JEncode::_func_getcode() みたいな
ラッパーを書いて使っている。
http://www.donzoko.net/source/JEncode/JEncode.pm
0767nobodyさん
2008/06/18(水) 15:25:31ID:???ありがとうございます。
_func_getcode と _ambiguous、_test_mojicode を見ながら実装します。
0768nobodyさん
2008/06/20(金) 01:13:32ID:???@X1(d,e,f);
と二つリストを作って、
$Y = int(rand(2));
で$Yに0か1を入れて、それに対応したリストを使いたいのですが、どうすればいいですか?
print "$X"$Y"[1]";
のような感じにしたいのですが…。
0769nobodyさん
2008/06/20(金) 01:41:21ID:???0770nobodyさん
2008/06/20(金) 01:43:48ID:???print @{'X'.$Y}[1];
0771nobodyさん
2008/06/20(金) 01:53:59ID:???カッコイー
こんな風にしてた。
$Y = 'X'. int(rand(2));
print ${$Y}[1];
横からスマソ
0773nobodyさん
2008/06/20(金) 08:10:04ID:???今時シンボリックリファレンスはやめとけ。
use strict;
my @X = [[a,b,c], [d,e,f]];
print $X[0]->[1]; # ==b ($X[0][1] とも書ける)
print $X[1]->[2]; # ==f
0775768
2008/06/21(土) 17:41:30ID:???バカの一つ覚え状態でかいてます><
>>773の書き方は始めてみました。
ありがとうございます。
0776nobodyさん
2008/06/21(土) 17:48:55ID:???0777nobodyさん
2008/06/21(土) 23:46:21ID:???0779778
2008/06/22(日) 01:49:38ID:???0780nobodyさん
2008/06/22(日) 02:10:15ID:???ちょっとしたデータをファイルの中にまとめておければ便利だと思っているのですが、
そのような奴があれば、助かります。どなたかご教授ください。
0782nobodyさん
2008/06/22(日) 13:05:18ID:???open(COM_RET, "ping -n 10 192.168.100.1 |");
while ($data_line = <COM_RET>) {
print $data_line;
};
close(COM_RET);
0783nobodyさん
2008/06/22(日) 13:27:13ID:???pingコマンドは存在する?
openの後に$|=1;したら表示される?
for (`ping -n 10 192.168.100.1`){print;}ではどう?
0784782
2008/06/22(日) 13:28:07ID:???プログラムの保存先を間違えていました。
0785nobodyさん
2008/06/25(水) 22:01:59ID:???フォームのデータがおかしくなってたことありませんか?
たとえば、なにも入力しなかったinputフォームの値が全て文字列の"VALUE"に
なったり・・・
0786rubi
2008/06/26(木) 00:32:36ID:P35F8OvT0787nobodyさん
2008/06/26(木) 00:55:50ID:???引数中にスペース等ある時は、
system qq($cmd "$arg1" "$arg2" ・・・);
0788nobodyさん
2008/06/27(金) 16:35:38ID:???こんなファイルがあります → 項目\tデータ\n
中には同じ項目でデータ違いがあります。
100\t百\n
100\t百円\n
100\t百円玉\n
同じ項目は一つで良いので一番データの短い100\t百\nを残して
残りの長い二行を削除したいと考えています。
何か良い方法は無いでしょうか。
短いデータのみ残したいので配列の重複削除サンプルは
そのままでは利用不可でした。
0789788
2008/06/27(金) 16:38:10ID:???重複サンプル〜以下は忘れてください。
0790nobodyさん
2008/06/27(金) 17:02:39ID:???0791788
2008/06/27(金) 17:30:24ID:???項目もデータもバラバラなので方法が思いつかなくて。
0792nobodyさん
2008/06/27(金) 17:41:01ID:???0793788
2008/06/27(金) 17:59:26ID:???そうじゃなくて、連想配列にしてデータサイズでソートとかあるんでしょうか?
分かりません(><)
0794nobodyさん
2008/06/27(金) 18:21:02ID:???0795nobodyさん
2008/06/27(金) 18:27:40ID:???まずはopenでファイル開けるの解かる?
0796788
2008/06/27(金) 18:50:29ID:???連想配列に入れてみました。
my %DATA;
open R, "koumoku.txt" or die;
while (<R>) {
chomp;
my ($key, $value) = split(/\t/);
$DATA{$key} = $value;
}
close R;
データサイズでソートは後でググってみます。
項目ごとに最短データだけ残す方法は今の時点で想像できません。。
0797nobodyさん
2008/06/27(金) 19:15:25ID:???if (exists $DATA{$key}){
length($DATA{$key}) > length($value) and $DATA{$key}= $value;
} else {
$DATA{$key}= $value;
}
0798nobodyさん
2008/06/27(金) 19:47:44ID:???食事してて遅れました。
そのままコピペしたのですが望むとおりです完璧です。
項目ごとに一番小さいデータが残る。凄い考え付かない。
本当にありがとうございました。
0799nobodyさん
2008/06/28(土) 13:36:15ID:???・母親は受験勉強をする息子の学力向上のためにフェラチオをする
・日本人女性の55%は、出会ったその日に男と寝る
・ファストフードは女子高生たちを性的狂乱状態におとしいれる
・ティーンたちはバイアグラを使ってウサギのようにセックスをする
・女子高生は、刺激のためにノーブラ・ノーパンになる
・日本の最新の流行 : 70歳の売春婦
・老人の売春婦の人気にもかかわらず、日本では小学生の売春婦にも仕事がある
・日本の若い看護婦は売春婦に勝る
・24時間オルガズムが止まらない病気で苦しむ日本人女性の数が増えている
・15未満の子供を対象とした疑似ポルノが日本に蔓延している
・OLの72%が、セックスをより堪能するために何らかのトレーニングを受けている
・人妻は気分転換の目的で昔の恋人に抱かれに行く
・主婦は郊外のコイン・シャワーで売春をしている
・日本男子は柔道や空手の部活で男相手に童貞を捨てている
・ほとんどすべての漁師は海でマンタとSEXしている
・まだ10代の少年から退職した老人までみんな2980円の手コキを利用している
・六本木のあるレストランでは、食事の前にその材料となる動物と獣姦する
※同社が全年齢向けコーナーで七年以上にわたり世界に向けて配信していたものの一部です
※同社の行為は日本人への偏見や人種差別、婦女暴行、幼児虐待を助長するものです
◆毎日新聞の英語版サイトがひどすぎる まとめ@wiki
http://www9.atwiki.jp/mainichiwaiwai/
◆毎日新聞問題の情報集積wiki
http://www8.atwiki.jp/mainichi-matome/
つまり日本人なら
http://www.vipper.net/vip552788.jpg
0800nobodyさん
2008/06/29(日) 21:21:31ID:ib7dTQ8mSyntax::Highlight::Engine::Kateはちょっと好みじゃなかったのと、
Text::Highlightは今のところ使い方が分からないの。
0801nobodyさん
2008/06/29(日) 21:37:01ID:???0802nobodyさん
2008/06/29(日) 23:14:30ID:???0803nobodyさん
2008/07/03(木) 04:34:06ID:N0WlacZt220 名前: 名無し三等兵 [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
http://human7.2ch.net/test/read.cgi/ms/1215003832/
★祭り★ 【毎日・変態報道】 毎日新聞、「2ちゃんねる」を名指し…「女性社員中傷書きこみで法的措置」で★26
http://mamono.2ch.net/test/read.cgi/newsplus/1215016627/
【記者】毎日新聞の英語版記事で日本を侮辱【豪人】
http://academy6.2ch.net/test/read.cgi/english/1213971760/
【Daily】毎日新聞英語版がひどすぎる 3【WaiWai】
http://society6.2ch.net/test/read.cgi/mass/1214603376/
【毎日新聞】 iチャネル解約スレ 【変態報道】
http://hobby11.2ch.net/test/read.cgi/keitai/1214802475/
0804nobodyさん
2008/07/08(火) 20:37:38ID:???use CGI;
use Encode;
$cgi = CGI->new;
print "Content-type: text/html; charset=EUC-JP\n\n";
print encode('euc-jp', $cgi->param('test'));
とやって、それぞれUTF8,SJIS,EUCで'test'に入力しても、EUCコードでの文字列が出てこず、化けてしまいます。
どうやって強制的にEUCに変換するのか教えてください。
0805nobodyさん
2008/07/08(火) 20:38:36ID:???perlのバージョンは5.8.8です。
0806nobodyさん
2008/07/08(火) 20:44:53ID:???それも抜きだと jcode.pl で convert するくらいしか他に方法が無い?
0808nobodyさん
2008/07/08(火) 23:49:39ID:???encode()の第2引数は、デコード済みの文字列でないとだめでしょ。
encode(ocode, decode(icode, str))
ocode…出力する文字コード
icode…strの文字コード
str…入力する文字列
0809nobodyさん
2008/07/12(土) 09:51:37ID:???$format = $workbook->add_format();
$format->set_merge();
$worksheet->write_unicode(0, 0, utf8( Jcode->new('ぬるぽ')->utf8 )->utf16, $format);
$worksheet->write_blank(0, $_, $format) for 0..13;
っていう横方向のセルの結合は出来るんだが
$worksheet->write_unicode(0, 0, utf8( Jcode->new('ぬるぽ')->utf8 )->utf16, $format);
$worksheet->write_blank($_, 0, $format) for 0..13;
これだと結合できない。
仕様なのか俺がアフォなのか誰か教えれ!
0810809
2008/07/12(土) 11:19:24ID:???何となくできたわ。
お騒がせしますた。
0811nobodyさん
2008/07/12(土) 18:05:43ID:???お騒がせしたと思うのなら、どうやったらできたのか書くように。
同じ悩みで検索でたどりついた人はまた同じ質問をするでしょ?
0813nobodyさん
2008/07/13(日) 09:44:35ID:SNV4Eg13下記3行目のコードの意味がどうしてもわかりません。。
my @extract_links; #パーズ中に抽出されたURL
my $base = $response->base;
@extract_links = map { $_ = url( $_, $base )->abs; } @extract_links;
Perl初心者にもわかるようなコードに書き直すことはできますか?
何を勉強したら、このようなプロっぽいコードが書けるようになるのかも知りたいです。。
0814nobodyさん
2008/07/13(日) 17:38:13ID:???$ perldoc -f map
@extract_links = map { $_ = url( $_, $base )->abs; } @extract_links;
これはフィルタです。
@extract_links = <--(フィルタ)-- @extract_links;
右側の @extract_linksにフィルタをかけて、自分自身に代入しています。
右側から入ってきた @extract_linksの各要素は、$_に入れられます。
その各要素に対して、
url($_, $base)->abs;
という処理をして(多分相対パスから絶対パスにしているのでしょう)、
その結果を $_ (自身) に入れています。
$_ = url($_, $base)->abs;
結果として@extract_linksの中身が全部絶対パスになって返ります。
0815nobodyさん
2008/07/13(日) 23:01:57ID:???プロっぽいどころか、「どこの素人が書いた?」って言われるコード
だと思うが、、、何で無意味な代入をするかねぇ
3行目の代りになるコード。初心者向け。
foreach my $cont ( @extract_links ){ $cont = url( $cont, $base )->abs ; }
# $_ = url( $_, $base )->abs for @extract_links ;
0816nobodyさん
2008/07/13(日) 23:03:33ID:???map自体を否定してるんじゃないです。
0817nobodyさん
2008/07/13(日) 23:10:10ID:???mapブロック内で$_を変更したら、配列にも影響する。
だから、戻り値で置き換えるのは2度手間ってこと。
mapかforeachかは宗教論争だから好きなの使っとけ。
>>815のが見やすいことが多いけどな。
0819nobodyさん
2008/07/14(月) 00:04:04ID:???馬鹿すぎる
0820nobodyさん
2008/07/14(月) 01:16:23ID:???0821nobodyさん
2008/07/14(月) 14:17:03ID:???0823nobodyさん
2008/07/14(月) 15:02:41ID:???「print "match!\n"if(/^main::HOGE/);」とかしたいんですが、
うまい方法はありませんか?
「my $a=main::HOGE;print "match!\n"if(/^$a/);」はできるんですけど。
正規表現内で、use constant で定義した定数を使いたいのです。
0824nobodyさん
2008/07/14(月) 15:29:04ID:???print "match!\n" if(/^${\HOGE}/);
0825813
2008/07/14(月) 22:29:29ID:ojoqjs1pPerl初心者がいきなりクローラーを作ろうというのが、
ちょっと無謀だったかも。。
基礎から勉強します。(・з・)
0827nobodyさん
2008/07/16(水) 23:13:16ID:???splitで、&を区切り文字として指定した場合、
参考書だと、
&が消える、っていう説明と、
&が残る、って説明が混在しているんだが、
どっちが正しいの?
0828nobodyさん
2008/07/16(水) 23:13:48ID:???0830nobodyさん
2008/07/16(水) 23:54:09ID:???オレらの業界って気軽に試せないのね。
ダムがあったとして
「ここにもし10cmくらいの穴を開けたらどうなるだろう?」
みたいなところなんで、
「いきなり実行する」
っていうのはキチガイ扱いされてクビになるのね。
0832nobodyさん
2008/07/17(木) 00:39:50ID:???&は消える。
参考書のほうが間違ってたわ。
0833nobodyさん
2008/07/17(木) 00:55:40ID:???出版元に問い合わせてみたら?
0834nobodyさん
2008/07/17(木) 02:41:15ID:???1は消えてるんだけど、
2は残ってるの。
余計混乱するわ。
0835nobodyさん
2008/07/17(木) 03:23:04ID:???0836nobodyさん
2008/07/17(木) 05:31:29ID:???「普通は」消えるが正解。正規表現内で()でトラップすりゃ残る。
$str = 'a&b&c&d&' ;
split /&/, $str ; # <= 消える。
split /(&)/, $str ; # <= 残る。
split /(?:&)/, $str ; # <= 消える。
なんで態々解説したかと言うと、区切り文字「列」を二つ使う場合に(|)使ってトラップさせて
「消えないんすけど」って質問された事があったから。
split /(&|:)/, 'a&b&c&d:e:f:g' ; # 本来は区切り文字列ね。
0837nobodyさん
2008/07/17(木) 05:57:35ID:???こういうつまんないことってフレームワークに全部お任せすればよくね。
0838nobodyさん
2008/07/17(木) 06:17:36ID:???0839nobodyさん
2008/07/17(木) 06:48:41ID:???0841809
2008/07/17(木) 09:39:10ID:???すまんこすまんこ。さらに遅レスすまんこ
Spreadsheet::WriteExcelでセルの結合に悩んでるヤシは
ttp://www.koders.com/perl/fid09386E1C3E183B96174D224B87445AE647A32B23.aspx
ここを見れ!
例文が載ってたわ。
0843nobodyさん
2008/07/17(木) 22:27:51ID:???そういうのの、一覧表がのってる
ページをおしえて
0844nobodyさん
2008/07/17(木) 22:29:43ID:???0845nobodyさん
2008/07/18(金) 01:28:58ID:???0847nobodyさん
2008/07/18(金) 09:49:50ID:???0848nobodyさん
2008/07/19(土) 10:24:55ID:???教えてください。
$salt =~ s/[^\.-z]/\./go;
0849nobodyさん
2008/07/19(土) 10:33:23ID:???0851nobodyさん
2008/07/19(土) 18:39:57ID:???$salt =~ # Apply following pattern to $salt
s/ # Start substitution expression
[ # Start difine charactor class
^ # This is negated class
\.-z # Range: "." .. "z" by charactor-code
] # End define charactor class
/ # End pattern and start substitution string
\. # Means "." (NOTE: "\" is meaningless here)
/gox; # Modifiers
# g: global matching
# o: compile the pattern only once
## (x: extended)
>>849
> 5本の指が入る # So loose, and so non-useful for hacking.
0854nobodyさん
2008/07/19(土) 20:59:09ID:???> なんかのソフトでそうやって
> 自動で解説が出るの?
自動で解説できるモジュールあったら便利そうだね!
0855nobodyさん
2008/07/19(土) 21:46:02ID:???>>851はかみ砕いて解説してあるよ。部品ごとにいちいち説明してあるじゃん。
(教えてくんにまともに教えるの癪だからわざわざ英語にしたんだと思うけど)
辞書引くくらいすれば?
perl 置換 パターンマッチ 正規表現 s演算子 でぐぐればいくらでも解説があるよ。
0856nobodyさん
2008/07/19(土) 21:50:14ID:???0857nobodyさん
2008/07/19(土) 22:20:45ID:QBlnT4Mv重い処理をする時に、ブラウザを待たせる必要がないので、
セッションを閉じようと思い、どうすればよいのかwebであさっていたら、
標準出力を閉じるとよいみたいな感じで書いていたので試してみましたが、
処理が待たされます。なぜでしょう?
print "a";
close(STDOUT);
sleep 20;
20秒またされたのち、ブラウザが開放されます。
0858nobodyさん
2008/07/19(土) 22:30:40ID:???0859nobodyさん
2008/07/19(土) 22:33:59ID:QBlnT4Mvこことか
0860nobodyさん
2008/07/19(土) 22:39:51ID:???処理を始めるようだけど、そうしてもダメだったの?
0861nobodyさん
2008/07/19(土) 22:46:03ID:QBlnT4Mv子プロはまだ作ってない。
そこのリンクの
http://www.tohoho-web.com/lng/199909/99090185.htm
環境によるようだね。
こうゆう時の処理はこうだよみたいに書いてあったんで(昔どっかのページで見た)、
普通に出来る処理と思ってた・・・。
0862nobodyさん
2008/07/19(土) 23:04:25ID:???普通のperlではちゃんと、動作しました。
mod_perlでの環境では動作しないようです。
なぜ、mod_perlでは動作しないのかは、よくわかりません。
誰か教えて下され・・・。
0864nobodyさん
2008/07/20(日) 02:16:15ID:???くだすれのほうにもちょっと前に書いたけど、
$|=1にしても、たしか256byteまでは自動でキャッシュが効くとか昔調べた時にどこかに書いてあった。
(昔自分がやったのは、数秒sleep毎に文字列を書き出して、一定時間でexitする。って処理だったけど・・。)
なので自分は、Content-Typeヘッダ出力の直後に、print " " x 256; を書くようにしたらそれで出来た。
あんまりスマートなやり方ではないけど、これ以外に知らない。
(向こうでは、Apacheがキャッシュするって書いたけど、実は自分の思い違いだったかも知れん。
ブラウザとか鯖環境によってはバッファされるbyte数が違うとか言うのも聞いたことがあるのを思い出した。
詳しく調べてないんでよく分からんし、どこに書いてあったかも覚えてない。)
mod_perlについては、printもcloseもexitも全て内部用の関数にoverrideされてるはず。
それに実行されるのは、対象のスクリプトのみではなく、またmodperl::RegistryにしてもPerl Handlreにしても、
実行してるのはApacheプロセスそのものなので、IO周りやsignal周りはApacheの内部実装によると思われる。
それでも上の方法で、ウチの環境では、上のcgiで実行したのと同じ処理ができた。
(すまんが、自分もApacheとかmod_perlの内装知ってるわけではないので、詳しくはわかりません。)
0865nobodyさん
2008/07/20(日) 03:26:59ID:???0866nobodyさん
2008/07/20(日) 03:56:52ID:???0867nobodyさん
2008/07/20(日) 06:30:33ID:???ググってもよく分からんのですよ。
.からzまで以外の文字があったら.(そのままって意味かな?)に変換する。
gオプションだから1回マッチしてもそのあとも処理を行う。
oオプションだからパターンを1回しかコンパイルしない。
だと思うのですが、目的が分からないのです。
あと、oオプションの意味もよく分からないし。
0868nobodyさん
2008/07/20(日) 09:51:06ID:???.からz以外の文字は、
./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz
以外の文字
gオプションが無いと最初の1回マッチするだけで、有るとあるだけマッチを繰り返す
0869nobodyさん
2008/07/20(日) 14:38:39ID:???crypt(3)の標準的な実装では、第二引数(salt)は[a-zA-Z0-9./]からなる二文字です。ここではそれを得るための変換処理の一部過程として置換式を用いています。man crypt も参照。
ここから先は Perl の話題ではなくなりますが、知っていて損もないのでぼちぼちがんばってください。
0870869
2008/07/20(日) 14:58:22ID:???> あと、oオプションの意味もよく分からないし。
>>868 が一行目で書いているけれど補足。
/o 修飾子は実行時に変化する部分が含まれている正規表現の再コンパイルを抑制します。
例えばパターンに変数が含まれているケースで /o 付きの式が複数回実行されてもパターンは再評価されません。
初回評価時の値のままマッチングが行われます。パターンが変化しない旨を明示することで実行時性能の向上を図る機能です。
今回のケースではパターンは [^\.-z] ですから変化する部分はありません。>>868 の言う「無意味」というのはそういうことです。
perldoc perlretut 及び perldoc perlop の Regexp Quote-Like Operators の項も見てみてください。
0871nobodyさん
2008/07/20(日) 16:50:44ID:???回答ありがとうございます。
しかしよく分かりません。。。
[a-zA-Z0-9./]以外にマッチ=ひらがなとか漢字とか?にマッチしたら、
その文字を、そのまま使う???
そうなると、saltが許されるのは[a-zA-Z0-9./]だけなので?????
ん??????????????
俺、アホなのかな?
0872nobodyさん
2008/07/20(日) 19:57:43ID:???パーミッションで、
グループを6とかにすると、
もしそのサーバーが、シェルを使える
サーバーだった場合、
その同じサーバーを使ってる人が
シェルで勝手に入ってきてデータ-を
書き換えられたり、消されたりするので、
グループは0にしなければいけない、と
さっき読んだ参考書に書いてあるのですが、
それであってますか?
0873869
2008/07/20(日) 20:39:57ID:???s/正規表現のぱたーん/左のパターンにマッチした部分を置き換える文字列/
[^\.-z] は一文字幅で /g 修飾子付きだから、マッチする一文字を見つけるたびに、置換文字列で置き換えられます。
置き換える文字列はこの場合 "." だから……。
要は s/// の右半分では "." はメタキャラクタじゃない、つまり何ら特別な意味がないということです。
がんばって気付け。
869 は自覚的なアホを応援しています。
0874nobodyさん
2008/07/20(日) 20:49:41ID:???ちょっとは参考書を信用してもいいんでね?w
0875nobodyさん
2008/07/20(日) 23:09:24ID:???EUCだと、タイトルに日本語使えない、
って参考書に書いてあるんだけど、そうなの?
0876nobodyさん
2008/07/20(日) 23:20:40ID:???HTMLのTITLEタグのことですか?
でしたらヘッダで適切な文字コードを指定すれば使えますよ
0877nobodyさん
2008/07/21(月) 00:13:22ID:???なんだかブラウザの動きがもっさりしてくるんですが、
これはPerlが無駄にメモリを浪費してるからですか?
0878nobodyさん
2008/07/21(月) 02:01:53ID:???0880nobodyさん
2008/07/21(月) 10:10:27ID:???0881nobodyさん
2008/07/21(月) 17:58:17ID:???0882nobodyさん
2008/07/21(月) 18:15:23ID:???0883nobodyさん
2008/07/21(月) 18:38:24ID:???0884nobodyさん
2008/07/21(月) 20:58:45ID:???大筋で合ってるけど微妙に違います。
元のパターンは [^.-z] なので、[a-zA-Z0-9./] 以外にもマッチ。
下記のワンライナーで Let's 実験。
perl -ple "s/[^.-z]/./g"
0885879
2008/07/22(火) 07:08:38ID:???自分で書いた
[a-zA-Z0-9./]以外にマッチしたらピリオドに置き換えろ
と
[a-zA-Z0-9./] 以外にもマッチ
の違いが分かりません。???
0886nobodyさん
2008/07/22(火) 11:13:09ID:???LWP::UserAgentを使って出来そうなのですが、
どうコーディングしていいか分かりません。
よろしくお願いします。
やりたいことは、タイムアウト値を指定して
あるURLにアクセスした場合、
httpステータスコードが404を返しても
それは生きていると判定したいのです。
0887886
2008/07/22(火) 11:24:14ID:???こんな感じで出来ました。
use LWP::UserAgent;
$url = "http://www.yahoo.co.jp/";
$ua = LWP::UserAgent->new;
$ua->timeout(10);
$req = HTTP::Request->new(GET => $url);
$res = $ua->request($req);
print $res->status_line;
0888nobodyさん
2008/07/22(火) 13:31:20ID:???わざわざそんなことせんでも。。。
0889nobodyさん
2008/07/22(火) 14:50:40ID:???0890nobodyさん
2008/07/22(火) 15:02:22ID:???0891nobodyさん
2008/07/22(火) 18:38:20ID:???技術評論社
アーク・シンク・タンク 三島 俊司
↑ちょっとわかりやすいね。
意味不明な記述も半分くらいあるけど。
0892nobodyさん
2008/07/22(火) 18:40:05ID:???ifの代わりとしての?は使わない方がいいね。
だって?は正規表現とかでも使うから、
?があると、
「正規表現としての?かな?
それとも、ifの代わりの?かな?」
って考えないといけない。それが時間の無駄なので
?は使わずにifを使うようにしましょう。
0893nobodyさん
2008/07/22(火) 18:41:11ID:???0894nobodyさん
2008/07/22(火) 18:52:12ID:???これ、^があると、「正規表現の行頭の意味なのか?
それとも、否定の意味なのか?」
って一瞬、混乱するし、なるべく使わないほうがいいと
思うんだけど、行頭の意味だと、¥aっていう、代替表現が
あるんだよね。
0895nobodyさん
2008/07/22(火) 18:53:27ID:???数値としてソートしたいときは、スペースシップ演算子を使って
$a <=> $b
とかって書かないといけないけど、そんなのめんどいので、
「数値ソート」
って関数をデフォルトで入れておいてくれないかな?
0896nobodyさん
2008/07/22(火) 19:00:27ID:???ttteditみたいのがいいんだけど。
たとえばforeachって選ぶと、自動で
foreach 変数 リスト {
}
ってテンプレが出てくるようなのがいい。
0898nobodyさん
2008/07/22(火) 19:12:00ID:???ファイルのオープンに成功した時とか、
「ファイル オープン!」
「ギュイイイン」
みたいな。
0899nobodyさん
2008/07/22(火) 20:54:22ID:???0900nobodyさん
2008/07/22(火) 20:54:33ID:???ガショォォォォオオオン!
0901884
2008/07/22(火) 21:30:20ID:???注意が足りなかった点、謝罪するとともに、説明しなおす試みです。
この場合、元のパターンを真偽反転させると分かりやすいかもです。
文字クラス [.-z] は、 [a-zA-Z0-9./] よりも広い範囲を指している点をご理解いただきたい。
つまり s/[.-z]/./g の後でも、[a-zA-Z0-9./] 以外の文字が一部残ってしまう可能性があるわけです。
併せて、ちったあ試してみてくれよ、とお願いしてみます。
>>884 にテストの例も挙げています、ってーか自分の至れり尽くせりっぷりに泣けてきた。
0903nobodyさん
2008/07/23(水) 07:57:47ID:???>>892
python ですら実装してしまった三項演算子にケチを付けてどうする。
>>894
\a はアラームじゃねえか? \A だろ?しかも \A と ^ は挙動が違うし。
>>895
perl5.10 にしろ。指定が無い場合は勝手に文字列か数値か決めてソート
してくれるらしい。
0904nobodyさん
2008/07/23(水) 08:56:46ID:???本当?
% perl --version
This is perl, v5.10.0 built for i486-linux-gnu-thread-multi
Copyright 1987-2007, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
% perl -e 'print join(",", sort 1,2,10,5), "\n"'
1,10,2,5
0905nobodyさん
2008/07/23(水) 10:47:15ID:???0908nobodyさん
2008/07/23(水) 22:01:45ID:???Open Perl IDE
http://sourceforge.net/projects/open-perl-ide
0909nobodyさん
2008/07/23(水) 23:15:34ID:???おまえらが実際に使っていて、そして
満足しているものを教えて欲しいの。
0910nobodyさん
2008/07/23(水) 23:17:21ID:???0911nobodyさん
2008/07/24(木) 01:54:37ID:???メニューに、ループ、ってのがあって、
そのループってのをクリックすると、
forとかwhileとかforeachとかが出てきて、
そのなかで例えばforeachを選ぶと、自動で
foreach 変数 リスト {
}
とかテンプレみたいに出てきて、あとは
その中の処理を書いていく、っていう。
ようはVBみたいなのが欲しいんだけど、
そういうのってある?
0912nobodyさん
2008/07/24(木) 02:06:09ID:???0914nobodyさん
2008/07/24(木) 02:27:08ID:???パッケージと、
モジュールと、
ライブラリは
どう違うの?
0915nobodyさん
2008/07/24(木) 02:29:34ID:???参考書を読んでいたら、
シフトJISでは、
/(全角のスラッシュ)や、
・(なかぐろてん)や、
タ(はんかくのた)
などを返還しようとすると、
エラーになる、と書いてあるのですが、
その理由として、上記の文字をアスキーコードで
あらわすと、2バイト目が、5Eになっていて、この5Eというのは
^(ハット)のことを表すので、どうやらそれが原因らしいと。
しかし、EUCで書けばこの問題は回避できると。
このように書いてあるのですが、これであってますか?
0916nobodyさん
2008/07/24(木) 03:41:54ID:???0917nobodyさん
2008/07/24(木) 07:21:59ID:???0919nobodyさん
2008/07/24(木) 16:47:52ID:???0920nobodyさん
2008/07/24(木) 20:59:14ID:???モジュールは、クラスや、メソッド、サブルーチンを一塊にして、再利用しやすくしたもの。
ライブラリは、モジュールを集めたもの。集積した場所。Perlでは曖昧な概念になってる。
適当に検索したが、この辺でも読んどけ。
http://www.rfs.jp/sb/perl/04/01.html
あと、クリックとか抜かしてる時点でうんこ
0921nobodyさん
2008/07/24(木) 21:57:32ID:???あと、クリックとか抜かしてる時点でうんこ
0922nobodyさん
2008/07/24(木) 22:37:43ID:???0924nobodyさん
2008/07/25(金) 01:48:34ID:???クリックうんこ
0925nobodyさん
2008/07/25(金) 11:10:09ID:???とりあえず、クリんこ
0926nobodyさん
2008/07/25(金) 11:37:17ID:???クリックして脱がせてる時点でうんこ
0927nobodyさん
2008/07/25(金) 13:18:17ID:???0928nobodyさん
2008/07/25(金) 13:42:17ID:???0929nobodyさん
2008/07/25(金) 19:29:09ID:???クリックうんこ
0930nobodyさん
2008/07/28(月) 12:23:50ID:???同じ処理を何度も繰り返すのですが、過剰に走らせるとシステムが落ちてしまうので
1回の処理につき10秒間sleepさせています。
そのスリープを目に見える形で表してみようと一つ処理が終わるごとに以下のようにしてみました。
print "sleep";
foreach(0 .. 10){
print '.';
sleep(1);
}
print "\n";
1秒ごとにピリオドがprintされることを期待してたのですが、10秒後に
「sleep..........」
とまとめて出力されます。
なぜなのでしょうか?
0932nobodyさん
2008/07/28(月) 13:30:26ID:???頭悪いヤツは消えな。
0933nobodyさん
2008/07/28(月) 13:38:19ID:IfOXe7Fqでググれカス
0936nobodyさん
2008/07/28(月) 22:19:52ID:???Perlって検索できない用語多いよね。
6,000ページのマニュアルを
「全ページ」
暗記して使うようなことが期待されていたのだろうか>設計当時
0937nobodyさん
2008/07/28(月) 23:04:53ID:???0938nobodyさん
2008/07/28(月) 23:55:13ID:???っつってもその名前覚えてなきゃ同じだけど
0939nobodyさん
2008/07/29(火) 00:37:41ID:???論理和ができて、なぜ論理積ができないのか・・・うーん
0942nobodyさん
2008/07/29(火) 01:01:40ID:???それはWEBのどこで読めるの?
0943nobodyさん
2008/07/29(火) 03:19:51ID:???スタート→プログラム→ActivePerl 5.x.x build xxx→Documentation
コマンドライン→perldoc
Web
http://perldoc.perl.org/
と >>2
0944nobodyさん
2008/07/29(火) 14:30:05ID:fy3kWC2sオープンしたソケットにノンブロッキングモードで connect した時、
“Connection refused”を検出するにはどうしたらいいですか?
0945nobodyさん
2008/07/29(火) 15:08:40ID:i5c/JUZY0946nobodyさん
2008/07/30(水) 15:01:51ID:d+B9EpcH0947nobodyさん
2008/07/30(水) 15:56:41ID:8tDIA2tsApache2.0+ActivePerl588の環境です。
これをIIS5.0で運用するかも的な話が出てきまして、IISで動作をテストしています。
Apacheでは、warn "hoge=$hoge"で、Apacheのエラーログにワーニング情報を出力していましたが、
IISではwarnによる結果が表示されません。
IISでは表示できないのでしょうか?あるいは設定次第で表示されたりします?
何か他の方法があれば教えてもらえませんか?
0948nobodyさん
2008/07/30(水) 16:08:44ID:???普通ウォーニングって言わね?
0949nobodyさん
2008/07/30(水) 16:15:21ID:???どんな設計してるのか知らないけど。
0951nobodyさん
2008/07/30(水) 16:38:08ID:???connect(2)のEINPROGRESSの説明をよく読め。
EINPROGRESS
ソケットが非停止 (non-blocking) に設定されていて、接続をすぐに完了することができない。
その場合、 select(2) や poll(2) を使ってそのソケットが書き込み可能になるのを待つことで、
接続の完了を知ることができる。 select(2) で書き込み可能になった後に、 getsockopt(2) を
使って SOL_SOCKET レベルで SO_ERROR オプションを読み出すことにより、 connect() が
成功したか、失敗したかを判断できる。成功の場合 SO_ERROR が 0 であり、失敗の場合
SO_ERROR がここのリストにあるいずれかのエラーコードであり、それにより失敗の原因が
分かる。
0952944
2008/07/30(水) 18:06:58ID:d+B9EpcHでwwwけwwwたwwwww
そのとてつもなく親切なmanは一体どこのww
JMの成果物かしら?
うちのmanはそんな丁寧に書いてないですw
ググったら POSIX を適切に use するようにしておけばコードに対応するエラーメッセージが得られる事も分かりました
果てしなくありがとう♪
>>949-950
うん。
タイムアウト付きでselectしてconnect自体は完了してもconnectに成功したかどうかを調べる方法を知らなかったんだ
0954nobodyさん
2008/07/30(水) 18:42:46ID:???0955nobodyさん
2008/07/31(木) 01:58:02ID:oOtEPfmndebian Etch、Perl5.8.8 mod_perl2.0です。
初めてmod_perlを試してみたんですが、CGIの動作がうまくいきません。
レスポンスヘッダを出力して欲しくないのに出力されてしまい、
しかもContent-typeがtext/plainになっています。
.htaccessで下記のように設定しています。
SetHandler perl-script
PerlResponseHandler ModPerl::RegistryPrefork
PerlSendHeader Off
Options +ExecCGI
通常のCGIとして正しく動いていて、mod_perlにしてもヘッダが
オカシイ以外は正しく動いている風です。
何かアドバイスをお願いします!
0956nobodyさん
2008/07/31(木) 16:52:57ID:???エラーログ見ると、
Permission denied
とあります。普通のCGIだとファイルが開けるのにmod_perl2だと開けないというのは
何か特別な作法のようなものがあるのでしょうか。
超困っているのでお助けを・・・
0957nobodyさん
2008/07/31(木) 23:29:50ID:???mod_perl のプロセスオーナと CGI (の Perl スクリプト実行の際に呼ばれる perl) のプロセスオーナが異なっているからでしょう。たぶんね。
0958955
2008/08/01(金) 00:03:22ID:???ステータスコードを自分で吐きたいときもあるんで、と思ったんですが、
別にONで構わないんですね。ただ、OFFにしてヘッダを頭から出力しても
うまくいかないのはよく分からず。
>>956
カレントディレクトリの食い違いじゃないですよね。定番なのに僕は嵌りました。
ユーザー違いはsuExec。whoamiで確認。昨日かじった程度の知識です。
0959nobodyさん
2008/08/05(火) 02:44:01ID:dDXLNQi4例えば1万件とか、どうでしょう?
0962959
2008/08/05(火) 09:13:45ID:dDXLNQi4どっちみちBasic認証だと.htpasswd使わないとダメでしょ?
0963nobodyさん
2008/08/05(火) 10:31:58ID:???766550件ってのが一番多いが問題なく動いてる。
せめてDBMかSQLiteかmySQLあたりにしたほうがいいかなとは思う
0965nobodyさん
2008/08/05(火) 13:06:09ID:???0966nobodyさん
2008/08/05(火) 14:17:26ID:???0967nobodyさん
2008/08/05(火) 14:52:27ID:???0968959
2008/08/05(火) 16:22:30ID:???766550件もあると、MySql使ってても、どうなんでしょう。うまくいくのかしら。
0969nobodyさん
2008/08/05(火) 16:56:41ID:???0970nobodyさん
2008/08/05(火) 17:02:04ID:???つーか運用してる( Web じゃないけどね。)。データ形式が違えど 76万件
なんて少ない方だと思うが…。
実行速度なんかは index 作製の有無に顕著に依存するがな。
そっちのスレ行ってみれば?
0971nobodyさん
2008/08/05(火) 19:53:36ID:???スクリプトはmod_perl上で動作しています。
0972nobodyさん
2008/08/05(火) 20:20:50ID:???こういうこと?
0974nobodyさん
2008/08/05(火) 20:39:02ID:???0975nobodyさん
2008/08/05(火) 20:53:00ID:???0976jark'use
2008/08/05(火) 21:29:26ID:???http://z-z.jp/のbbs.cgiスクリプトをnull(ry
[禁止用語]で抜こうと思います。
そこでパラメータにいろいろあてはめてますがうまく抜けません。
実際に抜いた人はnullを使ってたみたいです。
あまり詳しくは公開できない情報ですのでヒントを教えてください
0977nobodyさん
2008/08/05(火) 22:42:26ID:???板違いです。
ネットワーク板へどうぞ。
http://pc11.2ch.net/hack/
0978nobodyさん
2008/08/06(水) 02:10:44ID:tTNUWkPT@files = sort {scalar split('/', $a) <=> scalar split('/', $b)} @files;
って書いたら
Use of implicit split to @_ is deprecated
て言われました。どう書くのが今時ですか?
0979nobodyさん
2008/08/06(水) 06:35:34ID:???splitをscalarで使うと文句を言われるから、tr/\///などで数える方法に切り替える。
あと、シュウォーツ変換を使うと効率が上がる。
0980nobodyさん
2008/08/06(水) 12:03:05ID:???@_ のなんたるかを理解してるなら
sort { ( @_ = split m{/}, $a ) <=> ( @_ = split m{/}, $b ) } @files ;
でもいいし、普通に捨て配列作ってもいいしTMTOWTDI。
sort { ( my @A = split m{/}, $a ) <=> ( my @B = split m{/}, $b ) } @files ;
sort { @{[ split m{/}, $a ]} <=> @{[ split m{/}, $b ]} } @files ;
sort { sub { split m{/}, $_[0] }->($a) <=> sub { split m{/}, $_[0] }->($b) } @files ;
0981nobodyさん
2008/08/06(水) 12:28:12ID:???0983nobodyさん
2008/08/06(水) 13:43:13ID:???見やすく書いたほうがいいんじゃないかな
0984nobodyさん
2008/08/06(水) 13:55:55ID:+ukCpM4+DISK I/O のコストを甘く見ないほうがいい
0985nobodyさん
2008/08/06(水) 14:03:20ID:???そういうのはTMTOWTDIとはいわない。
0986nobodyさん
2008/08/06(水) 15:45:53ID:???犠牲にするのが多少じゃないんだったら考慮するのはあたりまえじゃ
0987nobodyさん
2008/08/06(水) 17:10:27ID:???でワーニングが出るって事をすっとばしてる奴がいるなあ。
perl -w -le '$a = @_ = split m{/}, q{/hoge/foo} ;'
元の質問に「コストも計算して」ってのがあったら、
シュワルツかシャチ泳ぎの二択になるんだけど
my %tb ;
sort { ( $tb{$a} ||= split m{/}, $a ) <=> ( $tb{$b} ||= split m{/}, $b ) } @files ;
0988nobodyさん
2008/08/06(水) 17:33:19ID:???それにスカラーコンテキストのsplitでなぜ警告が出るか理解してる?
@_を書き換える副作用があるからなんだけど。
シュワルツ使うのもシャチ泳ぎ使うのもいいけど、splitで数えるのは
おすすめできない。
0989nobodyさん
2008/08/06(水) 17:53:17ID:???>それにスカラーコンテキストのsplitでなぜ警告が出るか理解してる?
だからリストコンテキストにして明示的に@_に代入してんじゃんw
>>985の「$a=@aは、元質問では直接使えない」って指摘しただけだよ。
tr///もs///gも書き換えを行なってるんだから、ここで変な人為ミスが入る可能性
が高いよ。俺は使うし好きにしたらいい。
元質問からsplitで説明しただけだから。
0990nobodyさん
2008/08/06(水) 18:06:15ID:???元の変数で書き換えが起こるってのじゃあなあ
1000万文字の内のTのカウント
とかだと実行速度の問題もあってsplitは使わんが、コメント必須
にしてるなあ、実際先人の件の人為ミスで酷いことになった事あるし
0991nobodyさん
2008/08/06(水) 18:12:39ID:???だって初心者だもん
webprogの目的は、狭義には見て貰う人のユーザービリティーを高めるとか
サイトの付加価値を高めるのが目的なんであって、perlで動いていようが、phpだろうが
利用者には関係のないこと。
ましてや、どう書くかなんて見えないわけで、そりゃ自分の手技向上のためにいろいろ
議論する価値はわかるけど、エンドポイント(サイトの付加価値を高めるなど)を
忘れて、単に技巧にだけ走ってしまうのは好きではないな。
やりたいことが、自分の技量の範囲の中でできれば、それで目的は達成できるじゃん。
0992nobodyさん
2008/08/06(水) 18:17:08ID:???コメントしないとわかってもらえないレベルの人がいるんじゃ大変だなぁ。javaとか
使った方がいいんじゃない?
0993nobodyさん
2008/08/06(水) 18:24:39ID:???知ってるってw
それを知らない人がtr/T/t/しちゃったんだよ
貴方の様に知ってる人間ばかりだったら、コメントしないよ
予期しないバグをなるべく排除したいだけなんだ、共同開発してるから
ワーニングだけで済むならそれにこしたことは無いし
0994nobodyさん
2008/08/06(水) 20:01:34ID:???0995nobodyさん
2008/08/06(水) 20:06:03ID:???気が付いてないかはちがうんじゃないかな
0996nobodyさん
2008/08/06(水) 20:30:17ID:???実際に落とし穴に嵌ったときに、気付かなくなるよ。
どうしてもというなら、必要な箇所に no warnings; を入れるべき。
0997nobodyさん
2008/08/06(水) 22:36:24ID:???言葉足らずと言うか真意が違ったすまん
ワーニングなら気付くんだ、俺か誰かが
で、ラインナンバーまで解るから解決は早い
他の人の担当であっても指摘しやすい
そもそも自分のコーディングの時気付くw
上のトラブルの時はスパゲティーの中だったんで、
苦しいのなんのって…
0998nobodyさん
2008/08/06(水) 22:50:23ID:???0999nobodyさん
2008/08/06(水) 22:54:16ID:???立てます。
1000nobodyさん
2008/08/06(水) 22:55:25ID:???.∧__,,∧
(´・ω・`)
(つ終と)
`u―u´
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。