Perlコーディング初心者質問スレ Part 57
■ このスレッドは過去ログ倉庫に格納されています
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:???■ このスレッドは過去ログ倉庫に格納されています