1 名前:nobodyさん mailto:sage [2007/09/16(日) 19:49:43 ID:???] Perlのコーディングで困ってる人のスレです。 【投稿する際の注意】 質問するときは内容をよく吟味してから投稿してください。 「コマンドの意味がわかんない」とかはマニュアル見ましょう。 回答者さんは何でも屋じゃありません。 1: 自分はこういう事がしたい。 2: それでこんな風にやってみたが・・・ 3: こんなエラーが出て上手く行かなかった。 最低でも1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。 お勧めサイトは >2 以降 前スレ ttp://pc11.2ch.net/test/read.cgi/php/1180492441/ 過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
2 名前:nobodyさん mailto:sage [2007/09/16(日) 19:51:29 ID:???] ム板Perlスレより 1 of 2 [プログラミング自体の経験が無い奴はまずココを読め] 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/
3 名前:nobodyさん mailto:sage [2007/09/16(日) 19:52:04 ID:???] ム板Perlスレより 2 of 2 [モジュール] 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
4 名前:1 mailto:sage [2007/09/16(日) 19:56:03 ID:???] 独断でPBPとPerl Hacksを追加してます。
5 名前:nobodyさん mailto:sage [2007/09/16(日) 20:04:09 ID:???] >>1 お疲れ様です。 前スレ最後に質問してしまいました。 こちらに再投稿させていただきますm(__)m use Math::BigFloat; my $tr = Math::BigFloat->new((@array * (1-0.68)/2)); と書くの大変なので my $a = use Math::BigFloat; my $tr = $a->new((@array * (1-0.68)/2)); と書いてみましたがエラーでした。 こういう意図を実現するのは無理ですか? 小数の計算をさせた上で配列のインデックスにする場合はBigfloatしておかないと危ないです。 やってない$trに $array[-($tr +1)]; とすると実質インデックスが2個変わってしまいます。 15.999だったのが、+で16になり、さらに1が足されて17になる。 そんな現象を確認しました。 簡単な記述方法はないでしょうか。
6 名前:nobodyさん mailto:sage [2007/09/16(日) 20:22:00 ID:???] >5 use bignum
7 名前:nobodyさん mailto:sage [2007/09/16(日) 20:40:18 ID:???] >>6 ??? どういうことですか? 英語読めませんが、perldoc.perl.org/bignum.html を見てやったところ 全くMath::BigFloatが不要になってしまいました。 冒頭でuse bignumをしておけば小数点の変な誤差が発生することは皆無になるんですか? 代償として重くなるとかがあるので、軽くしたいなら面倒でもMath::BigFloatを使えばいい。 簡単にしたいならbignumを使えばいい?
8 名前:nobodyさん mailto:sage [2007/09/16(日) 20:56:51 ID:???] use bignum; my $tr = (@array * (1-0.68)/2); メチャクチャな計算になりました。 @arrayは100なので16になるべき計算なのに50が入ってました。 もちろんbignumをつかわなければ16が入ります。 bignumを使うと他にも多大な影響があるようですね。 どういう基準で影響を与えてくるんでしょうか。
9 名前:nobodyさん mailto:sage [2007/09/16(日) 21:58:06 ID:???] >>前996 $#test で最後の添え字をゲット。
10 名前:nobodyさん mailto:sage [2007/09/16(日) 23:09:56 ID:???] >8 再現しない。再現する最小コードは? use strict; use warnings; use bignum; my @array; $array[99] = 0; print scalar(@array), "\n"; # 100 my $tr = (@array * (1-0.68)/2); print "$tr\n"; # 16
11 名前:nobodyさん mailto:sage [2007/09/16(日) 23:24:10 ID:???] >>10 #!/usr/bin/perl #京 #use bignum; my @array; for (1..100){ push @array,$_ } @array = sort {$a<=>$b} @array; my $tr = (@array * (1-0.68)/2); print $tr; これでできると思います。EUCコードで記述されています。 use bignum;をコメントアウトするかしないかで表示が変わります。 本来とは違う挙動をしているのでしょうか?
12 名前:nobodyさん mailto:sage [2007/09/16(日) 23:35:36 ID:???] 普通にprintしていたものを、突如ファイルに納めたくなりました。 print 1; というのが何千行もあった場合 print FH 1; とやりなおすのは間に色々な式が挟まってる為一括ではできません。 標準出力先をファイルハンドルに変える設定などが冒頭でできるなら一発でできると思うのですが。
13 名前:nobodyさん mailto:sage [2007/09/16(日) 23:36:59 ID:???] select関数でおk
14 名前:12 mailto:sage [2007/09/16(日) 23:53:18 ID:???] >>13 うわ! 感謝感激恐悦至極にございますm(__)m
15 名前:nobodyさん mailto:sage [2007/09/17(月) 00:17:12 ID:???] >11 俺のとこだと再現しないわ。環境は This is perl, v5.8.8 built for MSWin32-x86-multi-thread This is perl, v5.8.8 built for cygwin-thread-multi-64int
16 名前:nobodyさん mailto:sage [2007/09/17(月) 00:32:28 ID:???] >>11 どっちも16になるぜよ
17 名前:nobodyさん mailto:sage [2007/09/17(月) 00:44:08 ID:???] >>15-16 This is perl, v5.8.1 built for MSWin32-x86-multi-thread (with 1 registered patch, see perl -V for more detail) 5.8.1のみの問題ですかね? そんなに違いがあるのでしょうか。 一体何なのでしょうか? ちなみにbignumって何に使うためのものなのですか? 浮動小数の誤差関係に使えるというのは一つですよね。 本筋はそれですか? だとしたらこんな影響が出てしまう理由がわかりませんし。 EUCコードでやっておられますよね? それかもしかしたらbignumの方がバージョン変わってるとか?
18 名前:nobodyさん mailto:sage [2007/09/17(月) 06:36:57 ID:???] >>17 1. 再現せず。きちんと計算される。 This is perl, v5.8.1-RC3 built for darwin-thread-multi-2level 2. bignum は BigFloat と Math::BigInt, Math::BigInt::Lite のラッパー それぞれググレ。でかい方に関しては perl -le 'print 2**2**2**2**2' # => inf perl -Mbignum -le 'print 2**2**2**2**2' # => やってみ? とか perl -le 'print 10**16' # => 1e+16 perl -Mbignum -le 'print 10**16' => 10000000000000000 効能が分るだろ。
19 名前:nobodyさん mailto:sage [2007/09/17(月) 07:36:15 ID:???] 前スレ993へ % cat Hoge.pm package Hoge ; use 5.005_02 ; use vars qw( @ISA @EXPORT ) ; use vars qw( $hoge ) ; use subs qw( hoge ) ; use Exporter ; use Cwd ; @ISA = qw( Exporter ) ; @EXPORT = qw($hoge hoge ) ; $hoge = 42 ; sub hoge{ return 42 ;} 1; % perl -Mstrict -Mwarnings -MHoge -le 'print $hoge; print hoge' ってか朝っぱらから何やってんだろ俺。
20 名前:nobodyさん mailto:sage [2007/09/17(月) 07:37:27 ID:???] ああ、いらんモジュール use しとるし orz...
21 名前:nobodyさん mailto:sage [2007/09/17(月) 11:15:49 ID:???] -wスイッチを使うと警告を出すというんですが、これは一体どういう意味の警告なんですか? -cは確か構文チェックをしてくれるわけですよね。
22 名前:nobodyさん mailto:sage [2007/09/17(月) 11:37:55 ID:???] print scalar(grep{$_>15}(1..99)); >84 print scalar(1..99); >何も表示なし print scalar(0,1,2); >2 リストをscalarに渡すとどうなるかというのが知りたかったのです。 要素数を出してくるのか末尾要素だけ評価するのか。 真ん中のやつは何も評価しなかったようですが。何故なんでしょうか。 それとgrepでリストが作られるのかと思っていたら配列が作られているのですよね?これは。 scalar(配列) とすると要素数が出てきて scalar(リスト) とすると末尾要素が評価される scalar(n..m) とすると何も起こらない grepの返り値は配列だということでokですか?
23 名前:nobodyさん mailto:sage [2007/09/17(月) 11:46:15 ID:???] 1/0 これをやらせるとIllegal division by zero at hogehogeと警告されます。 0/1 こっちは警告なしなので大丈夫なんだと思いますが。 あまり気にしてないと、無自覚のうちに0による除算が発生してしまうことってありますよね。 意識的に0による除算が行われないよう、例えば my ($r,$p) = (rand,rand); print $r/$p; こういう場合は my ($r,$p) = (rand,rand); if ($p>0){ print $r/$p } と保険?を掛けておくのが推奨されるコーディングなのでしょうか?
24 名前:nobodyさん mailto:sage [2007/09/17(月) 11:56:26 ID:???] >>22 perl -w -le 'print scalar (1..99)' Use of uninitialized value in range (or flip) at -e line 1. range 演算子は、君の希望の挙動の他に while( <> ){ print if ( /^\s+/ .. /^$/ ) ; } つう風にも使う。で、上述ではperlの中の人がどっちの機能 を求めているのか判断出来ない。=> エラー出して保留 ∴まともに機能してないよ
25 名前:22 mailto:sage [2007/09/17(月) 12:16:00 ID:???] >>24 while( <> ){ print if ( /^\s+/ .. /^$/ ) ; } 読めないorz 正規表現の部分は「先頭から空白文字が1個以上あるか」「中身が空であるか」の二つですね。 で、..この範囲演算子はどういう意味でしょう? ついでにwhileの評価式自体が皆目検討がつきません。
26 名前:nobodyさん mailto:sage [2007/09/17(月) 12:24:45 ID:???] >>25 例だからあまり意味のないものを書いたんで。。。 「先頭から空白文字が1個以上ある行」から 「中身が空であるか」まで を出力せよ。 と言う意味になります。ホントは/^\S+/ のつもりだったのよw 後は、、、ぐぐれ。
27 名前:21 mailto:sage [2007/09/17(月) 12:26:13 ID:???] すいません。試してるんですが。 Use of uninitialized value in addition (+) at 行数 こういうのやsubtractionとかがちょくちょく出てくるんです。 「初期化されてない値を使ってる」みたいな意味だと思いますが、 具体的にどういうエラーなのかわからず再現ができないでいます。
28 名前:22 mailto:sage [2007/09/17(月) 12:32:34 ID:???] >>26 う〜んどうしてそうやって動くのでしょうか? 一旦中身が空である行を迎えたら自動でループはlastされるのですか? ifに掛けられるのは1行ずつですよね。 う〜ん・・・
29 名前:nobodyさん mailto:sage [2007/09/17(月) 12:37:27 ID:???] >>28 左の正規表現が真 => スイッチオン 右の正規表現が真 => スイッチオフ for( 1..1000){ print $_ if $_ == 10 .. $_ == 100 ; } つかまじでググってくれ。 21氏は質問の意味自体が理解不能だ。 俺は消えるので、相手してくれる人はいなくなるかもしらんが 頑張れ
30 名前:21 mailto:sage [2007/09/17(月) 12:38:16 ID:???] my $pl = undef; my $ze = $pl + 1; my $we = $pl - 1; レスこないのでガンばてたら、これでadditionとsubtractionエラーが再現できました。 この二つのエラーが出たら未定義値が格納されてる変数が計算に使われてるって思っておけばいいですよね。 でも一応スクリプト自体は動くんですが、-wはuse strict程度の感覚なのですか?
31 名前:nobodyさん mailto:sage [2007/09/17(月) 14:45:52 ID:???] >>26 それ範囲演算子じゃないから。普通は使いません、ていうか使うな。 明らかに不適切な例を唐突に持ち出して何がしたいんだか。
32 名前:nobodyさん mailto:sage [2007/09/17(月) 15:07:46 ID:???] >>31 ぐぐっても分らなかったのかw
33 名前:22 mailto:sage [2007/09/17(月) 16:17:24 ID:???] >>32 確かにまだ理解できていませんが、>>31 は僕ではないです。 回答してくれる方にそんな不遜な態度は取りません。
34 名前:nobodyさん mailto:sage [2007/09/17(月) 16:27:17 ID:???] 仕事押しつけられて、戻って来たらなんかオレ煽られてんなあ。 31=21 か? Programming Perl の P135 の範囲演算子の項を読んだ後に まともに煽ってくれ。つか突っ込みどころは他にもあるんだから。
35 名前:nobodyさん mailto:sage [2007/09/17(月) 18:09:34 ID:???] > Programming Perl の P135 の範囲演算子の項を読んだ後に > まともに煽ってくれ。つか突っ込みどころは他にもあるんだから。 とりあえず、該当箇所をスキャンしてうp汁。
36 名前:nobodyさん mailto:sage [2007/09/17(月) 18:24:44 ID:???] >>35 perldoc.jp/docs/perl/5.6.1/perlop.pod の範囲演算子の項はほぼ上述書物と同じだ。
37 名前:22 mailto:sage [2007/09/17(月) 19:13:34 ID:???] とにかく仲良くして下さい。
38 名前:nobodyさん mailto:sage [2007/09/17(月) 19:21:59 ID:???] scalar って書いてあるから、スカラコンテキストで評価するか。 ↓ > スカラの ".." の被演算子が定数表現であるときは、 > その被演算子は暗黙に、変数 $. と比較されることになります。 ↓ ちょっくら$.と比較するか。 ↓ $.にundef入ってるし。 ↓ Use of uninitialized value
39 名前:nobodyさん mailto:sage [2007/09/17(月) 20:57:51 ID:???] やっぱりどうもプログラム系のスレの住人って人とのコミニュケーションが下手っぽいよね。 変な皮肉を言ったり、あえて言葉足らずにしてみたり。 そういう悪い癖に自分で気付いてるんだろうか。 こういうところが、「キモイ」イメージが付いてしまう原因なんだろうな。
40 名前:nobodyさん mailto:sage [2007/09/17(月) 21:44:30 ID:???] 変な分析したがりが一番キモい
41 名前:nobodyさん mailto:sage [2007/09/17(月) 23:15:28 ID:???] つまりここにいる奴は全員キモイってことだな。
42 名前:nobodyさん mailto:sage [2007/09/18(火) 01:53:41 ID:???] ま、いくら挑発しても答えてやらないけどな
43 名前:nobodyさん [2007/09/19(水) 19:41:21 ID:uZuxrlKv] Perl の CGI::Application モジュールを使ってアプリを作成しているのですが、 デバッグの仕方でつまづいています。 というのも CGI::Application の場合 ランモードのそれぞれのメソッドからブラウザに表示させたい htmlを return しますよね? で、その途中で 勝手に「 print $hensu; 」みたいにやっても画面上には表示されません。。。 もちろん「 return $hensu; 」とやればその変数の内容は表示されるのですが、複数の変数の値を 一度に表示させたいのですーー。 こんな時みなさんどうしてるのでしょう???
44 名前:nobodyさん mailto:sage [2007/09/19(水) 19:47:18 ID:???] V に TT とか使えばいいんじゃね?
45 名前:nobodyさん mailto:sage [2007/09/19(水) 20:52:24 ID:???] ヘッダを出力する前にprintしてもブラウザには表示されないよ CGI::App::Plugin::DebugScreenとかLogDispatchとか使ってたっけかな 手っ取り早いのはData::DumperとかYAML使ってwarnでダンプとか httpdのエラーログにね
46 名前:nobodyさん mailto:sage [2007/09/19(水) 23:34:44 ID:???] CGI::Application ってテストサーバないのか。ダサいな。
47 名前:nobodyさん mailto:sage [2007/09/19(水) 23:44:49 ID:??? BE:914760566-PLT(15017)] あるよ search.cpan.org/perldoc?CGI::Application::Server search.cpan.org/perldoc?CGI::Application::Dispatch::Server
48 名前:nobodyさん [2007/09/20(木) 00:36:25 ID:FmGzC+A0] DBIを使用してDB処理をした場合、sqlのログってどうしてます? プリペアードステートメント使っていますが、肝心の値の部分が「?」なので、実際に流れるクエリが分かりません。
49 名前:nobodyさん mailto:sage [2007/09/20(木) 09:16:22 ID:???] モジュールの質問ならpodくらい見てからしろよ search.cpan.org/~timb/DBI-1.59/DBI.pm#trace >DBI->trace($trace_setting) >DBI->trace($trace_setting, $trace_filename) >DBI->trace($trace_setting, $trace_filehandle) >$trace_setting = DBI->trace;
50 名前:nobodyさん [2007/09/20(木) 12:35:47 ID:yNzQPcIL] >>44 >>45 43です。レスありがとうございます。 なるほど、簡単にはいかないんですね。。CGI::Applicationしょぼ! 結局グローバルな変数(ハッシュ)に変数の値を保存していって cgiapp_prerun (メソッド名間違ってたらスマソ)でその変数に 値が入っていればブラウザに表示するという方法でいきます。 ていうかこれぐらいのこともできないのかよ。CGI::Application
51 名前:nobodyさん mailto:sage [2007/09/20(木) 13:40:05 ID:???] ヘッダの送る前にprintしてもブラウザに出力されないのは当たり前だろ・・・ 自分の無知を認識しろよ
52 名前:nobodyさん mailto:sage [2007/09/20(木) 13:45:10 ID:???] だからwebprogは揶揄される
53 名前:nobodyさん mailto:sage [2007/09/20(木) 14:21:55 ID:???] 今時 CGI::Application なんか使うなよ…
54 名前:nobodyさん mailto:sage [2007/09/20(木) 19:18:46 ID:???] じゃあ何使えって言うんだよ。 どこのレンタルサーバでも使えるような方法で頼む。
55 名前:nobodyさん mailto:sage [2007/09/20(木) 21:46:49 ID:???] if文ダラダラ使えってことじゃね
56 名前:nobodyさん mailto:sage [2007/09/20(木) 21:49:39 ID:???] あるいはR信者が言語批判したかっただけとか
57 名前:nobodyさん mailto:sage [2007/09/20(木) 21:50:20 ID:???] yukiwiki 的にサブルーチン呼べば? 値は PATH_INFO とかでとればよい。
58 名前:nobodyさん [2007/09/21(金) 04:57:02 ID:9/Wk3rtw] 質問です。 ネットに落ちてるサンプルを見ながら、アクセス解析や掲示板などを書いて 練習しているのですが、データを書き込んでいく空ファイルは どこのサンプルでも自前で事前に用意しています。 これを、日時ごとに070921.dat、070922.dat…のように自動生成させたいのですが、そのようなことは出来ないのでしょうか? よろしくお願いします。
59 名前:nobodyさん mailto:sage [2007/09/21(金) 05:11:32 ID:???] 問題なく出来ると思う。
60 名前:nobodyさん mailto:sage [2007/09/21(金) 05:15:49 ID:???] テキスト表示のアクセスカウンタを作っているのですが、<img>タグで呼び出すとテキストを返せません。 SSIが使えないならば、直接CGIにアクセスさせるしかないんでしょうか??
61 名前:nobodyさん mailto:sage [2007/09/21(金) 09:28:25 ID:???] 質問させてください。 GDでファイルを生成→表示というスクリプトを組んでいますが どうやら生成されるまえに表示する処理が実行されてしまい。うまくいきません。 リロードすれば表示されるようにはなるのですが・・・ 生成されるまで待つ→表示処理実行 という事を考えて生成→slepp 2とか10;→次を実行 と、してみましたがうまくいきません。 生成完了するまでウェイトをかける方法を教えていただければありがたいです。 よろしくお願いします。
62 名前:61 [2007/09/21(金) 09:35:31 ID:EZVVl+6I] 自己解決しました。 sleepでOKでした。 よくみると コメントアウトしてましたw
63 名前:nobodyさん mailto:sage [2007/09/21(金) 14:07:32 ID:???] >>60 scriptタグのsrcでアクセスさせる。JavaScript。
64 名前:nobodyさん [2007/09/21(金) 20:24:02 ID:yGE03KVM] winXPsp2とactive perlでローカルテストをする時の質問なのですが、 例えば print 1; という命令のあるplファイルをダブルクリックしても1が表示されません。 いや正確には一瞬何かが出てきてるっぽいんですが、閉じるの早すぎです。 コマンドプロンプトから実効命令をするとprint先がコマンドプロンプトに来るので、 勝手に閉じることはないようですが。 いちいちコマンドプロンプトやらずに簡単なコードテストの時はダブルクリックで済ませたいのですが 方法ありましたら教えてください。
65 名前:nobodyさん mailto:sage [2007/09/21(金) 20:46:57 ID:???] >>64 END{<STDIN>} とか書いとけば。
66 名前:64 [2007/09/21(金) 21:00:38 ID:yGE03KVM] >>65 ありがとうございます。 うまく出ました^^ endって一体なんなのですか? perlの説明サイトとかで関数調べてendありませんし。 最後にやるってことですか? となると<STDIN>が閉じさせない命令の本体になるんでしょうか? どういう理屈なんでしょうjか。
67 名前:nobodyさん mailto:sage [2007/09/21(金) 22:37:24 ID:???] >>66 perldoc.jp/docs/perl/5.8.8/perlmod.pod perlmodのBEGIN, CHECK, INIT and END BEGIN CHECK INIT ENDのところ。 プログラムの終了するところで、 <STDIN>で、コンソールの入力待ちをしてる。
68 名前:64 [2007/09/21(金) 23:02:02 ID:yGE03KVM] >>67 コンソール???あの黒い画面のことかな。 で、試しに適当に打ち込んだら本当に入力できました。 最後にenterを押したら画面が消えました。 perlの方にはしっかりとその内容が送られてるんですかね? 試しに my @array = <STDIN>; print $array[0]; としてみましたが、今度はenterを何度押しても画面が閉じません。 配列に入れてるから無限に取るっぽいですね。 my $scalar = <STDIN>; print $scalar; END{<STDIN>} としたらうまくいきました。 任意の内容を入力してenterした瞬間に制御が一瞬コードに行ってprint $scalar;が実行されました。 ローカルでやるときはこうやって引数を取るというのも面白いですね。 物凄い面白いことを教えていただいて感謝です。
69 名前:nobodyさん mailto:sage [2007/09/22(土) 13:27:49 ID:???] 質問です。 Class::DBI使ってDB操作する場合、二つのレコード間で主キー以外のデータを交換するには どのように書いたらいいですか?
70 名前:nobodyさん mailto:sage [2007/09/22(土) 15:58:05 ID:???] #! /usr/local/bin/perl print "content-type:text/html\n\n"; print "<html>\n"; print "<head><title>タイトル</title></head>\n"; print "<body>\n"; print "<h2>テスト</h2>\n"; print "</body>\n"; print "</html>\n"; ↑これでInternal server error 500になる。 ただしレンタルサーバー上ではエラーだが、 自分のパソコンでやったらちゃんと表示される。 ソースにもし間違いがあったら 場所と対処法を具体的に指摘しろ。
71 名前:nobodyさん mailto:sage [2007/09/22(土) 17:15:55 ID:???] >>70 態度でかいぞ。 そんなやつには教えてやらん。 #! と /usr の間に半角スペースが入ってるのが問題とか言わん。
72 名前:nobodyさん mailto:sage [2007/09/22(土) 17:44:10 ID:???] >>68 和んだ、俺も10年くらい前Cやった時そんなだった。
73 名前:69 mailto:sage [2007/09/22(土) 19:54:58 ID:???] すみません。解決しました。
74 名前:nobodyさん mailto:sage [2007/09/22(土) 21:34:17 ID:???] >>70 パーミッションはちゃんとやってあるのか? とりあえず雑魚が粋がるのはやめておけ。
75 名前:nobodyさん [2007/09/22(土) 22:09:17 ID:VEv2R0s3] pc11.2ch.net/test/read.cgi/php/1158647441/369-372 から来ました。 ws.strikeiron.com/SwanandMokashi/StockQuotes2?WSDL このサービスを SOAP::Lite から使いたいんですが、ドキュメントのWSDL関連部分を読んでも use SOAP::Lite; print SOAP::Lite -> service('www.xmethods.net/sd/StockQuoteService.wsdl ') -> getQuote('MSFT'); としか書いてません。 WSDLを見てみると、GetStockQuotesメソッド(オペレーション?)のパラメタとして QuoteTicker(MSFTとかの文字列)だけでなく、オブジェクト構造みたいなのを組んで メアドなども渡さないといけないようなんですが、どう書けばいいんでしょうか。
76 名前:75 mailto:sage [2007/09/22(土) 22:43:31 ID:???] guide.soaplite.com/#access%20with%20service%20description%20 (wsdl) > SOAP::Liteでは今のところWSDL 1.1のサポートは限定されているが〔中略〕、 > 複雑な型(types)を記述に含まないサービスにはアクセス可能だ。 と書いてあるので、無理なのかもしれませんね・・・
77 名前:75 mailto:sage [2007/09/23(日) 03:01:09 ID:???] やっと自己解決・・・ wsparam.strikeiron.com/BasicRealTimeQuotes?WSDL という、もっと単純なWSDLを使用。 www.strikeiron.com/authentication/ ここの下のほうにPerlのサンプルが(も)置いてあるので、それを改造。 わかりやすいのでSOAP初心者にはおすすめかも。
78 名前:nobodyさん mailto:sage [2007/09/23(日) 03:53:09 ID:???] >>74 なぁーんてこった! cgiファイルのパーミッションを 755にしたらそれで動いたぜ そんなこと教科書には どこにも一言も書いてなかった! ローカルで動かす教科書だからかな? サノバビーィーーーッチ! それでパーミッションが500でも 動くのはなんでだ?
79 名前:nobodyさん mailto:sage [2007/09/23(日) 05:27:46 ID:???] それくらいググれカス
80 名前:nobodyさん mailto:sage [2007/09/23(日) 06:45:28 ID:???] やはりWebProg板はレベルが低いな。最高。
81 名前:nobodyさん mailto:sage [2007/09/23(日) 06:53:38 ID:???] だって初心者スレだもん。いいじゃない。 なんか、すごくレベルの高い質問が最近多すぎな気がする。俺のレベルが低いだけなんだろうけどw Webprogなんだから、動けばいいじゃない的な考えがイクナイ?
82 名前:nobodyさん mailto:sage [2007/09/23(日) 07:50:40 ID:???] if ( $hoge =~ /$moge/ ){ print "もげら" } って感じで書いて$mogeが展開されてくれないみたいなんだけど、 特別な書き方があるのかな。 ぐぐったけど正規表現ばかりで、変数をつかってる例が全然見つからなかったんだけど、 こういう記述方法自体があまり一般的じゃなくて、他の書き方があるのかな。 教えてちゃぶだい。
83 名前:nobodyさん mailto:sage [2007/09/23(日) 08:00:28 ID:???] >>82 $mogeの中には何が入ってるの? 2バイト文字関係とか、文字コードでこけてる可能性もありそう。
84 名前:nobodyさん mailto:sage [2007/09/23(日) 11:07:04 ID:???] >>82 変数使うときはquotemeta()くらいはかましときなはれ。
85 名前:nobodyさん mailto:sage [2007/09/23(日) 14:57:13 ID:???] サンクス! quotemetaでいけたよ。 1)index($hoge, $moge) でもやったけどダメ 2)auotemeta() してみた 3)$hoge =~ /$moge/ で成功! 4)でもなぜかそれ+ index($hoge, $moge) じゃダメ って感じだった。 中に入ってるのはどちらもEUCの2バイト文字列なんだけど、 なぜか$mogeが空の文字列として扱われてしまってるっぽい動作だった。 print $hoge.$moge;とかで出力するとちゃんと出力されるんだけどね。 良く分からないけどとりあえず解決はしてよかった。 ありがとう。
86 名前:nobodyさん [2007/09/25(火) 00:47:19 ID:XOfpdsF8] はじめまして。 use strict; use diagnostics; という宣言をした状態で、 Name "html::copyright" used only once: possible typo at bbs.cgi line 554 (#1) というwarningが出ました。 html::copyrightは、htmlモジュール で、 $copyright = 'hogehoge '; などというように、宣言されています。 warnings は、他のモジュールの変数は見てくれないのでしょうか? 実は、html::copyright 以外にも数十個でていて、紛らわしいことこの上ないです。 (他のwarningにも混じってしまい、識別が困難です) このwarningをつぶしたいのですが、何とかする方法はないでしょうか?
87 名前:nobodyさん [2007/09/25(火) 00:49:11 ID:XOfpdsF8] x 実は、html::copyright 以外にも数十個でていて、紛らわしいことこの上ないです。 o 実は、html::copyright 以外にも used only once: possible typo が、数十個でていて、紛らわしいことこの上ないです。 used only once: possible typo・・・ は、意味は、わかっておりまして、 一度しか使ってないので、ミスじゃない?ってことなのですが、 実際には、ちゃんと、htmlモジュールで代入してから、mainで参照しているのに・・・ということです。
88 名前:nobodyさん mailto:sage [2007/09/25(火) 03:43:51 ID:???] >>87 Use of uninitialized value が続かないなら、理由が分からない。 一度ourで宣言してみたらどうなる?
89 名前:86 [2007/09/25(火) 17:25:00 ID:XOfpdsF8] 試しに、最小限のコードを書いてみたら、 -----test_pm.pm------- package test_pm; use strict; use warnings; our $hoge = "test foo bar"; 1; -----main.pl--------- use strict; use warnings; use test_pm; print $test_pm::test; ------------------- > perl main.pl Name "test_pm::test" used only once: possible typo at main.pl line 5. Use of uninitialized value in print at main.pl line 5. ちゃんと、Use of uninitialized value でて、実行不能でした orz ourでも、myでも同じでした >>86 は、CGIなんですが、なんで、ちゃんと動いているんだろ・・・ もうちょっと解析してみます。
90 名前:86 [2007/09/25(火) 17:28:00 ID:XOfpdsF8] x print $test_pm::test; o print $test_pm::hoge; スペルミス。 これでも同じ結果です。
91 名前:nobodyさん [2007/09/25(火) 21:26:37 ID:o7XeBw4v] 先日このスレで END{<STDIN>} を教えてもらったものです。その節はありがとうございました。 ローカルチェックをする時に、ダブルクリックだけでいいという大変便利なものなのですが、 エラーが出てるときに一瞬で画面が閉じてしまうのです。 ちなみにその時のエラーはuse strictによるmy使え先刻でした。 途中でエラー中断してるのでEND{}まで行かないのは至極当然な話ですが、 エラーの時はエラー内容をSTDINに出力させりょうと思うと大変なことになりますか? エラーにも色々あるので難しいかもしれませんが、用はコマンドプロンプト画面に出ることを 代わりにそのままSTDINに出力してもらえばいいわけなのですが。
92 名前:nobodyさん mailto:sage [2007/09/25(火) 21:28:39 ID:???] >>89 CGIってことはサバにあるわけだ。 つまり君がローカルで試してるファイルとは違うファイルが動いてる可能性もあるわけね。
93 名前:nobodyさん mailto:sage [2007/09/25(火) 21:36:47 ID:???] >>91 コンソールを開いておけない余程の事情でもあるの?
94 名前:91 [2007/09/25(火) 22:20:58 ID:o7XeBw4v] >>93 いえ、単純にちょっとしたコードテストをしたいときにわざわざ 1.コマンドプロンプト画面を開いて 2.ファイルがあるフォルダを開いて 3.黒画面にファイルをD&Dしてenter という手順を踏むのが面倒だといつも思っていたのです。 1.ファイルをダブルクリックする これだけで済むなら最高です。 意外に大きな差かなって思いまして。 黒画面へのエラー内容出力ってどういう仕組みで行ってるんでしょうか? きっとperlの方から出してるんだと思いますが、その出し先をSTDINに変えればできるのでは? とか思ったり。
95 名前:nobodyさん mailto:sage [2007/09/25(火) 22:46:42 ID:???] >>94 同じファイル?ならコンソール開きっぱなしで1回目だけ「perl スクリプト名」で実行しておけば連続テストは↑+Enterで済む。 慣れにもよるけど多分ダブルクリックより速く操作できる エラーはSTDERRに出力される。 誤解しているようだけどSTDINは標準入力であって出力ではない。標準出力はSTDOUT
96 名前:91 [2007/09/26(水) 00:17:27 ID:zmZEFb0X] >>95 2回目以降は確かに楽なんですけど。 STDERRに出力されてるので、END{<STDIN>}で出る入力受付画面には出力されない? STDOUTへの分はきちんと表示されますし。 STDERRの取得方法があるのでしょうか?
97 名前:nobodyさん mailto:sage [2007/09/26(水) 00:27:31 ID:???] >>89 これ、ActivePerl 5.8.8.822で普通にtest foo barと表示された ダメ出しも無し
98 名前:nobodyさん mailto:sage [2007/09/26(水) 00:37:06 ID:???] >>96 ラクダ本より >内部的に発生する例外によって終了する場合でも、ENDサブルーチンは呼び出される(ただし、シグナルによって撃沈された場合は除く) とあるようにENDそのものが実行されない。自分で(できれば)トラップする必要がある。これはsigtrapを使えばよい。 …が、それくらいなら最初からコンソールから使うことを強く勧める。元々ダブルクリックで起動するようには設計されてないし。
99 名前:nobodyさん mailto:sage [2007/09/26(水) 00:41:02 ID:???] >>91 echo off perl %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 pause みたいなバッチファイル作って、,plに関連付けして置くぐらいかなぁ。 統合型開発環境(みたいなエディタ)を使うと、その場で実行して、 その場で結果表示できたりするので、そういうの使うと便利だよ。
100 名前:nobodyさん mailto:sage [2007/09/26(水) 00:56:23 ID:???] しまった。 > perl %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 は > perl %1 %2 %3 %4 %5 %6 %7 %8 %9 だた。
101 名前:101 mailto:sage [2007/09/26(水) 02:22:27 ID:???] 型グロブというものについて 教科書を今日読んで理解したので 型グロブについて誰か質問してください。 説明します。
102 名前:nobodyさん mailto:sage [2007/09/26(水) 05:15:12 ID:???] 型グロブをうまいこと使っているモジュールを列挙してください。
103 名前:nobodyさん mailto:sage [2007/09/26(水) 13:38:32 ID:???] >>99-100 perl %*
104 名前:nobodyさん mailto:sage [2007/09/26(水) 17:01:12 ID:???] >>101 ありがとうございます! スカラー変数 配列変数 リスト ハッシュ変数? それらのリファレンスなど 上記との違いを説明してください。 そして何の為にグロブがあるのですか? 僕は素人なのでまだ使うべきところに出会っていません。 いや使えてたらもっと簡単につくれてたのかもしれません。
105 名前:nobodyさん mailto:sage [2007/09/26(水) 18:35:06 ID:???] ビウログってなんですか?
106 名前:nobodyさん [2007/09/27(木) 02:15:46 ID:rW8f5K4d] 質問です。 if($Fm{'form'}){ 処理 } #フォームに何か入力されていれば処理 上記の場合 フォームに0と入力した場合もスルーされてしまいます。 認識させるにはどのような書き方になるのでしょうか。 if分の前に $Fm{''form'}=sprintf( "%c", $Fm{''form'} ); のように文字列にするという方法を思いついたのですが、ちょっとスマートじゃないなと思っています。 よろしくおねがいします。
107 名前:nobodyさん mailto:sage [2007/09/27(木) 02:23:35 ID:???] if($Fm{'form'} ne ""){ 処理 }
108 名前:nobodyさん mailto:sage [2007/09/27(木) 02:35:47 ID:???] >>107 素早い回答ありがとうございます。 その手がありましたか。目からうろこでした。 ありがとうございます!
109 名前:nobodyさん mailto:sage [2007/09/27(木) 03:41:52 ID:???] length とかも
110 名前:nobodyさん mailto:sage [2007/09/27(木) 06:29:35 ID:???] 1000:1234:abcd:2000::/120のような省略されたIPv6のアドレスを展開して リストに格納したいのですが、プレフィックス長(=120)に応じて 展開する部分が一部不完全なので教えてください。 下のコードだと、下4桁の連番生成しかできない上に、プレフィックス長が4の倍数でない場合にうまくいきません。 これを4の倍数でなくても&下4桁以上もちゃんと展開できるようにしたいのですが…。 たとえば、1000:1234:abcd:2000::/127であれば、 1000:1234:abcd:2000:0000:0000:0000:0000 1000:1234:abcd:2000:0000:0000:0000:0001 の二つが出来てほしいのです。 できれば10進数で連番作ったものを16進数変換してる部分もなんとかしたいんですけど…。 sub _Gen{ my ($addr, $pref) = split(m|/|, $_[0]); $addr = &_Format($addr); # ここで省略のない32桁の英数字を4桁ごとに:で区切ったものになる $addr =~ s/://g; if($pref % 4 != 0 || $pref < 112 || $pref > 128){ return; }elsif($pref == 128){ 1 while $addr =~ s/(\w+)(\w\w\w\w)/$1:$2/; return $addr; } my $fixed = substr($addr, 0, $pref / 4); my $keta = (128 - $pref) / 4; my (@addrs, $tmp); for(my $i=0; $i<16**$keta; $i++){ $tmp = sprintf("$fixed%0${keta}x", $i); 1 while $tmp =~ s/(\w+)(\w\w\w\w)/$1:$2/; push(@addrs, $tmp); } return @addrs; }
111 名前:nobodyさん mailto:sage [2007/09/27(木) 06:34:39 ID:???] defined 常考
112 名前:101 mailto:sage [2007/09/27(木) 09:02:14 ID:???] 型グロブについて。 スカラー変数 アレイ ハッシュ(連想配列) この3つを同時に 扱うために、型グロブは 生まれてきたのです。
113 名前:101 mailto:sage [2007/09/27(木) 09:04:34 ID:???] 例えば $a ←これはスカラー変数 @a ←これはアレイ(配列) %a ← これはハッシュ(連想配列) aの左側についてる記号は $だったり @だったり %だったりとそれぞれ違うが 記号の右側はaで全部統一されている。 このとき あ 「aの型グロブ!」 と宣言すれば、 $a @a %a この3つを全部同時に扱うことができる。 これが型グロブ。
114 名前:nobodyさん mailto:sage [2007/09/27(木) 09:14:21 ID:???] こいつはOmotiとかタクトくせぇ
115 名前:101 mailto:sage [2007/09/27(木) 09:59:46 ID:???] つまり 4年1組と 4年2組と 4年3組が いたとして、 「4年生全員集合!」 と言うと、4年生が全員集まってくるのです これが型グロブです。
116 名前:nobodyさん mailto:sage [2007/09/27(木) 11:04:43 ID:???] 全員集まってくることがどういうことか(メリットなど) を語らないと通じないでしょ 肝心な部分が抜けてるポ^^
117 名前:nobodyさん mailto:sage [2007/09/27(木) 13:26:43 ID:???] どっちも4年生なら配列かハッシュ使えば済むでしょ どっちかというと「全学年の1組集合」の方が近いのではないかと。
118 名前:nobodyさん mailto:sage [2007/09/27(木) 13:32:25 ID:???] その例なら多重配列使いたいからそれもちょっと…
119 名前:118 mailto:sage [2007/09/27(木) 13:33:29 ID:???] ごめん勘違いしてた
120 名前:nobodyさん mailto:sage [2007/09/27(木) 13:34:07 ID:???] この聞いてjも居ないのに延々と騙ろうとするのはタクトに違いない。
121 名前:nobodyさん mailto:sage [2007/09/27(木) 13:58:24 ID:???] ねぇねぇ なんでおじちゃんたち DBが全部やってくれることを一生懸命書いてるの?
122 名前:nobodyさん mailto:sage [2007/09/27(木) 14:53:03 ID:???] DB使ってないしぃ
123 名前:nobodyさん mailto:sage [2007/09/27(木) 15:13:12 ID:???] DB使わない理由って やっぱサーバーにないから? それとも手をつけたことがない? 後者なら絶対覚えたほうがいいよ。 生産効率が全然ちがうよ
124 名前:nobodyさん mailto:sage [2007/09/27(木) 16:59:17 ID:???] >>110 これじゃだめなん? use Net::CIDR; print join("\n", Net::CIDR::cidr2octets("1000:1234:abcd:2000::/127"));
125 名前:nobodyさん mailto:sage [2007/09/27(木) 17:11:50 ID:???] わざわざDB使うほどの事してないしぃ ゴミ箱にごみを捨てるのは、わざわざ執事雇って呼んで捨てさせる程の事じゃないしぃ
126 名前:nobodyさん mailto:sage [2007/09/27(木) 19:38:27 ID:???] >>124 うああああ、助かった こんな便利なものがあるなんて! ありがとう〜!
127 名前:nobodyさん [2007/09/27(木) 20:05:25 ID:fs1IYXrA] 色々なPerlがあるようですが、 rand ≠ rand(1) となるものはあるのでしょうか?ちなみに自分のactiveperl fow win32 5.8は rand == rand(1) になっていると思います。 サバによって違うなら面倒でもrand(1)としといたほうが無難なのでしょうか? それと演算子の優先順位をわかりやすい表にしてるところ知っていたら教えてくださいませm(__)m last if 1-rand(1) <= 0.3; こういうの書く時 last if ( (1-rand(1)) <= 0.3); とすれば確実ですが、地味に面倒で意外と見づらいです。
128 名前:nobodyさん mailto:sage [2007/09/27(木) 20:36:42 ID:???] 同じだよ その手の仕様をプラットフォームによって違うようにする必要性がないし
129 名前: ◆TWARamEjuA mailto:sage [2007/09/27(木) 20:40:25 ID:??? BE:2178645-2BP(6825)] perldoc.perl.org/perlop.html#Operator-Precedence-and-Associativity とか。。。
130 名前:127 [2007/09/27(木) 20:54:10 ID:fs1IYXrA] >>128 そうですよね。まあでも括弧を外すなら結局rand(1)としないとしつこく引数にとられてしまいますね。 >>129 英語のページですか・・・ 僕の学力の低さを見透かしたような皮肉orz バカにでもわかる一覧表的なページはないということでFA?
131 名前:nobodyさん mailto:sage [2007/09/27(木) 21:18:44 ID:???] unless (0 and 1){ print 1; } 1と表示されます。unlessは条件式が偽を出してくる時にブロックを実行するのですよね? 0 and 1なら片方が真を出すのでブロック実行されないと思ったのですが。 複数の条件式が全て偽を出した時にだけブロック実行をさせたいのです。 回答宜しくお願いいたします。
132 名前:131 mailto:sage [2007/09/27(木) 21:22:38 ID:???] ちなみにこれをifでやるとさらにおかしなことになります。 if (1 and 0){ print 1; } これです。何も表示されません。先ほどのunlessとの整合性がつきません。 ifによる条件式部分ではちゃんと二つ共が真の時だけ実行されるのに、 unlessの場合は片方が偽を出せば実行されます。 もしかして 真 and 偽 は最終的に偽扱いされるのですか?
133 名前:nobodyさん mailto:sage [2007/09/27(木) 21:28:31 ID:???] >>132 >もしかして >真 and 偽 >は最終的に偽扱いされるのですか? そう。当たり前。
134 名前:nobodyさん mailto:sage [2007/09/27(木) 21:28:52 ID:???] (0 and 1) は(「偽」かつ「真」)だからそんなの成り立たない (「真」かつ「真」)なら結果「真」と評価できる つまり、(0 and 1)は常に「偽」と評価される だから unless (偽) は常にそのブロック内が実行される
135 名前:131 mailto:sage [2007/09/27(木) 21:46:53 ID:???] なるほどです。 やはりちょっと違いますねunlessは。 ifのfalse版みたいに思うと微妙にやられますね。 全然関係ない話ですが、Perlには資格ってあるのですか? 書道3段とか簿記3級みたいに客観的にPerlにおけるプログラミング力を第3者に示すもの。 頑張って勉強してそのうちバイトでプログラムの仕事取ってみたいですが、 その時にそういう資格的なものがあるなら売り込みやすいなと思いまして。 本当に関係ない話ですいません。
136 名前:nobodyさん mailto:sage [2007/09/27(木) 21:59:00 ID:???] >>130 perldoc.jp/docs/perl/5.8.8/perlop.pod
137 名前:127 [2007/09/27(木) 22:08:14 ID:fs1IYXrA] >>136 日本語のページありがとうございます。 見てきますm(__)m
138 名前:nobodyさん mailto:sage [2007/09/27(木) 22:39:59 ID:???] perlの仕事なんか無いよ
139 名前:nobodyさん mailto:sage [2007/09/27(木) 22:51:34 ID:???] >>135 記号論理をやれば当然のことで、それを理解していればifの否定版と考えて問題は起きない
140 名前:nobodyさん mailto:非公開 [2007/09/28(金) 00:24:10 ID:???] スカラー変数と配列変数をいっぺんに作りたいです。 my ($s1,$s2............$s20); my (@r1,@r2............$r20); 全部書くのが面倒な時は簡単な方法はありますか?
141 名前:nobodyさん mailto:sage [2007/09/28(金) 00:37:13 ID:???] コードの先頭でまとめて宣言するってこと? そんなことすんならuse strict使わない、宣言しないほうがよっぽどいい
142 名前:140 mailto:非公開 [2007/09/28(金) 00:42:26 ID:???] >>141 # 初期化 というところでいっぺんに使う変数を宣言しています。 何故というより癖みたいなものですかね。 それで分析プログラムを作ってたら、やたらと記録や集計用の変数が必要になったんです。 一つ一つまともに名前を考えるのが非効率なのでそこだけ適当な名前にしています。 strcit使いながら賢く宣言できませんか? 無理ならあきらめます。
143 名前:nobodyさん mailto:sage [2007/09/28(金) 01:00:34 ID:???] 変数をたくさん使いたいなら代わりにハッシュ使えば一つで済むじゃん
144 名前:nobodyさん mailto:sage [2007/09/28(金) 01:01:15 ID:???] なんだか意味が良くわからないけどハッシュにいれればいいじゃない キー名を考えるのは同じだけど
145 名前:nobodyさん mailto:sage [2007/09/28(金) 03:02:00 ID:???] >>140 なんか、その変数名だと単に配列と二次元配列の初期化だけですむ気がすんだけど? my ( @s, @r ) ; # @s は、オマエさんの ( $s1, $s2, ..... ) を入れる配列 # @r は、オマエさんの ( [@r1], [@r2], .... ) を入れる配列 本当に別々の変数名が必要なのか? 本当に必要ならば上の人たちが言ってる通りハッシュorハッシュリファレンス 使え。
146 名前:nobodyさん mailto:sage [2007/09/28(金) 03:04:18 ID:???] for (1..20) { eval "my(\$s$_ , \@r$_)" }
147 名前:140 mailto:非公開 [2007/09/28(金) 06:42:10 ID:???] >>143-145 ごもっともなんですけど、リファレンスにするとコードが汚くなるんですよね。 いちいちデリファレンスしながらのコードは読みにくいし。 ハッシュも同じです。単なるスカラーと配列変数以上に読みやすいものはないかと。 >>146 それってforブロックの中でローカル化されてませんか? evalするとローカル化されないとか?
148 名前:nobodyさん mailto:sage [2007/09/28(金) 06:53:34 ID:???] >>147 そのevalに突っ込み入れられる実力があれば、 キミの望んだことは実現出来るよな? まあ、自分の考えに固執しないで、他の人が普通に「hash使え」って 言ってる意味を考えた方が良いと思うけど。 => perlでは143-145が普通の感覚だし、たかだか変数の 宣誓にevalなんぞ使ってたら「変態さんがいるわ&hearts」 と言われること受けあいだ。 そもそもそんなに個別の変数が必要か否かを考え直したほうがいい んじゃね?
149 名前:nobodyさん mailto:sage [2007/09/28(金) 08:03:45 ID:???] > 書道3段とか簿記3級みたいに客観的にPerlにおけるプログラミング力を第3者に示すもの。 書道の段位なんて流派ごとに異なるので、客観性があることにできないんと思うよ。 日商簿記2級くらいまでなら試験対策する時間さえあれば能力関係なしにとれるから 持ってたからといってだから何?レベルだよね。
150 名前:nobodyさん mailto:sage [2007/09/28(金) 08:31:35 ID:???] ttp://d.hatena.ne.jp/naoya/20050809/1123563794 脳内では、コレが参考になるかもしらんが、 ○自己判断のレベルが客観的判断のレベルと一致しない。 ○レベル7と8との間にとても深くて暗い河がある。 プログラミングの技量の判断として有名なのはFizzBuzz問題 だが、有名になりすぎて知ってて当たり前。
151 名前:nobodyさん mailto:sage [2007/09/28(金) 12:19:13 ID:???] Lv8かなぁ?Lv9にはなってない気がする。
152 名前:nobodyさん mailto:sage [2007/09/28(金) 14:28:43 ID:???] >>150 ほんと、7と8の間の河が深すぎる。7.5がほしい。 俺はたぶん6か7だけど。
153 名前:nobodyさん mailto:sage [2007/09/28(金) 15:13:33 ID:???] use strictってどういう効果有るの?ググってもよく分からないや とか思ってる他人のソース弄って何とかしている人がここに一人。
154 名前:nobodyさん mailto:sage [2007/09/28(金) 15:43:49 ID:???] strictやwarningsは融通が利かなくなるので嫌いでちゅわ
155 名前:nobodyさん mailto:sage [2007/09/28(金) 15:58:21 ID:???] いいね、初心者スレらしい。
156 名前:nobodyさん mailto:sage [2007/09/28(金) 16:22:17 ID:???] strictや-wを使って粋がってる自称玄人は笑えるww
157 名前:nobodyさん mailto:sage [2007/09/28(金) 16:32:49 ID:???] 無理にstrictやwarings使って本末転倒になってる馬鹿はよく見る
158 名前:nobodyさん mailto:sage [2007/09/28(金) 17:27:09 ID:???] 普段から常に使ってるがどういう場面で本末転倒になるんだろう
159 名前:nobodyさん mailto:sage [2007/09/28(金) 17:36:03 ID:???] その昔はグローバル変数をサブルーチンでいじり倒すようなコードがあったけど スコープ区切って引数と戻り値のやりとりするほうが100万倍読みやすいよ
160 名前:140 mailto:非公開 [2007/09/28(金) 18:12:42 ID:???] >>148 >そのevalに突っ込み入れられる実力があれば、 >キミの望んだことは実現出来るよな? すいません。もう少し普通の会話がしたいです。 >そもそもそんなに個別の変数が必要か否かを考え直したほうがいい んじゃね? このよくある「答は一つ、綺麗でスマート」っていうのはどうにも好かない。
161 名前:nobodyさん mailto:sage [2007/09/28(金) 20:40:06 ID:???] >>160 じゃおまえの好きなようにすれば?
162 名前:nobodyさん mailto:sage [2007/09/28(金) 21:25:32 ID:???] >>140 「Perlはあなたが自分の首を締めるのに十分なロープを 提供しているのだ」てな忠告がラクダ本に載ってたな。 #--- Filter/Range.pm --- package Filter::Range; use strict; use Filter::Simple sub { s{ my \s* \( \s* ([\$\@%][A-Z_a-z][0-9A-Z_a-z]*?) ([0-9]+) \.\. ([0-9]+) \s* \) } { 'my(' . join(',', map "$1$_", $2 .. $3) . ')' }egx; }; 1; __END__ #!/usr/local/bin/perl -w use strict; use Filter::Range; my($s1..20) = (1..20); print $s10; __END__
163 名前:nobodyさん mailto:sage [2007/09/28(金) 21:41:10 ID:???] Damian Conway ぷろだくとか。
164 名前:nobodyさん [2007/09/28(金) 22:27:42 ID:3wKaaJqT] サブルーチンを10個くらい作ってあります。 同じディレクトリに5個くらい違うCGIファイルがあります。 5個のCGIファイル全てに、冒頭の10個のサブルーチンをコピペしてあります。 print routin(1,2); 5個のCGIふぁいるではこういう記述でサブルーチンが使えます。 どうもこれを外部ライブラリ化とかいうのすると print パッケージ名::routin(1,2); で使えるようになるとか。 でもパッケージ名を入れるとなると5個のCGIファイル全てを書き直すのが嫌です。 またパッケージ名が入って見た目がウザくなるのも嫌です。 外部ライブラリにしながらも、メインパッケージにあるのと同じごとくサブルーチンを使うにはどうすればいいでしょうか? メインパッケージに初めに全部もらえばいけるんじゃないかとか妄想していますが。
165 名前:nobodyさん mailto:sage [2007/09/28(金) 22:30:18 ID:???] >>164 >>19 読んで応用しろ。キーワードはexporter
166 名前:nobodyさん [2007/09/28(金) 22:45:38 ID:3wKaaJqT] orz
167 名前:nobodyさん mailto:sage [2007/09/28(金) 23:42:41 ID:???] べつにExporterなんかいらないだろ 全部plファイルにしてrequireでつなげろ
168 名前:nobodyさん mailto:sage [2007/09/28(金) 23:57:57 ID:???] おれだったらOOPが楽かな
169 名前:nobodyさん mailto:sage [2007/09/29(土) 00:02:00 ID:???] >>167 すげえまじで感動したw つか、require '....pl' ってperl4時代のモンだと思って使ってもなかったよ。 これからも使わんけどw もちろんstorableとか使用するときには必須>require
170 名前:nobodyさん mailto:sage [2007/09/29(土) 00:04:52 ID:???] があ、Data::Dumper の読み込み時だ。require 使うのorz...
171 名前:nobodyさん [2007/09/29(土) 00:51:07 ID:2KPMiuug] >>167 え? 明日試してみます。
172 名前:nobodyさん mailto:sage [2007/09/29(土) 02:58:11 ID:???] みんなrequire つかわないのかw おらぁ使いまくりだ メインCGI一個に 汎用サブルーチンplに処理ブロックごとにpl分割 これが楽でいい。
173 名前:164 [2007/09/29(土) 06:51:46 ID:2KPMiuug] >>167 できないんですけど・・・・ s.plのpackage s;にサブルーチンを移しました。 で、 print check(1,2,3,4,5); でエラーでました。メインパッケージにそんな関数ないと。 もちろん print s::check(1,2,3,4,5); なら動作します。 どういうことですか? ウソ付きましたか?
174 名前:nobodyさん mailto:sage [2007/09/29(土) 07:14:33 ID:???] 3時間の出来事をシミュレーションするプログラムを書いています。 一応完成したのですが、時間の捉え方が「残り時間」というものになっています。 これを例えば、9時〜12時の間とかで捉えたいのです。 今は内部の処理が進むにつれて「残り時間」の変数を減算して、「残り時間」変数が0になったら処理おしまいというものです。 これを開始時刻と終了時刻を初めに決めて、+10秒とか命令出しながら実際に時間が進んでるかのような感じに 「今何時?」と聞けるくらいの感じに変えてみたいのです。 使えそうなモジュールがあったら教えてください。
175 名前:nobodyさん mailto:sage [2007/09/29(土) 07:57:19 ID:???] >>173 >package s; に移しました。 何故移す?
176 名前:nobodyさん mailto:sage [2007/09/29(土) 12:27:00 ID:???] 変数名を参照することって出来ますか? $test = 'abc'; という変数があるとして、$testの'test'の部分を知りたいのです。 例えば、@a = ($test, $boo, $hoge); という配列があるとして、 これを それぞれ変数名 => 値 というハッシュに変換したいのです。 $h{'test'} => 'abc' のように。
177 名前:nobodyさん mailto:sage [2007/09/29(土) 13:07:39 ID:???] >>176 > @a = ($test, $boo, $hoge); この時点で $a[0] には $test が持つ値 'abc' そのものがコピーされて入る。 よって代入後に @a 内の各値からコピー元の変数名を辿る事はできない。
178 名前:nobodyさん [2007/09/29(土) 21:46:18 ID:m5gmrcyE] 文字コードをUTF-8に変換したいのですが use Jcode; $str = "あああ"; print Jcode->new($str)->utf8; とすると Undefined subroutine &Jcode::_Classic::euc_utf8 called at パス/Jcode/_Classic.pm line 255. というエラーが発生してしまいます。 ちょっと調べたらJcodeのバージョンを下げれとありましたがそれは無理なので何か他に方法はないでしょうか。
179 名前:nobodyさん mailto:sage [2007/09/30(日) 02:32:26 ID:???] 未だにJcodeが使われるのは子飼弾がちゃんとEncodeの使い方を解説しないからなのか・・・
180 名前:nobodyさん mailto:sage [2007/09/30(日) 04:35:03 ID:???] >>178 使っているPerlのバージョンは? Jcodeはどのようにインストールしたもの? >>179 Web関連のムックで書いてなかったか? >Enocdeの使い方
181 名前:164 [2007/09/30(日) 08:09:20 ID:9pVP3h63] >>175 そりゃ中身なにもないものをrequireしてもしょうがないからですよ。 一体何が間違ってるというんですか? メインパッケージにないものをrequireを使えば routin(1,2,3); で呼べるというのは本当なんですか?ウソなんですか?
182 名前:nobodyさん mailto:sage [2007/09/30(日) 08:18:04 ID:???] ほらね、strictとwarningsを無理に使うと本末転倒になるでしょ。
183 名前:nobodyさん mailto:sage [2007/09/30(日) 08:34:17 ID:???] >>181 誰もウソなんかついちゃいない。 お前が全然理解できてないだけ。
184 名前:164 [2007/09/30(日) 08:40:27 ID:9pVP3h63] >>183 だから何をどうしろというんですか? 最小コードを教えてください。
185 名前:nobodyさん mailto:sage [2007/09/30(日) 08:49:27 ID:???] >>182 181の事を示して言ってるならwarningsもstrictも無関係にエラー出るぞ。 176はそう言う次元のお話しではないし、 178は、my宣言してないからwarningsとか宣言してないと見るが? 別にstrict,warningsを嫌うのは勝手だけど、事象は切り分けてくれ。 ここは初心者スレで勝手に脳内変換して>>182 を信じてしまう人が いる可能性もあるんだから。
186 名前:nobodyさん mailto:sage [2007/09/30(日) 08:59:25 ID:???] >>184 うざいなあ、ここで文句垂れてる間にググればとっくに exporter の使い方も 習得出来てるだろうに % cat foo.pl sub foo{ 1 ; } 1; % perl -le 'require q{foo.pl} ; print foo()' 1
187 名前:nobodyさん mailto:sage [2007/09/30(日) 09:40:39 ID:???] >>185 ああごめん。mod_perlと混同して勘違いしてた。 Perlが初めての方なら尚更strict/warningsは ややこしくなるから不必要だと思うけど。
188 名前:164 [2007/09/30(日) 10:10:19 ID:9pVP3h63] >>186 突っ込みが下手すぎ。 package使うなって言って欲しかった。
189 名前:nobodyさん mailto:sage [2007/09/30(日) 10:12:50 ID:???] >>188 くだらない質問でもど偉そうに聞いていいスレ pc11.2ch.net/test/read.cgi/php/1158647441/
190 名前:164 [2007/09/30(日) 11:09:19 ID:9pVP3h63] もしもお前に部下がいるなら可哀想だ。 まだ使う側でないというなら、今のうちに間違いを指摘してきた相手が目下だと反省のできない上司にならないよう気をつけておけ。
191 名前:nobodyさん mailto:sage [2007/09/30(日) 12:11:48 ID:???] >>188 「最小コードを書け」 って言われたから書いたまでだが? >>175 で package に関する点は指摘されてるだろ >>187 mod_perl の mod の字も出てないのに…
192 名前:nobodyさん mailto:sage [2007/09/30(日) 12:51:11 ID:???] 自分の読解力、理解力の無さを棚に 上げて回答者を批判する男の人って…
193 名前:164 [2007/09/30(日) 14:35:18 ID:9pVP3h63] >>191 >>175 のどこがpackageに関する点の指摘なのよ。 あれじゃサブルーチンを別ファイルに移した事の指摘だろ。 >>192 女ならいいのか?クソフェミニストめ。
194 名前:nobodyさん mailto:sage [2007/09/30(日) 15:37:17 ID:???] 質問してもよろしいでしょうか? すみませんが宜しくお願いいたします。 特定の契機を迎えたとき? @_や$_には値が自動でセットされるようになっていますよね? その契機の一覧みたいなものが知りたいのですが、膨大ですか? うまくまとめてるサイトあれば教えてください。
195 名前:nobodyさん mailto:sage [2007/09/30(日) 15:38:11 ID:???] やはり読解力の欠片も無いな
196 名前:nobodyさん mailto:sage [2007/09/30(日) 15:44:41 ID:???] >>194 search.cpan.org/~nwclark/perl-5.8.8/pod/perlvar.pod perldoc.jp/docs/perl/5.6.1/perlvar.pod ラクダ本
197 名前:nobodyさん mailto:sage [2007/09/30(日) 16:14:26 ID:???] >>179 5.005とか5.6と互換を取るのに便利だったりする。 (5.005は古いバージョン使ってたり、変換規則が違ったりするけど。) それはともかく、チュートリアルをpodで欲しいとか思うよね。 unicodeのチュートリアルとか、あっちこっちにドキュメントが散らばってて、 しかも、翻訳も無かったりして、初心者にはきついと思う。
198 名前:nobodyさん mailto:sage [2007/09/30(日) 23:01:50 ID:???] コーディングではないけれどPerl関連(Windows関連?)ということでお願いします。 PerlのパスをUNIX風に設定しておくことってできますか?(usr/bin/perl) 今は5.8なんですが、前に5.6の頃、実際のパスがc:\perlだとしても この書き方(パス)で動いてた気がするんだけど・・・
199 名前:nobodyさん mailto:sage [2007/10/01(月) 00:24:00 ID:???] 5.8でも動く件
200 名前:198 mailto:sage [2007/10/01(月) 01:04:55 ID:???] >>199 すんません、ブラウザでCGIとして起動した場合はどうですか? 関連に気づかなくて書かなかったんですが、 こちらでもプロンプトでは動くんだけど、ブラウザではアウトです。
201 名前:nobodyさん mailto:sage [2007/10/01(月) 01:27:53 ID:???] 普通にpath通せばいいんじゃね?
202 名前:nobodyさん mailto:sage [2007/10/01(月) 02:12:06 ID:???] それはPerlじゃなく各々のhttpdの管轄 なので他の適切なスレを当たって下さい
203 名前:198 mailto:sage [2007/10/01(月) 02:14:31 ID:???] >>201 ありトゥース!・・・が、しかし。。 恥をしのんでお尋ねしますが、パス通すって・・? Windowsの環境変数にusr/bin/perlを追記するってことではないですよね。 い、いかように・・・
204 名前:nobodyさん mailto:sage [2007/10/01(月) 07:19:52 ID:???] 関連付けでおk。
205 名前:nobodyさん [2007/10/01(月) 09:49:39 ID:4GodVsb7] >>180 レス遅くなってすみません。 JcodeやめてEnocdeで対応させました。 perlのバージョンは5.8、Jcodeは最初サーバーには入っていなかったので 自前で自分のディレクトリにインストールして使ってました。 それで問題なかったのですが最近サーバの方が用意してくれたらしく そっちを読み込むようになってました。 そのサーバにインストールされた新しいJcodeで問題が発生していたと言う次第でした。 しかし新しいJcodeはなんであんなとんでもないバグを持ってるんだろうか。 UTF-8変換できなきゃJCodeの存在意義が無くなるのに。
206 名前:nobodyさん mailto:sage [2007/10/01(月) 10:32:27 ID:???] >>203 環境変数にperl.exeのパスを通せばいい。 もしくは出来るならhttpdの方で指定するとか。
207 名前:nobodyさん mailto:sage [2007/10/02(火) 00:21:38 ID:???] >>203 かなり無理やりな解決方法。 C:\直下にusrを作って、そこへC:\Perl\bin\(Enter連打でinstした場合)をフォルダごとコピー。 でC:\Perl\lib\とC:\Perl\site\もフォルダごとコピー。 これでC:\usr\直下に、binとlibとsiteができる。 それでcgiファイルの頭に #!/usr/bin/perlでOK。 でも、ppmや、自前でモジュールインストールする度に、本来のC:\Perl\以下よりlibやsiteをコピー しなければならないし、UpgradeやUninstallの時も当然ながら消してはくれません。 普通の人にはお勧めできない。 実を言うと、C:\直下にusrやtmpやvarなんかを作ってると、perlスクリプトの中からフルパスで /var/tmp/〜とかやってファイル操作したりするのに、Unix環境といちいち書き換えなくて済むっちゅう 横着ができたりします。
208 名前:nobodyさん mailto:sage [2007/10/02(火) 00:40:37 ID:???] activeperlで>207の方法をやるなら、perldoc reloc_perlを見ると幸せになれるかもしれない。
209 名前:nobodyさん mailto:sage [2007/10/02(火) 01:54:23 ID:???] 質問です。 LWP::UserAgentとCrypt::SSLeayを利用して、SSLでサーバと通信を行っています。 相手先の証明書が、期限切れなど信頼できない場合は、以降の処理を打ち切りたいのですが、 それを判別するにはどうすればよいですか?
210 名前:nobodyさん mailto:sage [2007/10/02(火) 02:05:01 ID:???] LWP::Protocol::httpsにヒントがあるかもね
211 名前:180 mailto:sage [2007/10/02(火) 02:34:16 ID:???] >>205 ん、別に少し間が開いたくらいは気にせんからいいよ。 ただ、サーバー管理者が入れたのがおかしいってのは変だね。 症状からすると、(わざわざ)pure perl のコードを選択したときのバグっぽいけど これって fix されたんじゃなかったっけか? それにPerl本体が 5.8なら Encodeを利用する形でJcodeは入るはずだしなあ。
212 名前:nobodyさん [2007/10/02(火) 06:25:36 ID:SbhRpQr+] レン鯖に特定のモジュールがインスコされてるかどうか テストするのに良い方法はないでしょうか?
213 名前:nobodyさん mailto:sage [2007/10/02(火) 07:23:13 ID:???] @INCを総当たり
214 名前:nobodyさん mailto:sage [2007/10/02(火) 08:34:43 ID:???] >>211 原因を特定できないのなら黙っておけ。
215 名前:nobodyさん mailto:sage [2007/10/02(火) 09:25:29 ID:???] >>212 実際に use して調べるのが一番確実。 #!/usr/bin/perl -w use strict qw(subs vars); my $token = qr/[A-Z_a-z][0-9A-Z_a-z]*/; my $module = ($ARGV[0] || '') =~ /^($token(?:::$token)*)\z/ ? $1 : ''; my $result = $module ? eval "use $module" : 'usage: .../this.cgi?Module::Name '; $result ||= $@ || qq/$module ${"${module}::VERSION"}/; print "Content-Type: text/plain\n\n$result"; __END__
216 名前:nobodyさん mailto:sage [2007/10/02(火) 09:39:01 ID:???] もう少し可読性を高める努力をしろよ。
217 名前:nobodyさん mailto:sage [2007/10/02(火) 10:20:20 ID:???] >>207 インストールしなおしでその構成になるようにしたほうがいいんじゃ・・・
218 名前:nobodyさん mailto:sage [2007/10/02(火) 17:33:08 ID:???] $^Oが取り得る値のリストってどこかにない?
219 名前:nobodyさん mailto:sage [2007/10/02(火) 19:19:35 ID:???] >>218 search.cpan.org/~nwclark/perl-5.8.8/pod/perlport.pod#PLATFORMS
220 名前:nobodyさん mailto:sage [2007/10/02(火) 20:12:26 ID:???] >>215 コードまで書いていただいてありがとうございました。 use <モジュール名> をevalして戻り値を確かめるわけですね。 どうもevalは使うのに躊躇してしまうんですが、こういうときは便利ですね。 >>213 @INCの中を覗くという発想も考えたことがなかったので やってみたいと思います。
221 名前:nobodyさん [2007/10/02(火) 21:03:46 ID:2QBdgnfp] 日本語変換の問題について質問です。 コードをEUCで書いて、出力をShift_JISで行うのが目的です。 今はjcode.pl使っています。 activeperlのwinxp用でローカルチェックをしています。 JCODEというモジュールもあるそうですが、activeperlには初期状態でなかったりしますよね。 確か自分は入れた覚えもあるのですが。 オススメは何ですか? 確か他にも変換用のモジュール?はあったと思いますが。 euc,shift_jis,jisの3つだけでのオススメが知りたいです。
222 名前:nobodyさん mailto:sage [2007/10/02(火) 21:47:16 ID:???] >>221 万能解は無いので、Encode / Jcode / jcode.pl / Unicode::Japanese を 一通り使い込んでから、好みと用途に合ったものをお選びなさいな。
223 名前:nobodyさん mailto:sage [2007/10/02(火) 23:24:50 ID:???] いまさらjcode.pl薦めるなよ。
224 名前:221 [2007/10/02(火) 23:41:50 ID:2QBdgnfp] jcode.plを除いて一番汎用的に使えるのはどれですか? 汎用的って言っても、サーバーやローカル環境で一番広く使えるものです。 一番広まってるモジュールといえばいいのですかね。
225 名前:nobodyさん mailto:ge [2007/10/03(水) 00:23:34 ID:???] リストをリストのままリストの個数を得るにはどうすればいいですか? (1,2,3,4,5) これを配列にいれずにってことです。 grepとかでもリストが作られますよね。 そういうときにわざわざ配列に入れてから要素数を知るのが面倒です。 scalar(@{[grep{$_>0}]}) っていうのも同じくなんかなぁと思います。 普通にないなら関数作ろうと思うのですが。
226 名前:nobodyさん mailto:sage [2007/10/03(水) 00:41:53 ID:???] scalar(@{[1,2,3,4,5]})
227 名前:nobodyさん mailto:sage [2007/10/03(水) 00:41:53 ID:???] はあ
228 名前:nobodyさん mailto:sage [2007/10/03(水) 01:16:44 ID:???] システムに依存する組み込み関数が使用できるかどうか 手っ取り早く調べる方法ってなにかな?
229 名前:nobodyさん mailto:sage [2007/10/03(水) 01:49:55 ID:???] >>224 インスコしてなかったら自分で読み込むようにすればいいよ。 use libつかうなり同階層に置いてuseするなり。
230 名前:nobodyさん mailto:sage [2007/10/03(水) 01:58:30 ID:???] >>224 Perl 5.8.x なら標準モジュールの Encode が一番広まっていると言えば 広まっている。 >>225 リストコンストラクタが幾つの要素を吐くかは、吐かせてみないと 分からない。吐かせた結果を保存しないのなら、目の前を流れていく 個数を数えるしかない。 sub count { scalar @_ } $num = count((1) x rand 10); $num = scalar @{[ (1) x rand 10 ]}; $num = 0; ++$num for (1) x rand 10; >>228 search.cpan.org/~nwclark/perl-5.8.8/pod/perlport.pod#FUNCTION_IMPLEMENTATIONS に目を通した上で eval 内で実際に使用して確認。
231 名前:225 [2007/10/04(木) 00:46:59 ID:kUiVRXqk] >>230 黒魔術みたいなコードはいけないってこのスレで教えてもらいました。 素人ながら納得しました。 ですからあなたもそういうコード書いていてはいけないと思います。 それも教える側でそれを使うと黒魔術が流行ってしまいます。 僕にはあなたのコードが何をしてるのかわかりません。
232 名前:nobodyさん mailto:sage [2007/10/04(木) 00:52:08 ID:???] ++$num for (1) x rand 10; こんな書き方はじめてみたw 7行プログラミングとかに出てきそうだな。 だれか解説というか一般的な形にしてクレクレ
233 名前:nobodyさん mailto:sage [2007/10/04(木) 00:57:28 ID:???] foreach((1) x rand(10)){ ++$num; }
234 名前:nobodyさん mailto:sage [2007/10/04(木) 02:06:39 ID:???] こんなの全然黒魔術じゃないと思うが・・・
235 名前:nobodyさん mailto:sage [2007/10/04(木) 03:26:46 ID:???] 中身が1行のfor(もしくはforeach)なんて普通こう書かんか? ↑もう何年もforeachなんて書かずにforで済ませてるからスペル調べちまったw
236 名前:nobodyさん mailto:sage [2007/10/04(木) 03:33:49 ID:???] それは分かりづらい。括弧でくくった方がいいな。 ++$num for ((1) x rand 10);
237 名前:nobodyさん mailto:sage [2007/10/04(木) 06:44:51 ID:???] これだからPerlのコードは気持ち悪いんだよな
238 名前:225 [2007/10/04(木) 07:08:27 ID:kUiVRXqk] ((1) x rand(10)) これの意味がわかりません。 1*10とどう違うんですか。 それとforに10とか与える意味も。 0..10ならわかるけど。
239 名前:nobodyさん mailto:sage [2007/10/04(木) 08:10:41 ID:???] このスレは精神障害者ばかりですね。
240 名前:nobodyさん mailto:sage [2007/10/04(木) 08:14:34 ID:???] >>231 その程度の実力で関数を自作するってかw
241 名前:nobodyさん mailto:sage [2007/10/04(木) 09:03:58 ID:???] >>238 ひょっとして >吐かせた結果を保存しないのなら、目の前を流れていく >個数を数えるしかない。 の意味がわかってないのか? お前が一定の個数で決め打ちしたいなら最初からそうすればいいだけ。
242 名前:nobodyさん mailto:sage [2007/10/04(木) 09:42:16 ID:???] >> grepとかでもリストが作られますよね。 >> そういうときにわざわざ配列に入れてから要素数を知るのが面倒です。 grepに限って言えばスカラーコンテキストでは条件が真になる要素数を返すわけだが。 % perl -e 'print scalar(grep { $_ > 0 } 0,1,1,0,1)' 3
243 名前:nobodyさん mailto:sage [2007/10/04(木) 09:43:48 ID:???] x 10ならわかるけどなんでrand(10)なん? それがいまいちわからんぽ
244 名前:nobodyさん mailto:sage [2007/10/04(木) 10:10:16 ID:???] いつも10だと面白くないと思って乱数にしただけで特に意味はないだろう。 そんなこと気にしてるとハゲるぞ。
245 名前:nobodyさん mailto:sage [2007/10/04(木) 10:20:27 ID:???] >>238 perldoc.jp/docs/perl/5.8.8/perlop.pod 「Multiplicative Operators operator, multiplicative」の項 rand EXPR は 0 以上 EXPR 未満の値を返すので、整数値が欲しい際は 通常 int() を通す。但し perl が整数値を欲しがっている箇所に小数値が 与えられた場合は、自動で整数値に丸められる。 $str = substr('abcd', 0, rand 5); # '', 'a', 'ab', 'abc', 'abcd' $var = $array[ rand @array ]; # @array 中の要素からランダム選出 x 演算子の右辺は「個数」という整数値を要求しているので、(1) x rand 5 という式は (), (1), (1,1), (1,1,1), (1,1,1,1) のいずれかになる。 >>243 >>241 が指摘してくれているように、最初から個数が分かっているなら 「リストをリストのままリストの個数を得る」必要はなく、$num = 10; 等と書いておけば済む。(1) x rand 10 という式には「要素数が不定で」 「コピペですぐ動作確認できる」リストのサンプルという以上の意味は無い。
246 名前:nobodyさん mailto:sage [2007/10/04(木) 17:45:56 ID:???] これ何? $|++;
247 名前:nobodyさん mailto:sage [2007/10/04(木) 18:42:58 ID:???] 出力バッファの自動フラッシュを抑制
248 名前:nobodyさん mailto:sage [2007/10/04(木) 18:43:28 ID:???] ハニーフラッシュ!
249 名前:nobodyさん mailto:sage [2007/10/04(木) 18:44:27 ID:???] 抑制じゃねえ間違えた まあいいや
250 名前:nobodyさん mailto:sage [2007/10/04(木) 19:48:49 ID:???] プログラミングPerlのパッケージ、オブジェクトの章を読んでも意味が さっぱりわからなかったのですがどうすればいいですか? みなさんはあそこに書いてあること、あっさりわかりました?
251 名前:nobodyさん mailto:sage [2007/10/04(木) 20:48:51 ID:???] >>250 ラクダ本だけでは実感が掴みにくいような。 www.rfs.jp/sb/perl/ でも解説されてる。 同じ説明でもいろんな説明を見ると分かってくるような。
252 名前:nobodyさん mailto:sage [2007/10/04(木) 21:37:38 ID:???] >>250 fleur.hio.jp/perldoc/mix/pod/perlboot.html
253 名前:nobodyさん mailto:sage [2007/10/05(金) 09:42:06 ID:???] OOP 勉強したいなら Plagger に入門すればいいよ!
254 名前:nobodyさん mailto:sage [2007/10/05(金) 12:41:48 ID:???] >>251 これは本当に超初心者向けといった感じですね。 >>252 これはわかりやすい! >>253 こんな面白いものがあったんだ
255 名前:nobodyさん [2007/10/06(土) 12:48:34 ID:PfM+S4yJ] foreach(){} ↑フォーイーチみたいな発音でいいですよね・・・?
256 名前:255 [2007/10/06(土) 13:03:13 ID:PfM+S4yJ] 追加お願いします。 use strict; my %hash = qw/2 5 s 2 d 3/; print map{"$_ " , 1}keys %hash; >Execution of C:\test.pl aborted due to compilation errors. これ何がいけないんですか? print map{$_ ," ", 1}keys %hash; こう書き換えるとエラーになりません。 activeperl5.8.1のwinxp稼動です。
257 名前:255 [2007/10/06(土) 13:23:18 ID:PfM+S4yJ] ぐるせいや。ぐるせいや。
258 名前:nobodyさん mailto:sage [2007/10/06(土) 13:30:22 ID:???] >>256 perldoc map見れば分かる
259 名前:255 [2007/10/06(土) 15:01:35 ID:PfM+S4yJ] >>258 すいません。わからないです。 教えてください。
260 名前:nobodyさん mailto:sage [2007/10/06(土) 15:40:28 ID:???] > perldoc map見れば分かる > map - An utility to map texts from and to unicode ねーよwww
261 名前:255 [2007/10/06(土) 17:19:29 ID:PfM+S4yJ] どなたか>>255-256 の回答お願いできませんでしょうかm(__)m
262 名前:nobodyさん mailto:sage [2007/10/06(土) 17:33:12 ID:???] print map{("$_ ", 1)} keys %hash;
263 名前:nobodyさん mailto:sage [2007/10/06(土) 17:33:28 ID:???] 読み方なんてどーでもいいじゃん スクールでも始める気か?
264 名前:nobodyさん mailto:sage [2007/10/06(土) 17:44:55 ID:???] >>255 dictionary.goo.ne.jp/search.php?MT=for&kind=ej&mode=0&base=1&row=1 dictionary.goo.ne.jp/search.php?MT=each&kind=ej&mode=0&kwassist=0 これぐらいは辞書引いたらどうよ。 >>256 perldoc.jp/docs/perl/5.6.1/perlfunc.pod > { はハッシュリファレンスとブロックの両方の開始文字なので、 > map { ... は map BLOCK LIST の場合と map EXPR, LIST の場合があります。 > perl は終了文字の } を先読みしないので、{ の直後の文字を見て > どちらとして扱うかを推測します。通常この推測は正しいですが、 > もし間違った場合は、} まで読み込んでカンマが足りない(または多い)ことが > わかるまで、何かがおかしいことに気付きません。 } の近くで文法エラーが出ますが、 > perl を助けるために単項の + を使うというように、{ の近くの何かを変更する必要が > あります。 perlの構文解析までは知らん。
265 名前:nobodyさん mailto:sage [2007/10/06(土) 17:49:40 ID:???] >>260 -fを入れることも自分で分からないようではいかんだろって意味であえて書かなかった
266 名前:255 [2007/10/06(土) 19:25:29 ID:PfM+S4yJ] >>264 ありがとうございます。 それでフォーイーチでいいのですか? 用語なんで普通の読み方で本当にいいのかという意味の質問だったのですが。 mapの方ですが、 my $hash = {"A "=>"5" , "s"=>"2" , "d"=>"3"}; これでエラーが出ないんです。"A "でエラーが出ないのに、どうして print map{"$_ " , 1}keys %hash; でエラーが出て print map{$_ ," ", 1}keys %hash; でエラーが出ないのか。 よくわからないのですが、ハッシュリファレンスとしてエラーが出そうなのは後者だと思うんです。 カンマが足りないってことで。 そして前者はブロックとしても式としても何も問題がないと思うのです。 my $test = 1; if("$test " , 1){ print "ok"; } これを走らせてもエラーでないですし。 そこらへんどういうことなのかわかりますでしょうか?
267 名前:255 [2007/10/06(土) 19:28:03 ID:PfM+S4yJ] >>265 -fってなんですか? perl.misty.ne.jp/switch.html ここには載ってないですが。
268 名前:nobodyさん mailto:sage [2007/10/06(土) 19:31:23 ID:???] >>266 >それでフォーイーチでいいのですか? 関数名の読み方に正解なんてないから好きに呼べよ。 余程狂ってなきゃ誰も笑ったりしないよ。 で、結局何が問題なんだ? 結論は既に出てるし、perlの仕様について文句言われても困る。
269 名前:nobodyさん mailto:sage [2007/10/06(土) 19:32:40 ID:???] 釣りなのか読解力がないのか単なる馬鹿なのか
270 名前:nobodyさん mailto:sage [2007/10/06(土) 20:11:35 ID:???] >>267 perldocを嫁
271 名前:nobodyさん mailto:sage [2007/10/06(土) 20:42:22 ID:???] >>267 それはperlのオプション。 あんたが必要なのはperldocのオプションだから、 コマンドラインからperldoc perldocで確認すべし。
272 名前:255 [2007/10/06(土) 20:43:43 ID:PfM+S4yJ] >>268 何故エラーが出るのかわからないのです。>>266 にあるとおりです。 >>264 さんのところの話ではつじつまが合わないのです。 >map { ... は map BLOCK LIST の場合と map EXPR, LIST の場合があります。 どちらとして評価しても print map{"$_ " , 1}keys %hash; これでエラーが出る説明になりません。
273 名前:255 [2007/10/06(土) 20:47:23 ID:PfM+S4yJ] >>271 なるほどつまり-fの意味は perldoc -f map で、mapの仕様を確認しろって事なんですね。
274 名前:nobodyさん mailto:sage [2007/10/06(土) 20:59:58 ID:???] >>272 {"$_ " , 1}をEXPRとして、keys %hashをLISTと解釈すると、コンマが足らない。
275 名前:255 [2007/10/06(土) 22:39:59 ID:PfM+S4yJ] >>274 ん・・・ map EXPR, LIST ↑これかーー! 納得です。ずっと{}の中のコンマばかりに注目してました。{}とLISTの間のコンマのあるなしが問題だたのですね。
276 名前:nobodyさん mailto:sage [2007/10/06(土) 23:23:20 ID:???] フォーイーチでいいんじゃないの?
277 名前:nobodyさん mailto:sage [2007/10/06(土) 23:29:56 ID:???] perldoc に -f をつけるだけで上場できるインターネッツはここですか?
278 名前:nobodyさん mailto:sage [2007/10/07(日) 13:10:36 ID:???] むしろ英単語の for と each をくっつけただけのものを 他になんて読めるのか知りたい
279 名前:nobodyさん mailto:sage [2007/10/07(日) 15:12:27 ID:???] >>278 仏単語の fo と 英単語の reach をくっつけたものという可能性も検討すべきでは?
280 名前:nobodyさん [2007/10/07(日) 18:18:02 ID:LZD6O2BK] フォーチだろ。
281 名前:nobodyさん [2007/10/07(日) 21:49:16 ID:lRWvT8wN] ソケット使ってホームページを取得するプログラムを書いてます。 HTTP/1.1 200 OKが返ってきて、Content-lengthもある程度あるのに、 フッタが何もないことがあるのですがどうしてでしょうか。 正常に見れるサイトもあります。 use Socket; use FileHandle; $host = "www.ftnet.or.jp"; $path = "/FTtuusin/index.html"; $port = 80; $ip = inet_aton($host) || &error("host($host) not found.\n"); $SOCKADDR = pack_sockaddr_in($port, $ip); $res = &connect($host,$path,$port); print $res; exit;
282 名前:nobodyさん [2007/10/07(日) 21:51:37 ID:lRWvT8wN] sub connect { my ($res, $host, $path, $port); $res = ""; $host = $_[0]; $path = $_[1]; $port = $_[2]; # ソケットの生成 socket(SOCKET, PF_INET, SOCK_STREAM, 0) || return -1; # ソケットの接続 connect(SOCKET, $SOCKADDR) || return -2; autoflush SOCKET (1); print SOCKET "GET $path HTTP/1.1\n"; print SOCKET "Referer: $url\n"; print SOCKET "Host: $host:$port\n"; print SOCKET "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\n"; print SOCKET "Connection: close\n"; print SOCKET "\n"; foreach (<SOCKET>) { $res .= $_; } close SOCKET; return $res; }
283 名前:nobodyさん [2007/10/07(日) 21:53:04 ID:lRWvT8wN] レスポンスは HTTP/1.1 200 OK Date: Sun, 07 Oct 2007 11:31:44 GMT Server: Apache/2.0.52 (CentOS) Last-Modified: Fri, 16 Jun 2006 05:41:38 GMT ETag: "4474a-daf-deccc880" Accept-Ranges: bytes Content-Length: 3503 Connection: close Content-Type: text/html
284 名前:nobodyさん mailto:sage [2007/10/07(日) 23:54:11 ID:???] フッタって何の事言ってる?
285 名前:281 mailto:sage [2007/10/08(月) 00:21:06 ID:???] すまん、確かにフッタって言葉は違う気がしてきた。 本文の部分です。htmlが書かれてる部分。
286 名前:nobodyさん mailto:sage [2007/10/08(月) 02:57:53 ID:???] >>281 「何もない」状態を確実に再現できる例を 用意してくれないと、デバッグの手伝いはできないよ。 少なくとも手元の環境だと>>281-282 のコードとサイトは 一応動くし全部取得できている。
287 名前:nobodyさん mailto:sage [2007/10/08(月) 03:06:09 ID:???] HTTPは正確には\nではなく\r\nでそ
288 名前:nobodyさん mailto:sage [2007/10/08(月) 03:32:19 ID:???] HTTP/1.0にしたら解決しましたって答えは無しな。 わざわざ作るなら1.1を使う物を作ろうよ。
289 名前:nobodyさん mailto:sage [2007/10/08(月) 03:33:54 ID:???] 答えじゃないな。解決法だなorz
290 名前:nobodyさん mailto:sage [2007/10/08(月) 06:54:42 ID:???] ちょっとここでいいのかどうかわかりませんが、質問です。 HTML-Parser-3.56を、cpan2rpmで.rpmにリビルドしようとしてたんですが、 make testの段でエラーになります。 (略・・・ t/unbroken-text......ok t/unicode-bom........ # Failed test in t/unicode-bom.t at line 43. # got: 'Parsing of undecoded UTF-8 will give garbage when decoding entities at t/unicode-bom.t line 24. # Parsing of undecoded UTF-8 will give garbage when decoding entities at t/unicode-bom.t line 28. # Parsing of undecoded UTF-16 at t/unicode-bom.t line 31. # Parsing of undecoded UTF-16 at t/unicode-bom.t line 34. # Parsing of undecoded UTF-32 at t/unicode-bom.t line 37. # Parsing of undecoded UTF-32 at t/unicode-bom.t line 40. ・・・・(略) t/unicode............ok t/xml-mode...........ok Failed Test Stat Wstat Total Fail Failed List of Failed ------------------------------------------------------------------------------- t/unicode-bom.t 1 256 2 1 50.00% 1 1 test and 1 subtest skipped. Failed 1/48 test scripts, 97.92% okay. 1/430 subtests failed, 99.77% okay.
291 名前:つづき mailto:sage [2007/10/08(月) 06:55:12 ID:???] で自前で、tar xzf HTML-Pasrer-3.56 perl Makefile.PL make make test したときは、ビルドエラーにならず、 (略... t/xml-mode...........ok All tests successful, 1 test and 1 subtest skipped. Files=48, Tests=430, 5 wallclock secs ( 3.03 cusr + 1.62 csys = 4.65 CPU) と、ちゃんと通ります。 そこで、途中経過のspecファイルと、自前make時の出力を見比べてみると、 1:cd HTML-Parser-3.56 2:grep -rsl '^#!.*perl' . | 3:grep -v '.bak$' | 4:xargs --no-run-if-empty /usr/bin/perl -MExtUtils::MakeMaker -e 'MY->fixin(@ARGV)' 5:/usr/bin/perl -MExtUtils::MakeMaker -e ' print qq|PREFIX=/var/tmp/perl-HTML-Parser-3.56-root/usr| if $ExtUtils::MakeMaker::VERSION =~ /5\.9[1-6]|6\.0[0-5]/ ' | 6:/usr/bin/perl Makefile.PL と、cd HTML-Parser-3.56 から /usr/bin/perl Makefile.PLまでの間になにか挟まってます。(↑のはcpan2rpmで出来たspec) 多分、5行目は、仮インストールPREFIXを指定してるとこなので必要だとは思いますが、2,3,4行目でやってることの 意味がわかりません。
292 名前:つづき2 mailto:sage [2007/10/08(月) 06:56:35 ID:???] ためしに自分で展開したHTML-Parserに、上の部分だけ(5行目以外)shスクリプトにコピペして実行してみると、 make testでエラーになりました。 さらに、2,3部分のみ実行すると、 ./t/document.t ./t/marked-sect.t ./t/dtext.t ./t/msie-compat.t ./t/stack-realloc.t ./t/headparser.t ./t/crashme.t ./t/script.t ./t/filter-methods.t ./t/entities2.t ./t/unicode.t ./t/unicode-bom.t ./eg/hlc ./eg/hform ./eg/hstrip ./eg/htitle ./eg/htextsub ./eg/htext ./eg/hanchors ./eg/hdump ./eg/hrefsub ./mkpfunc ./mkhctype と、こんな結果になるんですが、これをlist(@ARGV)として perl -MExtUtils::MakeMaker -e 'MY->fixin(@ARGV)'に渡してるんだと思うんですが、 この'MY->fixin(@ARGV)'がなにをやってるのかがわかりません。 MakeMaker.pmやそこからuse,requireしてるモジュールから'fixin'関数を探しましたが見つからず、 また、ggってみても、cpan2rpmの途中経過を報告してるページにHITするだけで、これが何を意味してるかがわかりません。 specから、この2,3,4の部分を消してrpmbuildするとちゃんとビルドが通ることは通るんですが、 なにか重大な落とし穴があるような気がして、気持ち悪いです。
293 名前:290 mailto:sage [2007/10/08(月) 07:22:51 ID:???] おっと、MM_Unixのマニュアルに’fixin’を発見。今までWin機にインストールされたマニュアルみても出てこんわけだ。 でも、説明の Inserts the sharpbang or equivalent magic number to a set of @files. で?? sharpbangってなんですか。 さらにUnix版のMakeMaker.pm内で検索かけても’fixin’で出てこない。 なおさら???です。
294 名前:290 mailto:sage [2007/10/08(月) 07:37:52 ID:???] なんべんも連投すいません。 sharpbangってのはどうやらファイルの頭の #!/usr/bin/perl ってのらしいですが、ますます訳がわかりません。 一晩寝てないんでもう頭がバグってきました。 もう寝ます。
295 名前:nobodyさん mailto:sage [2007/10/08(月) 11:25:25 ID:???] > 一晩寝てないんでもう頭がバグってきました。 徹夜なんかする奴はばかです。
296 名前:281 mailto:sage [2007/10/08(月) 12:47:24 ID:???] >>286 >>281 は余計と思われる部分を省いて、通信に関わる部分だけを書いたんですが それを実際に自分で動かしてみたら正常に動きました。 htmlを取得したあとの文字列処理が原因だったようです。 ご迷惑おかけしました。サンクスです。
297 名前:nobodyさん mailto:sage [2007/10/08(月) 15:03:02 ID:???] >>290-294 そこまで辿れてるのならソース見れば? search.cpan.org/src/MSCHWERN/ExtUtils-MakeMaker-6.36/lib/ExtUtils/MM_Unix.pm ザラっと読んだ限りでは shebang (sharpbang) 行を自分の環境に 合うものへ修正しているみたいだけど。
298 名前:290 mailto:sage [2007/10/08(月) 21:22:47 ID:???] 昼間寝てリフレッシュしたんで、追跡再開。 >>297 のおっしゃる通り、’MY->fixin(@ARGV)’で、292のテストスクリプト一式の先頭行が、 #!perl -w から #!/usr/bin/perl -w に書き換えられてる模様。 でその下に3行ほど、 eval 'exec /usr/bin/perl -w -S $0 ${1+"$@"}' if 0; # not running under some shell ってゆうコードが追加されてます。 それ以下、use strict・・・からの実行部分は両者(自前makeとcpan2rpm)で一字一句違いなし。 (ここからはmake testでエラーの出る t/unicode-bom.tに絞って追っています) なんで上の追加された3行が原因か?と調べてみると、ここの部分は、どうやら一部の/bin/shが頭の #!/usr/bin/perl(sharpbang)を認識しない時用に直接shから起動させるためのコードの模様。 これが原因ではないっぽい。 う〜んと思ってスクリプトを上から順になぞっていくと、 !!!!!っ! わかったーーー!! このスクリプトの後半部分で、is(join("",@warn), <<EOT)以下で、warningのトラップをしてるんだけど、 うえの3行が追加されたことによって、当然実行部分の行数が3行づつ下がってるんだけど、 warningトラップの各対応行がもともとのまま(つまり実際の行数-3の)部分と比較しようとして is()がこけてmake testがエラってたんです。 >>295 いや〜〜、やっとエラーの原因つかめてすっきりしました。これで今晩はゆっくり寝れます。
299 名前:sage [2007/10/09(火) 19:35:34 ID:oM/XiNAd] Net::Telnetモジュールについての質問です。 ルーターにログインし、$telnet->cmd("show running-config")にて現在のルーターの設定を取得したいのですが、 取得した設定の中に、現在のプロンプトを示す文字列(例えば'#'など)があった場合、そこの行でデータの取得が終わりになってしまいます。 $telnet->promptコマンドにてユーザープロンプトを設定したのですが、その文字列もルーターの設定の中にあった場合、そこで設定の取得が止まってしまいます。 以下に例を書きます。 use Net::Telnet; use strict; my $telnet = new Net::Telnet( Timeout => 10); #ログイン、特権モードへ $telnet->open(host_name); $telnet->login(user_name,password); $telnet->print("enable");#特権モードに $telnet->waitfor("/Pass/i"); $telnet->print(priv_password);#特権パスワード $telnet->waitfor('/#/'); #特権プロンプトで待つ my @show_run = $telnet->print('show running-config'); $telnet->waitfor("hogehoge"); ここのhogehogeに設定した文字列がrunning-config内にある場合、 そこでrunning-configの取得が終了してしまいます。 なにかうまい回避方法があればご教授願います。
300 名前:nobodyさん mailto:sage [2007/10/09(火) 20:11:15 ID:???] >>299 search.cpan.org/~jrogers/Net-Telnet-3.03/lib/Net/Telnet.pm @show_run = $telnet->getlines; とか push @show_run, $line while $line = $telnet->getline(Timeout => 1); で なんとかならんか。Net::Telnet 使ったことないし試してないけど。
301 名前:nobodyさん mailto:sage [2007/10/09(火) 22:13:34 ID:???] 正規表現でもっと詳細に指定してみるとか。
302 名前:nobodyさん [2007/10/09(火) 22:14:34 ID:gGNoM/Xe] Can't locate object method "new" via package "XML::RSS" (perhaps you forgot to load "XML::RSS"?) at XML/RSS.pm line 3. って出たんですがこのエラーはなんですか?
303 名前:nobodyさん mailto:sage [2007/10/10(水) 00:01:33 ID:???] XML/RSS.pmの ソースコードの3行目で XML::RSSのロードを忘れたので オブジェクトメソッドであるnewを 配置できなかった。
304 名前:nobodyさん mailto:sage [2007/10/10(水) 01:09:25 ID:???] >>299 $telnet->prompt('/user prompt $/');
305 名前:nobodyさん mailto:sage [2007/10/10(水) 15:24:05 ID:???] 類似した関数を各ファイルにまとめて、それをuseして使っています。 しかし、それぞれのモジュールで、use CGI としているのですが、 これにより余計な負担がかかっているということはありますか?
306 名前:nobodyさん mailto:sage [2007/10/10(水) 18:20:17 ID:???] 構造を見直すべきだと思うが、 %INCがちゃんとしてくれるから 重複されてロードされるとかはないはず
307 名前:nobodyさん mailto:sage [2007/10/11(木) 16:13:57 ID:???] キャッシュを貯めているフォルダが大きくなりすぎてFTPクライアントではアクセスできません フォルダごと削除したいのですがスクリプトでどうにかできますか?
308 名前:nobodyさん mailto:sage [2007/10/11(木) 17:28:34 ID:???] system "rm -rf /";
309 名前:307 mailto:sage [2007/10/11(木) 17:56:32 ID:???] >>308 消すことができました ありがとうございます
310 名前:nobodyさん mailto:sage [2007/10/11(木) 18:07:02 ID:???] ちょwww
311 名前:nobodyさん mailto:sage [2007/10/11(木) 18:38:41 ID:???] ヤフーで検索した検索の秒数や検索されたURLの一覧を出すような事は Perlで実現可能でしょうか? 例えば「リンゴ」で検索すると自身のサイトで --------------------------------------- ・約27,900,000件 ・0.01秒 ・ja.wikipedia.org/wiki/リンゴ ・www.kcsnet.ne.jp/kyoei ・www.kodomo-iin.com/HL/HL220.html ・www.hasp.tv ・www.yumeringo.com (続く --------------------------------------- このように表示させたいのです。 もし実現可能であれば、どのような仕組みを学べば良いでしょうか。
312 名前:nobodyさん mailto:sage [2007/10/11(木) 19:19:28 ID:???] ヤフーがAPI用意してればできるんじゃない?
313 名前:nobodyさん mailto:sage [2007/10/11(木) 19:30:54 ID:???] ヤフーAPIならとっくに公開してるぞ
314 名前:nobodyさん [2007/10/12(金) 04:05:22 ID:i4CjOo+I] XML::RSSについて質問です。 rssのバージョンが1.0の場合、以下のソースの#エラーが出るの部分で Use of uninitialized value in concatenation (.) or string at rss line 21. というエラーが出てしまいます。 他の<link>タグなどの場合は表示できるので <dc:date>などの名前空間を使っているタグの場合に 上記のエラーが出てしまうみたいです。 どうすれば、名前空間のタグデータも表示できますか? my $rss = new XML::RSS; my $url = "hoge.con/rss.xml"; my $dat = get($url); my $result = $rss->parse($dat); foreach my $item ( @{$rss->{'items'}} ){ if($result =~ /1.0/){ print "@{$item_list}[0]->{'dc:date'}\n"; #エラーが出る }elsif($result =~ /2.0/){ print "@{$item_list}[0]->{'pubDate'}\n"; } }
315 名前:nobodyさん mailto:sage [2007/10/12(金) 04:09:29 ID:???] print @{$item_list}[0]->{'dc:date'} || '', "\n"; とか。
316 名前:314 mailto:sage [2007/10/12(金) 04:37:32 ID:???] すいません。 ソースがおかしかったんで張りなおします。 my $rss = new XML::RSS; my $url = 'hoge.com/rss20.xml '; my $dat = get($url); my $result = $rss->parse($dat); foreach my $item ( @{$rss->{'items'}} ){ if($result =~ /1.0/){ print "$item->{'dc:date'}\n"; #エラーが出る }elsif($result =~ /2.0/){ print "$item->{'pubDate'}\n"; } }
317 名前:314 mailto:sage [2007/10/12(金) 04:50:59 ID:???] 自己解決しました。 print "$item->{'dc'}->{'date'}\n"; という記述でうまくいきました。 お騒がせしました。
318 名前:nobodyさん [2007/10/12(金) 22:46:03 ID:w18ekEW+] ここにいる人は仕事でもPerlに問わずプログラミングをしてるのですか? そういう仕事に就くにはやはり学校などを出てる必要があるのでしょうか? いわゆる大卒みたいな最低条件というか。 前から一度経験してみたいなと思っていましたが、そういうアルバイトはないんでしょうか。 建設現場の日雇いみたいに気軽にやってみたいです。 本業はありますが、結構時間はあるほうなので。 この世界はどうなってるのでしょうか?
319 名前:nobodyさん mailto:sage [2007/10/12(金) 22:50:35 ID:???] 仕事に関する大事なことを自分で調べず2chで聞いてる時点で・・・
320 名前:nobodyさん mailto:sage [2007/10/12(金) 22:59:11 ID:???] セックスアパートって会社で働くといいよ。
321 名前:nobodyさん [2007/10/12(金) 23:23:59 ID:w18ekEW+] 2ちゃんをバカにしてる利用者ほどその利用方法はひどいって法則誰かが言ってましたね。
322 名前:nobodyさん mailto:sage [2007/10/13(土) 00:20:58 ID:???] プログラマーなんて趣味の延長だろ 24時間PCの前でカタカタやるのが楽しくなきゃやってられない
323 名前:nobodyさん mailto:sage [2007/10/13(土) 00:22:01 ID:???] 「CGI Perl 実務経験なし 初心者OK」で求人サイト検索すりゃいいべ。
324 名前:nobodyさん mailto:sage [2007/10/13(土) 00:26:24 ID:???] >>321 その手の切り返しパターンもう飽きた
325 名前:nobodyさん mailto:sage [2007/10/13(土) 00:41:31 ID:???] 多分しっかりやらないとプログラムは楽しくない。
326 名前:nobodyさん mailto:sage [2007/10/13(土) 02:59:15 ID:???] プログラマーは3桁残業にも耐えられる精神力+体力が必要。 年取ったら高確率で禿げそう。
327 名前:nobodyさん [2007/10/13(土) 15:06:53 ID:iKtPwiMH] $a = 0000010 この文字列を数字に変える($ = 10) 簡単な表記はありますでしょうか? sprintf使ってみたのですが上手くいきません
328 名前:nobodyさん mailto:sage [2007/10/13(土) 15:10:02 ID:???] それは文字列じゃなくて8進数じゃ? もし$a= "0000010"; なら 関数int使えばいい
329 名前:327 mailto:sage [2007/10/13(土) 15:13:51 ID:???] すみません 自己解決しました %dで
330 名前:318 [2007/10/13(土) 16:40:37 ID:5Vuk1MtC] この雰囲気からすると日雇いなんかなさそうですね。 しかしこういう雰囲気からすると日雇いなんかありませんよね。 ちょっと待って日雇いなんかありませんよ。 実際いきなりそれを本職とするのは厳しい。 どういう雰囲気なのか味わいたいだけと考えるとそういう会社で働いてる人脈を作るのがよさそうですね。 ここの本職の方は会社と自宅以外にどこに行きますか? 明日とかきっと休日だと思いますけど、街へ行ったりするんですか? 家族持ちだとどうしても接点を取っても仲良くはなれなさそうだから。 独身がいい。女を紹介とかすればそれなりに仲良くなれる気がするんですが。 どうですかね。女は嫌いですか?
331 名前:nobodyさん mailto:sage [2007/10/13(土) 18:43:45 ID:???] コーディング初心者質問スレであって、IT 土方向けの仕事斡旋スレではないんだよなぁ。
332 名前:318 [2007/10/13(土) 19:19:29 ID:5Vuk1MtC] なるほど。 やはり頭は固いと。
333 名前:nobodyさん mailto:sage [2007/10/13(土) 21:12:30 ID:???] 釣りにしては程度が低すぎるんだが、これは素で言ってるのか?w だとしたらやばすぎる。
334 名前:nobodyさん mailto:sage [2007/10/13(土) 21:40:38 ID:???] スルーしとけよ
335 名前:nobodyさん mailto:sage [2007/10/13(土) 21:48:34 ID:???] スレ違いという自分のミスを指摘され 馬鹿にされ悔しさのあまり慢心で書き 出した文章がこれ
336 名前:nobodyさん [2007/10/13(土) 21:53:08 ID:fl6REYk4] IPアドレスから携帯かPCかを判断したいんですがどうやればいいんですか?
337 名前: ◆TWARamEjuA mailto:sage [2007/10/13(土) 22:06:27 ID:???] ここで宣う前に「調べる」ことをお勧めいたします。
338 名前:336 mailto:sage [2007/10/13(土) 22:23:53 ID:???] ググっても分からなかったので教えてもらえませんか
339 名前:nobodyさん mailto:sage [2007/10/13(土) 22:31:44 ID:???] どうググったのですか
340 名前: ◆TWARamEjuA mailto:sage [2007/10/13(土) 22:35:33 ID:???] (´-`).。oO(ググる≠調べる ググる=さがす ・・・と思うけれども。。。)
341 名前:336 mailto:sage [2007/10/13(土) 22:58:35 ID:???] perl IPアドレス 携帯か 判断 とかで検索したけど出てきませんでした
342 名前:nobodyさん mailto:sage [2007/10/13(土) 23:16:28 ID:???] 俺なら perl 携帯 判定 でぐぐるな。
343 名前:nobodyさん mailto:sage [2007/10/13(土) 23:43:01 ID:???] cpanでmobile ipとかで調べたらいいんじゃね?
344 名前:nobodyさん mailto:sage [2007/10/13(土) 23:50:32 ID:???] >>342 それだとUA判定が多いんじゃ? 携帯 IPアドレス wiki で検索かけたらあったぞ
345 名前:336 mailto:sage [2007/10/13(土) 23:56:59 ID:???] UAで判定できるなんて知らなかった。 IPアドレスより楽みたいですね。
346 名前:342 mailto:sage [2007/10/14(日) 00:01:08 ID:???] >>344 そうだった。IPで判定したいんだったな。これは失礼。
347 名前:336 mailto:sage [2007/10/14(日) 00:06:15 ID:???] UAで判定したら携帯ブラウザエミュだと携帯で判定されるのか。 IPアドレスの方が確実ってことかな?
348 名前:336 mailto:sage [2007/10/14(日) 00:16:57 ID:???] 携帯ってIPアドレスの種類どんどん増えてってたのか・・・ 諦めてUAで判定します。
349 名前:nobodyさん mailto:sage [2007/10/14(日) 03:31:42 ID:???] CPANにモジュールあるよ。
350 名前:nobodyさん mailto:sage [2007/10/14(日) 06:50:16 ID:???] フォームって別ドメインのCGIスクリプトにも送信できたっけ?
351 名前:nobodyさん mailto:sage [2007/10/14(日) 07:54:33 ID:???] >>349 それって DIS るのが生きがいの人のだっけ?
352 名前:nobodyさん mailto:age [2007/10/14(日) 07:54:34 ID:???] open関数で開けるファイルって同じサーバーにある必要がありますよね? 別サーバーにあるファイルの情報を参照する方法はあるのでしょうか? あるのでしたら方法をお教え下さいますようお願いします。
353 名前:318 [2007/10/14(日) 08:50:07 ID:a8OZDemC] >>333-335 別にバカにしてるわけでもないのに、どうしてすぐそうムキになるかね。 逆に聞きたいが、自分は頭が固くないとでも思ってるのかい?
354 名前:nobodyさん mailto:sage [2007/10/14(日) 09:23:55 ID:???] おまい自分が雇う側の立場になって考えてみな 日雇いで次の日に来るかどうか解らない奴を雇う? スキルレベルも解らずに雇う? つか、銭もらえるだけのスキルはあるのか?
355 名前:318 [2007/10/14(日) 12:02:37 ID:a8OZDemC] >>354 >日雇いで次の日に来るかどうか解らない奴を雇う? もしかして日雇い知らない? プログラミングに関わらずどんな仕事でも適当なやつはいらないし雇わないよ。 >スキルレベルも解らずに雇う? どんな職業でも同じ。 君は雇う側になったことがなさそうだ。
356 名前:nobodyさん mailto:sage [2007/10/14(日) 12:10:23 ID:???] もう頭のおかしいヤツ相手にすんなよ ま、いちばん悪いのは病院に連れて行かない親なわけだが
357 名前:nobodyさん [2007/10/14(日) 13:05:35 ID:9kSbwdFL] 画像付きのBBSに、アクセスログ記録を付けて使っています ところが、特定の人だけ同時に3回記録されています WindowsNT5.1 ブラウザが「Sleipnir」 たぶんブラウザのせいだと思いますが、 1回のアクセスでサーバに3回の動作をさせている事になります 一体どういう事なのでしょう? perlの書き方のせいでしょうか?
358 名前:nobodyさん mailto:sage [2007/10/14(日) 13:19:59 ID:???] 実際一番ムキになってるのは君じゃん(w
359 名前:nobodyさん mailto:sage [2007/10/14(日) 17:32:02 ID:???] >>357 とだけ言われてもなぁ、多重コネクションで画像DLなんてよくある話だし。 で、どうしたいのさ?
360 名前:nobodyさん [2007/10/14(日) 18:22:36 ID:9kSbwdFL] >>359 画像付きといってもファイルをたまにアップするだけで ほとんどの利用はテキストの書き込みと、BBSの読み込みです 会員制サイトなのでアクセスの数は少ないです サイトの関連ログが飛ぶトラブルがあって原因の一つと思います まず、なぜこの環境の人がアクセスすると、同時刻に3回CGIが動作して しまうのか、その原因を知りたいです BBSのスクリプトでは、@の配列に入れたものをforeachで展開しながら html表示します、アクセスログはこのプロセスに入れ込んでます
361 名前:nobodyさん mailto:sage [2007/10/14(日) 19:25:16 ID:???] 当人じゃないからわからんが、Javascriptで読み込みなおしするような なんかをしてるんじゃね? 本人に聞いたらいいよ。
362 名前:nobodyさん [2007/10/14(日) 19:59:35 ID:RGItsPbe] 質問です。 CPANモジュールまとめサイトってないですかね? いろいろググったけどそれらしきものがなかったので。
363 名前:nobodyさん [2007/10/14(日) 20:01:11 ID:RGItsPbe] >>362 追記 日本語モジュール解説 まとめサイトです
364 名前:nobodyさん mailto:sage [2007/10/14(日) 20:37:02 ID:???] perldoc.jp
365 名前:nobodyさん mailto:sage [2007/10/14(日) 20:42:54 ID:???] basic認証が必要な自サイトのアクセスログからある部分だけ抽出して表示させたい のですがまずcgiでアクセスするにはどうすればいいでしょうか?
366 名前:nobodyさん [2007/10/14(日) 20:49:09 ID:RGItsPbe] >>364 そこで全部見れるんだ。 ありがとー 結構数すくないっすね ありがっつ
367 名前:nobodyさん [2007/10/14(日) 22:03:04 ID:5YQaKvWD] ブログのページからソースを取ってきてテキスト部分だけを取り出したいんですが use LWP::Simple; $buff = get("www....." ); print $buff; これでとりあえずソースだけは取ってこれたのですが、テキスト(記事)の部分だけ取り出す方法がわかりません。 よろしくお願いします
368 名前:nobodyさん [2007/10/14(日) 22:05:45 ID:RGItsPbe] >>367 正規表現でちょちょいのどんじゃないですかね? 一度調べてみることをおすすめします。
369 名前:nobodyさん [2007/10/14(日) 22:15:05 ID:9kSbwdFL] >>361 なるほど 当方MacなのでParallelsのWinに「Sleipnir」入れてみましたが、 プラグインかなにかなんでしょうね 有り難うございました
370 名前:nobodyさん mailto:sage [2007/10/15(月) 00:22:13 ID:???] >>367 最近はこういうのが流行みたいです Web::Scraper search.cpan.org/~miyagawa/Web-Scraper/
371 名前:nobodyさん mailto:sage [2007/10/15(月) 00:43:20 ID:???] >>369 ぐぐればトップに出てくるだろうに
372 名前:nobodyさん mailto:sage [2007/10/15(月) 00:44:21 ID:???] ごめん、371は勘違い
373 名前:nobodyさん mailto:sage [2007/10/15(月) 01:06:24 ID:???] nikonikoにもScraperネタある。 www.nicovideo.jp/watch/sm1237738
374 名前:nobodyさん mailto:sage [2007/10/15(月) 03:46:48 ID:???] Web::Scraper が重いんだけど、どうにかならないの?
375 名前:nobodyさん mailto:sage [2007/10/15(月) 05:35:56 ID:???] 不満は作者に直接言う 改善案を出す パッチ送る
376 名前:nobodyさん mailto:sage [2007/10/15(月) 12:15:17 ID:???] 男は黙って正規表現一択 scrAPIは女の様な軟弱者が使う物
377 名前:nobodyさん mailto:sage [2007/10/15(月) 14:20:07 ID:???] youtubeに上げなおしてくれ。 ニコニコ垢なんかもってないし使いたくも無い。
378 名前:nobodyさん mailto:sage [2007/10/15(月) 21:15:14 ID:???] カレンダーを作りたいと思っているんですが、ライブラリはありませんか?
379 名前:nobodyさん mailto:sage [2007/10/15(月) 22:05:51 ID:???] >>378 search.cpan.org/search?m=all&q=Cal&n=100
380 名前:nobodyさん mailto:sage [2007/10/15(月) 23:41:31 ID:???] 処理の進捗状況を表示する一番よい方法は何ですか? 一定期間ごとにファイルに書き込むことしか思い付きません。
381 名前:nobodyさん mailto:sage [2007/10/15(月) 23:43:46 ID:???] >>380 それでいいんじゃねーの 一番簡単だし
382 名前:nobodyさん mailto:sage [2007/10/16(火) 06:05:03 ID:???] $| = 1; って何かいいことあるの?
383 名前:nobodyさん mailto:sage [2007/10/16(火) 08:47:04 ID:???] 意味をわかった上で言ってるのか? それとも意味を聞いてるのか? とりあえず「perl コマンドバッファリング」あたりでググれ。
384 名前:nobodyさん mailto:age [2007/10/16(火) 10:56:39 ID:???] 自分が使ってるサーバーがLWPが使えないようなので、socketで別サーバーのファイル内容を拾って展開させようとしたんですが、 ローカルではちゃんと動くのにサーバーにアップすると凍ってしまいます。 リストにある複数のブログのrss取得して最新のブログ3件の記事表示、みたいなのがやりたいんですが、 サーバーがLWPの許可してないと難しいですか? なにかいいやり方あったらお教えください。
385 名前:nobodyさん mailto:sage [2007/10/16(火) 11:11:22 ID:???] fpingの出力値の数字だけを抜き出すプログラムを作りたいのですが、うまくできません。 input.txtという名前に下のようなfpingの出力を入れ www.yahoo.co.jp:[0], 84 bytes, 18.1 ms (18.1 avg, 0% loss) www.yahoo.co.jp:[1], 84 bytes, 23.2 ms (20.7 avg, 0% loss) 18.1 23.2と出力したいです。 bytes,より前を切り取り、ms ( も切り取ろうとして $fping = "./input.txt"; open(A,"$fping")|| die "Can not open file"; @b = <A>; close (A); foreach $c(@b){ $c = grep(/(.*?)bytes, (\d{1,4}\.\d{1,2} ms) \(/,$c); } foreach $c(@b){ print "$c\n"; } というプログラムを作ったんですが、うまくいきません。 どこを直せばいいでしょうか?
386 名前:nobodyさん mailto:age [2007/10/16(火) 11:26:03 ID:???] >>385 $c =~ /bytes, (.*?) ms/; $c = $1; じゃだめなん?
387 名前:385 mailto:sage [2007/10/16(火) 12:33:21 ID:???] >>386 レス遅れてすいません。 できました! ありがとうございます!! 助かりました、ホントありがとうございます!!!
388 名前:nobodyさん mailto:sage [2007/10/16(火) 12:40:52 ID:???] >>385 出遅れた…。 perl -lne "print /(?<=bytes, )(.+?)(?= ms)/" input.txt
389 名前:nobodyさん mailto:sage [2007/10/16(火) 13:22:24 ID:???] >>384 どこの鯖使ってるか知らんが、LWP使えないようにしてるってことは FWでoutboundが遮断されてる可能性が高く、だとすればどうしようもない
390 名前:nobodyさん [2007/10/17(水) 00:29:17 ID:7VxwUF8E] SNSサイトにperlを使って接続って無理?
391 名前:nobodyさん mailto:sage [2007/10/17(水) 00:37:06 ID:???] 日本語でOK
392 名前:nobodyさん mailto:sage [2007/10/17(水) 01:05:09 ID:???] >>390 WWW::Mixi WWW::Myspace
393 名前:nobodyさん [2007/10/17(水) 08:03:38 ID:BedUMdjt] おはようございます。 下のような流れのcgiで 複数のクライアントから接続された場合 変数$gHogeはクライアント毎に保たれますか? それとも上書きされちゃいますか? my $gHoge = ""; #クライアントからポストされた値が入る。 〜$gHogeを扱う長めの処理が続く。
394 名前:nobodyさん mailto:sage [2007/10/17(水) 08:36:36 ID:???] >>393 実行される度にプロセスが作られるから上書きなんてされない
395 名前:393 mailto:sage [2007/10/17(水) 09:01:24 ID:???] >>394 そうですか。期待通りの結果でよかったです。 朝早くからありがとうございました。
396 名前:nobodyさん [2007/10/17(水) 23:05:49 ID:7VxwUF8E] >>392 ??? わからないので要望スレに逝ってきますorz
397 名前:nobodyさん mailto:sage [2007/10/18(木) 00:34:50 ID:???] >>396 ググることもできないのか
398 名前:nobodyさん mailto:sage [2007/10/18(木) 01:48:20 ID:???] モジュールがわからなくてSNSに接続しようとは・・・
399 名前:バターズ mailto:sage [2007/10/18(木) 22:40:14 ID:???] コロンが二つならんでいるのは ダブルコロンって言うんだよ
400 名前:nobodyさん [2007/10/20(土) 00:37:33 ID:Ja84SJeF] Location ではtargetが指定できませんが、呼び出したときの 属性は生きるってどこかに書いてありました どういうことでしょう ssiのhtmlファイルの中に書いた、iframeのCGIまたは#exec cgiで クッキー認証できなかったら全画面を再認証画面に飛ばしたいのですが、 やはり無理でしょうか?
401 名前:nobodyさん [2007/10/20(土) 05:18:19 ID:VLTga6QI] print <<EOM; <a href="hoge.html">hoge</a> EOM と、 print "<a href=\"hoge.html\">hoge</a>\n"; ではどちらの方が実行速度が速いですか?
402 名前:nobodyさん mailto:sage [2007/10/20(土) 06:50:46 ID:???] >>401 ほぼ同じ。 boobar.hp.infoseek.co.jp/bench/print.txt
403 名前:nobodyさん [2007/10/20(土) 07:40:43 ID:VLTga6QI] >>402 さん、ありがとうございます。 大変参考になりました。
404 名前:nobodyさん [2007/10/20(土) 07:47:37 ID:x+Q9ulv4] おはようございます。 以下のスクリプトについて質問です。 outフォルダ内の.txtファイル全てに対して ある作業をするというスクリプトなんですが、 ファイルオープンのところでそんなファイルはないから 開けないというエラーが出力されます。 例:hoge.txtがある場合 OPEN ./out/hoge.txt file: No such file or directory at check line 22. どこが間違ってるか教えてください。お願いします。 OSはWindowsXPです。 my @directories_to_search = ('./out/'); #対象のフォルダ find(\&wanted, @directories_to_search); sub wanted{ my $filePath = $File::Find::name; my $find = index( $filePath, ".txt" ); #.txtを対象 unless ($find >= 0) { return 1; } open FH_READ, "<$filePath" or die "OPEN $filePath file: $!"; #ある作業をする。 close FH_READ; }
405 名前:nobodyさん mailto:sage [2007/10/20(土) 08:21:11 ID:???] >>404 22行目ってホントにopen文の所か?
406 名前:404 mailto:sage [2007/10/20(土) 08:33:09 ID:???] >>405 え?open文のor dieのエラーメッセージが出力されているから open文でエラーが発生していると思うんですが・・・
407 名前:nobodyさん mailto:sage [2007/10/20(土) 10:42:05 ID:???] 読んで字の如しとしか。 まさかmod_perlじゃないよな?
408 名前:nobodyさん mailto:sage [2007/10/20(土) 10:55:56 ID:???] >>404 openに渡すのは「$filePath」じゃなくて「$_」 File::Findの解説ちゃんと読め
409 名前:半角全角が混在する行が一定の文字数を超えたら折り返すようにしたい [2007/10/20(土) 14:21:49 ID:g/E6yd0f] メールフォームを作っています。同マシン上のsendmailを使って送るものです。 送信するメールの本文において、半角全角が混在する行の文字数を数え、 一定の文字数(例えば半角72文字、全角36文字)を超えた行だけを 強制的に折り返したいと考えています。 どのようにするのがよいでしょうか? lengthはバイト数を返す関数なので、 全角文字の真ん中で折り返されると困ることになると考えてます。 もしかすると、長い行はsendmail側が自動で折り返してくれたりするのでしょうか? それとも、何かほかの関数で簡単に数えたりできるのでしょうか? なお、カスタマイズの自由度を考えて自作しているので、 「どこそこのメールフォームを使え」というのは勘弁してください。 以上、よろしくお願いします。
410 名前:nobodyさん [2007/10/20(土) 14:28:07 ID:o1wAy6B9] eval ($hoge); の実行した値を変数に入れるにはどうしたらいいでしょうか? $@ だと、evalでのエラーの値が入る でも、実行値は...? お願いします。
411 名前:nobodyさん mailto:sage [2007/10/20(土) 14:37:23 ID:???] >>410 $result = eval($hoge); じゃダメなん?($resultに実行結果、$@にエラーメッセージ) 参考 ttp://www.tohoho-web.com/wwwperl2.htm#eval
412 名前:nobodyさん [2007/10/20(土) 14:55:48 ID:o1wAy6B9] >>411 その通り!ありがとう。 短い$hogeだと関数が成功した1しか返さないことがあるようでアレ違うわと思っていました。 >>409 ちょっと離れるので投げっぱなしになってしまいそうだけど 解答してくれる人が現れる間に考えていました use utf8; use Encode; $str = ' eval ($hoge); の実行した値を変数に入れるにはどうしたらいいでしょうか? $@ だと、evalでのエラーの値が入る でも、実行値は...? お願いします。 '; @stream = split(/\n/,$str); #最初に渡された文字列を 改行 を区切りとして @stream に配列として読み込んだ map{ s{(.......)}{$1\n}g } @stream; #”8文字”単位で改行を入れてる map{print encode(sjis,$_)}@stream; #各行を出力するときにsjisに変換してる とか、なかんじでどうよ? ただし1バイト文字の扱いがなんか変。 *たぶんutf8でけつまずいてるかんじ。
413 名前:nobodyさん mailto:sage [2007/10/20(土) 16:08:12 ID:???] >>409 jcode.plかJcode.pmにjfoldってなかったっけ?
414 名前:409 mailto:sage [2007/10/20(土) 17:45:16 ID:???] >>413 これです。こういう機能がほしかったんです。 jcode.plにはありませんでしたが、Jcode.pmにはありました。 これまで使っていたのがjcode.plだったのでが、 MIMEヘッダの機能も強化されているようなので、Jcode.pmに乗り換えようと思います。 どうもありがとうございました。
415 名前:nobodyさん mailto:sage [2007/10/20(土) 18:24:36 ID:???] いいかげんにEncode使い方覚えろよ
416 名前:nobodyさん mailto:sage [2007/10/20(土) 19:12:39 ID:???] >>415 じゃ、Encode.pmを使って折り返す方法を書いてあげれば?
417 名前:nobodyさん mailto:sage [2007/10/20(土) 19:44:36 ID:???] Encode::decodeしてlengthでカウントしてみろよ
418 名前:nobodyさん mailto:sage [2007/10/20(土) 20:12:44 ID:???] 文字コードわかってんなら正規表現で簡単にできることだろ
419 名前:nobodyさん mailto:sage [2007/10/23(火) 05:26:38 ID:???] 全部正規表現でやるのは重そうだな。
420 名前:nobodyさん mailto:sage [2007/10/23(火) 14:21:34 ID:???] 正規表現で解決するならEncode要らんがな。
421 名前:nobodyさん mailto:sage [2007/10/23(火) 15:27:18 ID:???] Perlのテキスト処理で質問させてください。 UTF8な日本語テキストの半角カナを全角にしたいと思ってEncode::JP::H2Zを使おうと思いました。 しかし、一部の文字(〜など)がEUCに変換する段階で?に変換されてしまい、困ってしまいました。 とりあえず、コードポイントにフォールバックできることがわかったので、 以下のように書いてその場をしのぎましたが、コードポイントを検索して文字に置換するという 作業が入ってしまい(しかも無駄に複雑)、どうもしっくりきません。 もっと簡単にする方法はありますか? $text = encode("eucjp", $text, Encode::FB_PERLQQ); # EUCに変換 Encode::JP::H2Z::h2z(\$text); # 全角変換 $text = decode("eucjp", $text); $text =~ s/\\x\{([0-9A-Fa-f]+)\}/pack("U*", hex($1))/eg; # コードポイントを文字に
422 名前:nobodyさん mailto:sage [2007/10/23(火) 17:42:25 ID:???] >>421 #!/usr/local/bin/perl -w use strict; use Encode qw(from_to); use Encode::JP::H2Z; my $text = 'このファイルはUTF-8で〜半角カナ混じりの文字列'; from_to($text, utf8 => 'cp932'); from_to($text, shiftjis => 'euc-jp'); Encode::JP::H2Z::h2z(\$text); print $text; __END__ 別解。 use Unicode::Japanese qw(unijp); print unijp($text)->h2zKana->euc;
423 名前:421 mailto:sage [2007/10/23(火) 20:32:44 ID:???] >>422 ありがとうございます。その変換法で化けなくなりました。 後学のためお聞きしますが、Encodeではutf8を直接EUCにマップできないのでしょうか。 SJISを経由するのはわかるのですが、cp932をshiftjisに読み替えるなど、 トリッキーなことをやっていますね。 機種依存文字(@など)がある場合もそうですが、utf8とEUCの変換法は どうもよくわからないです。 機種依存文字とか、どうやってEUCに変換するんでしょうか
424 名前:nobodyさん mailto:sage [2007/10/23(火) 22:43:56 ID:???] 「よくわからない」のは、EUC-JPとCP51932の関係じゃないのかな。 ttp://search.cpan.org/dist/Encode-EUCJPMS/
425 名前:nobodyさん mailto:sage [2007/10/24(水) 01:04:04 ID:???] 暗号化関連の質問です メールフォームを使っててブラウザとサーバの間はSSLで暗号化してます でもサーバからsendmailで送信するメールも暗号化してないと意味ないですよね? Perlでどうやってやってます?S/MIMEかPGPが使えるの?(´・ω・`)
426 名前:nobodyさん mailto:sage [2007/10/24(水) 01:05:27 ID:???] そもそもメールを飛ばさないという選択肢を検討すべきではないか
427 名前:421 mailto:sage [2007/10/24(水) 02:01:47 ID:???] >>424 なるほど、ぐぐってみてわかりました。 EncodeーEUCJPMSでcp51932も使えるようになるんですね。 標準のEncodeになんで実装しないんだろ、これ。
428 名前:nobodyさん mailto:sage [2007/10/24(水) 06:10:09 ID:???] >>425 search.cpan.org/search?m=all&q=PGP&n=100 search.cpan.org/search?m=all&q=S%2FMIME&n=100 求められる安全度、対象ユーザのITリテラシ、かけられるコスト 等を検討すると、暗号化メールの使えるシチュエーションは かなり限られてそうだ。金融機関やNSPだと大抵郵送だな。
429 名前:nobodyさん mailto:sage [2007/10/25(木) 16:41:10 ID:???] スペースは or に変換するが、クォートにかこまれたスペースは変換しない。 これの実装がうまくいきません。 例えば tenis ball は tenis or ball に変換するけど 'tenis ball' はそのままっていうのはなんとか出来たんですが、 'tenis ball' 'base ball' のときは 'tenis ball' or 'base ball' にするのがどうしても出来ません。 orを入れたい場所もクォートに囲まれてると判断されてしまうのです。 どなたか助けてください。
430 名前:nobodyさん mailto:sage [2007/10/25(木) 17:03:22 ID:???] >>429 my @list = ( q{tenis ball}, q{'tenis ball'}, q{'tenis ball' 'base ball'}, ) ; for my $line ( @list ){ print join ' or ', map{ /'/ ? $_ : split /\s+/, $_ } split /\s+(?=')/, $line ; print qq{\n} ; }
431 名前:nobodyさん mailto:sage [2007/10/26(金) 05:03:54 ID:???] foreach(@list){ my @token = m/('[\w\s]*'|\w+)(?:\s+|$)/g; print join (' or ', @token), "\n"; }
432 名前:429 mailto:sage [2007/10/26(金) 15:02:18 ID:???] >>430 すみません、できるだけワードは固定してない方がいいのですが・・・うまく動きませんでした。 >>431 おぉ、なんかうまく動きそうです。 でも、クォートの部分を除外して配列に納めたいのですが、どうしたらいいのでしょうか?
433 名前:nobodyさん mailto:sage [2007/10/26(金) 23:17:20 ID:???] >>432 430は全角文字(スペースも含め)を半角に変換してもダメか? それと「クォートの部分を除外」って意味が分らん。単に クォートを削除したいだけなら、そのぐらいは自力で考えてみたら?
434 名前:nobodyさん mailto:sage [2007/10/27(土) 10:01:02 ID:???] Encode::JP::H2Z ってなんでeucjpの糞使用なの? ユニコードのまま渡せて処理出来ればいいのに。
435 名前:nobodyさん mailto:sage [2007/10/27(土) 11:34:06 ID:???] >434 そういうことはdankogaiに直接文句つけて来い
436 名前:nobodyさん mailto:sage [2007/10/27(土) 13:36:03 ID:???] >434 じゃあお前さんがそういうの作れば?
437 名前:nobodyさん mailto:sage [2007/10/27(土) 16:43:19 ID:???] >>434 Jcode::H2Z (Jcode.pm のサブモジュール) そのままだから。
438 名前:nobodyさん mailto:sage [2007/10/27(土) 18:53:28 ID:???] utf8もページからフォームを入力して送信させると、 「〜」の文字だけがなぜか正常に送信されないのですが、なぜでしょうか?
439 名前:nobodyさん [2007/10/27(土) 22:19:08 ID:jIrqvOa/] return +{}; という記述の意味を教えて下さい 空ハッシュを返すという事でしょうか?
440 名前:nobodyさん mailto:sage [2007/10/27(土) 22:50:14 ID:???] >>438 何を以て「正常に送信されない」と判断したのか。 ja.wikipedia.org/wiki/%E6%B3%A2%E3%83%80%E3%83%83%E3%82%B7%E3%83%A5 euc.jp/i18n/ucsnote.ja.html www.asahi-net.or.jp/~hc3j-tkg/unicode/ >>439 perldoc.jp/docs/perl/5.8.8/perlop.pod > 単項演算子の "+" は、たとえ文字列に対して用いられた場合にも、 > 何もしません。関数名に続けて括弧付きの式を書く場合に、関数の > 引数リストと解釈されないようにするために用いることができます。
441 名前:nobodyさん [2007/10/27(土) 23:21:31 ID:jIrqvOa/] >>440 ありがとうございます、単項演算子についてはわかったのですが とあるCPANモジュールのコードで return +{} unless $data; というコードがあったのですがこれを return {} unless $data; と書かずに単項演算子の+をつけるのは 何か意図があるのでしょうか 戻り値自体はどちらでも同じような気がするのですが、、
442 名前:nobodyさん mailto:sage [2007/10/28(日) 00:49:00 ID:???] ブロックとして解釈される場合があるんじゃね
443 名前:nobodyさん mailto:sage [2007/10/28(日) 04:52:46 ID:???] +{ } :無名ハッシュでコンパイル {; } :コードブロックでコンパイル
444 名前:nobodyさん mailto:sage [2007/10/28(日) 08:38:20 ID:???] www.nicovideo.jp/watch/sm1024453 Perlで予約語プログラミング
445 名前:nobodyさん mailto:sage [2007/10/28(日) 08:48:47 ID:???] www.nicovideo.jp/watch/sm1237738 Perl Programming: Web::Scraperモジュールの利用 ↑これ何やってるの?
446 名前:nobodyさん mailto:sage [2007/10/28(日) 08:54:29 ID:???] www.nicovideo.jp/watch/sm1233406 Perl Catalyst Programming (入門編) ↑これも何をやっているのか、 さっぱりわからんよ
447 名前:nobodyさん mailto:sage [2007/10/28(日) 09:22:22 ID:???] まぁプログラミングを動画で見てもわからんよなw
448 名前:nobodyさん mailto:sage [2007/10/28(日) 09:30:40 ID:???] そうか? この動画だけは「何をやろうとしてるか」だけは伝わるぞ ttp://www.youtube.com/watch?v=KyLqUf4cdwc
449 名前:nobodyさん mailto:sage [2007/10/28(日) 11:24:36 ID:???] >>448 Aho da...orz
450 名前:nobodyさん mailto:sage [2007/10/29(月) 02:42:49 ID:???] >>446 にある動画はなんかおかしいと思う。
451 名前:nobodyさん mailto:sage [2007/10/29(月) 11:17:19 ID:???] 質問させてください。 指定した文字が何回続いたかを取得したいのですがどうしたらいいですか? 例)この場合指定した文字は1です。 $a = '1111222'; $b = '1111136'; $aは4 $bは5 よろしくお願いします。
452 名前:nobodyさん mailto:sage [2007/10/29(月) 11:56:14 ID:???] $a='1111222';$i='1';($r)=($a=~m/($i{2,})/);print length $r 全角はシラネ
453 名前:nobodyさん mailto:sage [2007/10/29(月) 11:59:30 ID:???] $a = '1111222'; $c= 1; $n= length(($a=~/((?:\Q$c\E)+)/)[0])/length($c);
454 名前:nobodyさん mailto:sage [2007/10/29(月) 12:31:05 ID:???] perlは色んなやり方があって面白いね $a = '111111222'; $n = '1'; $count = length(($a =~ /($n+)/)[0]);
455 名前:nobodyさん mailto:sage [2007/10/29(月) 13:04:18 ID:???] >>451 $test_str = '111234111111'; $char = '1'; こういう場合は後半気にせず、まず見つけた連続の 3 でいいの?それとも、より長い連続の 6? 「はい、6 が得られるようにしたいんです」だと上に回答を書いた皆さんが優しくキレるかも。 あと、例なんだろうけど $a や $b は地雷踏むことがあるから気をつけてね。
456 名前:nobodyさん mailto:sage [2007/10/29(月) 13:25:31 ID:???] use strict; use warnings; test('1111222' => 1 ); test('1111222' => 2 ); test('111122211' => 1 ); test('111122211' => 1 , 1); test('1111136' => 1 ); sub test {printf "%s:%s:%s\n",$_[0],$_[1],_test(@_)} sub _test { local($a,$b); (sort {$b<=>$a} map {length($_)} ($_[0] =~ m{($_[1]+)}g) )[ $_[2] ? -1 : 0 ]; }
457 名前:nobodyさん mailto:sage [2007/10/29(月) 17:04:12 ID:???] my $i = '1' ; print +( length ) . qq{\n} for split /[^$i]+/ ,$a ;
458 名前:456 mailto:sage [2007/10/29(月) 19:24:03 ID:???] 見直したらgdgdだったので修正しとく sub _test { ( sort map length,$_[0] =~ /(${_[1]}{2,})/g )[$_[2] ? 0 : -1] }
459 名前:nobodyさん mailto:sage [2007/10/30(火) 23:38:44 ID:???] 一つのファイルで処理がたくさん書いてあって分岐させる時に、 例えば $mode = $cgi->param('mode'); というデータを受け取って、処理の場合わけをする場合どういう書き方がエレガントなんでしょうか? 現状は if ($mode eq 'post') { &post} elsif ($mode eq 'edit') { &edit;} elsif ($mode eq 'delete') { &delete} else { &error} こんな感じなのですが、それは初心者の書き方だって馬鹿にされました。 悔しいのでもっと効率的な方法があったら教えてください。
460 名前:JAPU ◆lVJAPUTeX. mailto:sage [2007/10/30(火) 23:52:20 ID:???] >>459 エレガントかは分からないけど、分岐がある程度多い場合はこんな書き方だとすっきり書けるかと。 %actions = (post => \&post, edit => \&edit, delete => \&delete); if(exists $actions{$mode}) { $actions{$mode}->(); } else { error(); } 数個程度なら if で分岐されちゃってもいいと思いますし、実際そうしています。
461 名前:nobodyさん mailto:sage [2007/10/30(火) 23:58:03 ID:???] >>459 それでいいんじゃね? 各サブルーチンに戻り値があるなら「三項演算子」って手もあるし、 以下の様なやり方もあるけど、普通に書いてメンテ出来るものならば バカにされても放置しとけば? my %hash = ( post => sub { 1 } , # &post の内容を書く edit => sub { 2 }, # &edit の内容 delete => sub { 3 }, # &delete の内容 ) ; print $hash{'edit'}->() || q{error} ; #q{error} には&error あたりを、、、 ソース全体を見たら綺麗な書き方があるかもしれんが、 それに関しては情報不足。
462 名前:nobodyさん mailto:sage [2007/10/30(火) 23:59:04 ID:???] ああ、丸かぶりだorz...
463 名前:nobodyさん mailto:sage [2007/10/31(水) 00:10:35 ID:???] せめて、CGI::Applicationくらい使っとけって話なんじゃ。 if文分岐も分かりやすいと思うが、へたに小細工するとますますへたっぴに見える。
464 名前:nobodyさん mailto:sage [2007/10/31(水) 12:11:23 ID:???] 三項演算子ってタマに見かけるけど読みづらいんだよな。 使いたくない書き方No1かも。
465 名前:nobodyさん mailto:sage [2007/10/31(水) 13:29:29 ID:???] $expr1 ? $expr2 : $expr3 ? $expr4 : $expr5 ? $expr6 : $expr7 ; 書き方か頭が悪いんだろ
466 名前:至急 mailto:cgisupport@xxne.jp [2007/10/31(水) 15:17:23 ID:???] CGIを自宅出張でサポートしてくれる方募集します。 CGIに詳しく都内に来れる方であれば可能 一日日払い即金で払います。 詳細はメール下さい。
467 名前:nobodyさん mailto:sage [2007/10/31(水) 15:47:41 ID:???] >>459 エレガントかしらないけどこんなパッケージ作ってる。 (不要箇所削ったのでそのまま動くか不明) package Local::Base; use strict; use warnings; our $DEBUG = 0; sub class {ref$_[0]||$_[0]||__PACKAGE__} sub new {(bless {} => class( shift() ))->init(@_)} sub mode :method {shift->param('mode',@_)} sub method_name :method {shift->{method_name}->{ shift() }} sub default_method :method {die('不正なmodeを受け取りました')} sub init :method { my $self = shift; my %param = @_; $self->{method_name} = $param{method_name} || {}; return $self->run_method( $self->mode , @_ ); } sub run_method :method { my $self = shift; my $method = $self->method_name( shift ); $method = 'default_method' unless $method && $self->can( $method ); return $self->$method(@_); } 1;
468 名前:nobodyさん mailto:sage [2007/10/31(水) 17:36:51 ID:???] >>467 外部からinitとか呼ばれちゃわない?
469 名前:nobodyさん mailto:sage [2007/10/31(水) 19:51:49 ID:???] >>467 method_nameチェックしてるから大丈夫 使い方も書いたつもりだったんだけど書けてなかった。 #!/usr/bin/perl use strict; use warnings; use base qw(Local::Base); my $r = eval{ __PACKAGE__->new( method_name => { edit => 'edit', post => 'post' } ) } || $@; print CGI->header,$r,"\n" unless ref $r; ###################################################################### # editの動作を定義 sub edit :method { my $self = shift; print $self->header; print "EDITモード"; return $self; } 1;
470 名前:nobodyさん mailto:sage [2007/10/31(水) 20:11:48 ID:???] sub edit :method { この :method って何の意味だっけ perlsub見ても載ってないや 変数にも付けれた気がしたが
471 名前:nobodyさん mailto:sage [2007/10/31(水) 21:09:19 ID:???] perlsub に載ってるし、perldoc attributesすれば詳細分る(perl5.8.1)。 perl attributes でググれば日本語のサイトも沢山出る。 変数に付けられるのは 5.8系
472 名前:nobodyさん mailto:sage [2007/11/01(木) 01:06:18 ID:???] 実際、CGI::Applicationとか使うと効率的になるの? 自分でゴチャゴチャ作るよりも。使ってる人いる?
473 名前:nobodyさん mailto:sage [2007/11/01(木) 02:26:10 ID:???] CGI.pmで書くには複雑だけど、Catalystとかのフレームワーク持ち出すまでもないときには使える
474 名前:nobodyさん mailto:sage [2007/11/01(木) 10:48:57 ID:???] > CGI.pmで書くには複雑だけど、Catalystとかのフレームワーク持ち出すまでもないときには使える CGI::Application もフレームワークじゃないの?
475 名前:nobodyさん mailto:sage [2007/11/01(木) 17:27:41 ID:???] >>470 :methodは組み込みのattribute Attribute::Handlers使うと自作のattributeも作れる。 …がいつ仕様が定まってなくて変更があるかもってどっかで読んだ気がする。 >>474 ・自分しかいじらない ・少人数で知識の共有が容易 ・マニュアルが整っている のどれかなら自作のフレームワークの方が慣れてるだろうし開発効率いいんじゃないかな? フレームワーク自体のメンテナンスが(出来る|しなきゃいけない)のはデメリットか? 既製のフレームワーク使うのは ・他の人と知識の共有しやすい ・ドキュメントがある/(第3者も使ってるので)ノウハウが検索しやすい ・フレームワーク自身のメンテナンスを(あまり)しなくていい ってとこかな?
476 名前:nobodyさん mailto:sage [2007/11/01(木) 18:07:59 ID:???] >>475 ???
477 名前:nobodyさん mailto:sage [2007/11/02(金) 11:22:36 ID:???] /public_html/test/log.txt を、UTF8→SJISに変換して、 別名で保存するにはどうすればいいでしょうか Perl 5.8.8なのでuse Encode;を利用する、読み取り専用で1行ずつ変換処理する あたりまでは勉強しました。スマートな方法よろしく御教示おねがいします
478 名前:nobodyさん mailto:sage [2007/11/02(金) 13:22:56 ID:???] ログをShift_JISに変換ではなく、表示する時にsjisに返還して表示するようにして、 データはutf-8のままのほうがよくないかな。
479 名前:nobodyさん mailto:sage [2007/11/02(金) 13:29:46 ID:???] >>477 まずは自分で書いた糞コード晒すのが先じゃね?
480 名前:nobodyさん mailto:sage [2007/11/02(金) 14:01:12 ID:???] >>477 おまえさんの「スマート」の基準が判らんのだが、 Encodeで何か不足でもあったのか?
481 名前:nobodyさん mailto:sage [2007/11/02(金) 16:43:20 ID:???] nkf -s log.txt > log.sjis.txt
482 名前:nobodyさん mailto:sage [2007/11/02(金) 17:17:33 ID:???] >>481 すげー!、シェルスクリプトですよね? sshができない場合はこんな感じで利用すればいいのかな system("nkf -s log.txt > log.sjis.txt"); 1つ気になるのがjcode.plなど元の文字コードを指定するのがあると思うのですが、 &jcode::convert(\$_, 'sjis' ,'utf8'); nkfでは気にしなくても自動判別完璧なのでしょうか?
483 名前:nobodyさん mailto:sage [2007/11/02(金) 17:34:58 ID:???] もはやPerlに何の関係もない
484 名前:nobodyさん mailto:sage [2007/11/02(金) 17:51:47 ID:???] >>477 use Perl6::Slurp; use Jcode; $c = slurp "log.txt"; Jcode::convert(\$c, "sjis", "utf8"); open($fh, ">", "log.sjis.txt"); print $fh $c; >>482 jcode, Jcode, nkfは、判別できる場合は判別してくれる。
485 名前:nobodyさん mailto:sage [2007/11/02(金) 22:18:35 ID:???] >>484 頭足りてないのは理解した。
486 名前:nobodyさん mailto:sage [2007/11/05(月) 07:24:22 ID:???] gethostbynameについての質問です。 コマンドプロンプトだとnslookup -> set type=*** UNIXならhost -t *** でクエリタイプを設定できるんですけど、PERLの場合はどうやるのでしょうか。
487 名前:nobodyさん mailto:sage [2007/11/05(月) 10:55:44 ID:???] >>486 search.cpan.org/~olaf/Net-DNS-0.61/lib/Net/DNS.pm#Find_the_nameservers_for_a_domain.
488 名前:nobodyさん [2007/11/05(月) 11:20:15 ID:6nXAnQ+n] ファイルのオープンでエラーになります。 open(FILE,">".$workFname) or die "Cannot Output File: "; あらかじめファイルを持たせておいて、書き込み権限を与えておけば 成功しますが、新規にファイルを作成できません。 どうすればいいのでしょうか。
489 名前:nobodyさん mailto:sage [2007/11/05(月) 12:21:09 ID:???] ディレクトリのパーミッションかな
490 名前:nobodyさん mailto:sage [2007/11/05(月) 13:05:21 ID:???] >>489 解決しました、ありがとうございます。
491 名前:nobodyさん mailto:sage [2007/11/05(月) 13:19:35 ID:???] die するときに $! も含めるべき。
492 名前:nobodyさん mailto:sage [2007/11/05(月) 13:22:45 ID:???] 自分の環境では、相対パスではエラーになるので、絶対パスに書き換えてます。 できれば相対パスのままで動くようにしたいです。どうすれば解決できるか分かる 方はおられませんか。まあ、あまり解決策が複雑なら、とりあえずあきらめてこの ままにしておくつもりですが。
493 名前:nobodyさん mailto:sage [2007/11/05(月) 14:36:06 ID:???] >>492 まず「何を」相対パスにしようとしているのかくらい書こうぜ。 あと「自分の環境」は書かなきゃ誰にも伝わらない。
494 名前:nobodyさん [2007/11/07(水) 09:25:24 ID:R3XG8Srf] Perlで関数の引数に二次元配列を渡すのは無理ですか。
495 名前:nobodyさん mailto:sage [2007/11/07(水) 09:32:37 ID:???] >>494 ヒント:リファレンス
496 名前:nobodyさん [2007/11/07(水) 11:46:06 ID:R3XG8Srf] 次のソースのsub kansuのforeachの行は何と書けば正しく動きますか #!perl/bin/perl use strict; sub kansu{ my $ref1 = shift; my $value1; foreach $value1($$ref1) { print $value1 . "\n"; } } sub main{ my @databox1 = (13,1,6,3,9,8); my $ref1 = \@databox1; usort_kansu(@databox1); } main();
497 名前:nobodyさん mailto:sage [2007/11/07(水) 11:47:42 ID:???] 誤: usort_kansu(@databox1); 正: kansu(@databox1);
498 名前:nobodyさん mailto:sage [2007/11/07(水) 12:36:16 ID:???] >>496 「言語的意味で」正しく挙動させるには foreach $value1($ref1) { (多分)あなたの望んだ挙動にするには ソースの殆どに手を入れる必要がある。 ∴ 本読んでからどうしても分らんかったら 質問し直せ
499 名前:nobodyさん mailto:sage [2007/11/07(水) 14:24:36 ID:???] >>496-498 #!perl/bin/perl -w use strict; sub kansu { my $ref1 = shift; # my $value1; foreach my $value1 (@$ref1) { print $value1 . "\n"; } } sub main { my @databox1 = (13,1,6,3,9,8); my $ref1 = \@databox1; kansu($ref1); } main();
500 名前:nobodyさん [2007/11/07(水) 15:22:14 ID:vLJSXT0R] コーディングじゃないのですが該当スレが見当たらず、新規スレにするような質問でもないと思いこちらに質問します。 .qmailからperlスクリプトを呼び出しているのですが、その場合エラーログを取るにはどうしたらよいのでしょうか? 不正終了しているようなのですが、原因がつかめません。
501 名前:nobodyさん mailto:sage [2007/11/07(水) 15:43:21 ID:???] eval { require スクリプト; }; if ($@) { open(LOG, ">>/path/to/ログファイル名") or die; print LOG "WARNING: $@"; close(LOG); } こういうスクリプトをqmailから呼び出せばどーよ >499 forearch行を書き換える条件だからforearch my $value (@_){ って書いて欲しかったのかと・・
502 名前:501 mailto:sage [2007/11/07(水) 15:59:10 ID:???] foreach $value1($ref1,@_) { こうか
503 名前:500 mailto:sage [2007/11/07(水) 16:13:30 ID:???] >>501 ありがとうございます。 試してみます
504 名前:nobodyさん mailto:sage [2007/11/07(水) 18:20:14 ID:???] STDERRに吐いた文字はqmailのログにのこるでしょ? ログが見えないならプログラムを置くべきではないと思う。
505 名前:nobodyさん mailto:sage [2007/11/07(水) 18:46:18 ID:???] >>504 に同意だけど、 とりあえず、STDERRをファイルにでもリダイレクトすればどうなん?
506 名前:500 mailto:sage [2007/11/07(水) 19:59:45 ID:???] >>504 qmailのログとはmaillogでしょうか? スクリプトからは何もログを吐いていないんです。 sudoでapache権限で実行してるからログ吐かないのかな。
507 名前:nobodyさん mailto:sage [2007/11/07(水) 20:05:11 ID:???] |/path/to/script.pl >> /path/to/error.log 2>&1
508 名前:500 mailto:sage [2007/11/07(水) 20:13:46 ID:???] >>507 ありがとうございます。 .qmailでもログ指定しないといけないんですね。
509 名前:nobodyさん mailto:sage [2007/11/07(水) 21:32:38 ID:???] >>500 何かとんでもない設定でqmail動かして無いか?
510 名前:500 mailto:sage [2007/11/07(水) 22:29:30 ID:???] >>509 いえ。 .qmail内でperlのみsudoしてapache権限で動かしてます。 qmailはvpopmail権限で動かしてますよ。 >>507 さんでログ取れました。m(__)m
511 名前:nobodyさん mailto:sage [2007/11/09(金) 15:33:58 ID:???] UTF-8でperlを書きたいのですが、文字コードをperlにどのように知らせればよいのでしょうか?
512 名前:nobodyさん mailto:sage [2007/11/09(金) 15:47:46 ID:???] >>511 plagger のソース読むといいよ!
513 名前:nobodyさん mailto:sage [2007/11/09(金) 17:28:52 ID:???] >>512 それ無理に流行らそうとしなくていいよ
514 名前:nobodyさん mailto:sage [2007/11/09(金) 17:49:37 ID:???] tokuhirom自重
515 名前:nobodyさん mailto:sage [2007/11/09(金) 18:08:33 ID:???] Perl死んじゃうん?
516 名前:nobodyさん mailto:sage [2007/11/09(金) 18:57:53 ID:???] (・∀・)ニヤニヤ
517 名前:JAPU ◆lVJAPUTeX. mailto:sage [2007/11/09(金) 18:59:46 ID:???] >>511 use utf8;
518 名前:nobodyさん [2007/11/09(金) 19:09:09 ID:8S2oyKnm] >511 use dan; で解決するよ。
519 名前:nobodyさん mailto:sage [2007/11/09(金) 19:26:50 ID:???] tokuhirom の直近の発言をコピペすることによりスレを荒らす tokuhacks.
520 名前:nobodyさん mailto:sage [2007/11/09(金) 21:31:54 ID:???] plaggerのソース読めって言ってるやつのほとんどはplaggerのソースが読めない
521 名前:nobodyさん mailto:sage [2007/11/09(金) 22:28:46 ID:???] コード解説読めってならともかくコード読ませたってしょうがないだろ。Perlなんだから
522 名前:nobodyさん [2007/11/09(金) 23:35:40 ID:8S2oyKnm] tokuhiromのソース読めって言ってるやつのほとんどはtokuhiromのソースが読めない
523 名前:nobodyさん mailto:sage [2007/11/09(金) 23:39:07 ID:???] プラガー(笑)
524 名前:nobodyさん [2007/11/10(土) 10:49:28 ID:Z9OcedPC] web上の圧縮ファイル(.lzh)をダウンロードして保存、 さらにその圧縮ファイルを解凍するスクリプトを作りたいです。 例えば、LWP::Simpleを使った場合 my $dat = get('hoge.com/071110.lzh '); の後はどう処理していけばいいでしょうか?
525 名前:nobodyさん mailto:sage [2007/11/10(土) 11:02:39 ID:???] > の後はどう処理していけばいいでしょうか? lha 書庫を解凍する処理を行えばよい。
526 名前:nobodyさん mailto:sage [2007/11/10(土) 11:03:28 ID:???] >>524 はい。 www.google.co.jp/search?q=lzh+%E8%A7%A3%E5%87%8D+perl&ie=utf-8&oe=utf-8
527 名前:nobodyさん mailto:sage [2007/11/11(日) 02:16:45 ID:???] 2chみたいに携帯から固有のIDを作りたいんですが どうすればいいんでしょうか。
528 名前:nobodyさん mailto:sage [2007/11/11(日) 07:14:50 ID:???] >>527 i-mode:UTN EZweb:HTTP_X_UP_SUBNO Y!:UA
529 名前:nobodyさん [2007/11/11(日) 14:32:10 ID:4iiY3aOI] 正規表現について質問です。 urlからファイル名だけを取り出したいです。 例えば、$urlという変数に下の3つのurlがあった場合は hoge1.html, hoge2.html, hoge3.htmlを取り出したいです。 localhost/hoge1/hoge1.html localhost/hoge1/hoge11/hoge111/hoge2.html localhost/hoge2/hoge21/hoge3.html 下のように自分でやってみたのですが、localhostの前の/から取得してしまいます。 if( $url =~ /\/(.*\.html)$/ ){ print $1 . "\n"; } どうすればやりたい事ができますか? 教えてください、お願いします。
530 名前:nobodyさん mailto:sage [2007/11/11(日) 14:35:11 ID:???] ワイルドカードにすべき部分は「全ての文字」じゃない、「/を除いた全ての文字」だ。 あ、とりあえず ?xxx=hoge とかの引数は考えなくていいよね?
531 名前:529 mailto:sage [2007/11/11(日) 14:47:19 ID:???] >>530 レス有難うございます。 >ワイルドカードにすべき部分は「全ての文字」じゃない、「/を除いた全ての文字」だ。 なるほど。でも頭では理解できてもそれをコーディングするとなると・・・ .*の部分を弄ればいいのかなぁ。 >あ、とりあえず ?xxx=hoge とかの引数は考えなくていいよね? はい、このパターンは今回ありえないっす。
532 名前:529 mailto:sage [2007/11/11(日) 14:58:10 ID:???] 条件文を下のコーディングに変更したらできました。 if( $url =~ /\/([^\/]*\.lzh)$/ ){ 正規表現すげー >>530 さんアドバイスありがとうございました。
533 名前:nobodyさん mailto:sage [2007/11/12(月) 08:03:25 ID:???] .*?も覚えたらいいとおも
534 名前:nobodyさん [2007/11/12(月) 16:33:29 ID:XNEEDQVz] そのファイルがバイナリなのかテキスト(shift-jis,euc,utf8)なのかを判断するにはどのようにしたら良いのでしょうか? 最初、linuxの fileコマンドを使用していたのですが誤認識がよくあり使えません。 バイナリなのかテキストなのかだけ分かればいいのですがperlでそれを行うにはどのようにしたら良いのでしょうか?
535 名前:nobodyさん mailto:sage [2007/11/12(月) 16:42:39 ID:???] ファイルテスト演算子
536 名前:nobodyさん [2007/11/12(月) 18:17:28 ID:XNEEDQVz] >>535 有難う御座います。 試してみましたが、EUCだったり10文字程度のcp932などの場合に誤認識するようです。
537 名前:nobodyさん mailto:sage [2007/11/12(月) 18:33:52 ID:???] \0が含まれてればバイナリでいいんでないの それ以外だと各文字コードの仕様を調べて 全データがそれに矛盾してないか判断するしかないと思
538 名前:nobodyさん mailto:sage [2007/11/12(月) 18:39:12 ID:???] 正規表現使えばいいじゃない
539 名前:nobody [2007/11/13(火) 03:52:36 ID:fKqfq45H] ttp://www.jpopfan.co.jp/uranai/uranai000.htm 上のサイトのようなゲームをperlで作りたいと思っています。 htmlのみでも十分なゲームだとは思いますが、あえてCGIゲームとして作りたいです。 (学校の授業の自由課題であるので・・・) 一応以下のようにhtmlは作ってみました。 <html> 省略 <body> <h1>オーケストラ楽器別診断</h1> <p>次の質問にお答えください♪</p> <form action="/nussknac/cgi-bin/kadai.cgi" method="post"> <dl><dt>お名前</dt> <dd><input type="text" name="name" value=""></dd><br> <dt>Q1. あなたはプライドが高いほうですか?</dt> <dd><ul> <li><input type="radio" name="answer1" value="Yes" checked>Yes</li> <li><input type="radio" name="answer1" value="No">No</li> </ul></dd></dl> <p><input type="submit" name="send1" value="送信"><br></p> </form></body></html>
540 名前:nobody [2007/11/13(火) 03:57:04 ID:fKqfq45H] 539の続きです。 HTMLのフォームから情報をCGIに送り、最初の質問に対してYesならAの質問、NoならBの質問・・・というように 答えによって質問を分岐させるように作りたいです。 if文でひたすら分岐するというイメージはありますが、どうすれば、送信ボタンを押した時に次の質問ページにリンクさせる事ができるかが分かりません。 質問ページは一つ一つ作りたいです。 よろしくお願いします。
541 名前:nobodyさん mailto:sage [2007/11/13(火) 04:18:50 ID:???] そういうアルゴリズムも含めて課題になってるんじゃねーのか・・・まぁいいけどさ。 で、htmlはともかくどこまでperl書いたのよ。まさか1行も書かずに相談しにきてるわけじゃあるまい?
542 名前:nobodyさん mailto:sage [2007/11/13(火) 06:54:14 ID:???] 何日か前に別のスレでも見たけど、ここで聞いてて課題間に合うの?
543 名前:nobodyさん mailto:sage [2007/11/13(火) 08:58:39 ID:???] あみだくじでいいのか、選択によってポイントがたまってその結果で振り分けられるのか。 色々ロジックはあると思うけど、そこら辺はどうするのかな
544 名前:nobodyさん mailto:sage [2007/11/13(火) 09:17:32 ID:???] >542 提出日まで1〜2週間とかなら大丈夫じゃない? その昔、C言語の授業があって、その授業終了直後に提出したら怒られたことがあったなあ(笑) ごめん、確かに授業聞いてませんでした。
545 名前:nobodyさん mailto:sage [2007/11/13(火) 09:19:51 ID:???] あみだくじでいいなら、 <li><input type="radio" name="answer" value="Aの質問のURL" checked>Yes</li> <li><input type="radio" name="answer" value="Bの質問のURL">No</li> ってして、 print "Location: answerの値\n\n"; でリダイレクトさせていけばいいだけでは?
546 名前:nobodyさん mailto:sage [2007/11/13(火) 10:36:02 ID:???] HTMLでおk
547 名前:nobodyさん mailto:sage [2007/11/13(火) 11:10:10 ID:???] リンク元のURLに%??%??〜が含まれてる場合に、その文字をデコードしてUTF-8として表示しようとしています。 元の文字コードがUTF-8のときは問題なく表示できるのですが、 文字コードの判別を含めてやる場合どうやったらいいのでしょうか? Perlのバージョンは5ですが、プロバイダ(@nifty)のサーバーのため標準モジュールを使用できません。 いきなり変換が難しいならUTF-8か否かを判別できれば、 UTF-8の場合→直デコード UTF-8でない場合→直デコード→jcode.plで変換 でいいのかもと考えているのですが、UTF-8か否かの判別法がわかりません。 よろしくお願いします。
548 名前:nobodyさん [2007/11/13(火) 15:19:48 ID:lcS1D/Cp] 539です。 一応perlでは以下のように作りました。 #!/usr/local/bin/perl use CGI; $query = new CGI; $q1 = $query->param('answer1'); if ($q1 eq Yes) { open(F, ">>q2.html"); } else { open(F, ">>q3.html"); } でもこれだとエラーが出てしまいます。 どのように直せばいいでしょうか。 リンクのさせ方など教えて下さい。 課題提出は12月までです。 違うスレには書いていないので私ではないです。
549 名前:nobodyさん mailto:sage [2007/11/13(火) 15:34:47 ID:???] use constant Yes => 'Yes';
550 名前:nobodyさん mailto:sage [2007/11/13(火) 15:56:31 ID:???] 課題は自分でやれwww
551 名前:nobodyさん mailto:sage [2007/11/13(火) 16:29:42 ID:???] >>54 こんな感じはどうよ。適当に書いたからちゃんと動くかどうか知らんけど。 #!/usr/bin/perl use strict; use warnings; use CGI; use FileHandle; use File::Spec; my $cgi = CGI->new; my $fh = FileHandle->new; my $html_dir = '/path/to/html/dir'; my $output = $cgi->header( -type => 'text/html' ); my $fn = q{}; if ( $cgi->param('answer1') eq 'Yes' ) { $fn = 'q2.html'; } else { $fn = 'q3.html'; } $fh->open( File::Spec->catfile( $html_dir, 'q2.html' ) '<'); my $data = do { local $/; <$fh> }; $fh->close; $output .= $data; print $output;
552 名前:nobodyさん mailto:sage [2007/11/13(火) 16:30:23 ID:???] レス番ミスった。 誤 >>54 正 >>548
553 名前:nobodyさん mailto:sage [2007/11/13(火) 16:31:27 ID:???] さらに訂正。 誤 $fh->open( File::Spec->catfile( $html_dir, 'q2.html' ) '<'); 正 $fh->open( File::Spec->catfile( $html_dir, $fn ) '<');
554 名前:nobodyさん [2007/11/17(土) 14:33:33 ID:GlJQ98hk] oshiete.new-akiba.com/archives/2007/01/webarchivedlwarrick.html ここを見ながらコマンドプロンプトを操作しているのですが ダウンロードされる段階まで行っても Can't locate strict.pm in @INC (@INC contents: .) at C:\Program Files \warrick\warrick.pl line8. BEGIN failed--compilairion aborted at C:\Program Files \warrick\warrick.pl line8. と出ます。 意味もそもそも分からないのですが、解決方法教えてください
555 名前:nobodyさん mailto:sage [2007/11/17(土) 15:24:40 ID:???] >>554 エラーの原因は@INCが空になってるから。なんでそうなってるのかは知らん。 ActivePerlを入れ直してみたら? あとここはコーディングスレだからスレ違いだと思わなくもない。
556 名前:nobodyさん mailto:sage [2007/11/17(土) 20:14:46 ID:???] >>555 最新版入れてみたけど同じでした 質問スレいってきます
557 名前:nobodyさん mailto:sage [2007/11/17(土) 20:58:37 ID:???] >>にアンカを3つだけつけたいんだけど、これだと同じとこにリンクをかけてしまいます。 どうすればいいんでしょうか。 for($i=0;$i<3;$i++) { $str=~s/>>[0-9]{0,10}[-]{0,1}[0-9]{0,10}/<a href="$_[1]p=$&">$&<\/a>/; $str=~s/p=>>/p=/; }
558 名前:nobodyさん mailto:sage [2007/11/17(土) 22:00:49 ID:???] $i = 0; $buf =~ s/(>>\d+)/$i++ < 3 ? "LINK:$+" : $+/egs;
559 名前:556 mailto:sage [2007/11/17(土) 22:23:56 ID:???] >>558 ありがとうございます。 そんな書き方知りませんでした。
560 名前:557 mailto:sage [2007/11/17(土) 22:26:54 ID:???] >>559 556じゃなくて557でした
561 名前:nobodyさん mailto:sage [2007/11/18(日) 19:50:49 ID:???] 自作モジュールをロードするときに、BEGINブロックで@INCに追加してからBEGINの外でuseするのは外道
562 名前:561 mailto:sage [2007/11/18(日) 19:51:25 ID:???] ↑ 「ですか?」が抜けた。 すまぬ
563 名前:nobodyさん mailto:sage [2007/11/18(日) 20:25:36 ID:???] >>561-562 外道かどうか知らんが、普通は use lib でしょ。
564 名前:nobodyさん [2007/11/19(月) 06:13:08 ID:s0DcKkZM] これからプログラムをやりたいと思ってます。 いまからやるならperlは覚えたほうがいいですか?
565 名前:nobodyさん mailto:sage [2007/11/19(月) 06:19:02 ID:???] PHPでいいよ
566 名前:561 mailto:sage [2007/11/19(月) 08:54:57 ID:???] >>563 ありがt
567 名前:nobodyさん [2007/11/20(火) 11:38:30 ID:PLctc9ni] 多重起動の禁止はできたが、解放がうまくいかない。 どこが悪いか教えてください。 #登録&多重起動禁止 use Win32::API; use Win32::Mutex; my $mutex = Win32::API->new("kernel32","CreateMutex",["N", "N", "P"], "N"); die "二重起動" if(Win32::Mutex->open('TestProgram123')); $mutex=Win32::Mutex->new(1, 'TestProgram123'); #解放 my $releacemutex = Win32::API->new("kernel32","ReleaseMutex",["N"], "N"); $releacemutex->call($mutex);
568 名前:576 [2007/11/20(火) 14:43:38 ID:PLctc9ni] 自己解決 Win32-API使わなくてもできるのねぇ
569 名前:nobodyさん mailto:sage [2007/11/21(水) 03:27:48 ID:???] むしろ何の為のラッパーだよ
570 名前:nobodyさん [2007/11/23(金) 21:52:32 ID:BH2PwYj+] 質問失礼します。 AとBの文字があるとき、文字列の中のBAを全てABにしたいときはどのような置換をすればいいのでしょうか? 例えば、 $s = "AABABABBBA"; と文字列があったら、 $s = "AAAAABBBBB"; にしたいのです。 $s =~ s/BA/AB/g;とすると、置換後を判定してくれないので、困ってます……
571 名前:nobodyさん mailto:sage [2007/11/23(金) 21:58:25 ID:???] >>570 たとえば。 $ perl -e '$s = "AABABABBBA";while($s=~s/BA/AB/g){}print $s;'
572 名前:nobodyさん mailto:sage [2007/11/23(金) 22:00:18 ID:???] >>570 その場合、これ以上置換できなくなるまで「$s =~ s/BA/AB/g;」の処理を行わなければならない。すなわち、ループである。 s/BA/AB/g;は、置換を行った回数を返す。つまり、0を返すまで処理を継続したいのだから、while文が使える。 したがって、次のようになる。 while($s =~ s/BA/AB/g;){} whileのあとの{}の中に何も入っていないが、これでお望みどおり動くようである。
573 名前: ◆TWARamEjuA mailto:sage [2007/11/23(金) 22:31:04 ID:??? BE:6970188-2BP(6825)] sortって云う手もあるよなぁ♪ print join "", sort split "", "AABBABABBBABAABBAABABABABA";
574 名前:570 mailto:sage [2007/11/23(金) 22:36:47 ID:???] >>571-573 返信ありがとうございます。 無事whileを使う方法で出来ました。
575 名前:nobodyさん mailto:sage [2007/11/24(土) 07:56:01 ID:???] >>574 遅レス。 他の文字が存在しないと云う条件下なら、素直に文字数カウントするって手もある perl -le 'my $s = "atataaattttatatat" ; print "a" x ( $s =~ s/a/a/g ) . "t" x ( $s =~ s/t/t/g ) ;' ま、他の文字が存在してても外側ループ一個つけるだけだけどね。 蛇足だと思ったんだが、、、、
576 名前:nobodyさん mailto:sage [2007/11/25(日) 15:53:28 ID:???] ちょっと分からないので質問させてもらいます。 手作りで掲示板みたいなのを作ってるんですけど Location:で二重投稿を禁止したくて書いたんですが投稿したあとにLocation:って文字が表示されて飛ばないんですけど なんでしょうか? 普通なら飛ぶのに飛びません・・・。 誰か分かる方が居れば教えてください。
577 名前:nobodyさん mailto:sage [2007/11/25(日) 16:07:12 ID:???] >>576 content-typeの前に書いてみ
578 名前:nobodyさん mailto:sage [2007/11/25(日) 16:35:27 ID:???] >>577 出来ました。 ですが書き込みがされなくなりました・・・。
579 名前:nobodyさん mailto:sage [2007/11/25(日) 17:55:01 ID:???] そもそもがどんな仕組み何だかわかんねーと答えようがねーよw こっちはエスパーじゃないんだからさw
580 名前:nobodyさん mailto:sage [2007/11/25(日) 18:30:55 ID:???] >>579 www.uploda.org/uporg1129660.txt これなんですが上手く動作しなくて・・・。
581 名前:nobodyさん mailto:sage [2007/11/25(日) 18:47:07 ID:???] 一番最初に print "Content-type: text/html\n\n"; # データ形式 を書いてるのが不味いような気がするのは気のせいかな。
582 名前:nobodyさん mailto:sage [2007/11/25(日) 18:47:57 ID:???] >>581 他のところに置いたりすると上手く動作しないんです・・・。
583 名前:nobodyさん mailto:sage [2007/11/25(日) 18:50:17 ID:???] あと、$locationって変数、どこで使ってるんだろ。
584 名前:nobodyさん mailto:sage [2007/11/25(日) 18:55:24 ID:???] 勉強し直しておいで。
585 名前:nobodyさん mailto:sage [2007/11/25(日) 18:55:39 ID:???] あ、それは書き忘れましたがKENTWEBさんのところのをちょっと借りたやつです。 # リロード if ($location) { if ($ENV{'PERLXS'} eq "PerlIS") { print "HTTP/1.0 302 Temporary Redirection\r\n"; print "Content-type: text/html\n"; } print "Location: $location?\n\n"; exit; } これがサブルーチンのwriteの最後に置いてました。
586 名前:nobodyさん mailto:sage [2007/11/25(日) 18:56:09 ID:???] とりあえずヒントは、 ・Location: はHTTPヘッダに出力する ・ヘッダとボディの区切りは空行で示す
587 名前:nobodyさん mailto:sage [2007/11/25(日) 19:08:15 ID:???] 前も書いたけど、kentwebのってデリミタに<>使うの好きだねえ。データがでかくなってくると、 2バイトも勿体無いと思う。
588 名前:nobodyさん mailto:sage [2007/11/25(日) 19:10:08 ID:???] >586 難しそうですが頑張ってみます。
589 名前:nobodyさん mailto:sage [2007/11/25(日) 21:12:48 ID:???] 2バイトさえ気になるような人はデミリタに何使うんだろ。
590 名前:nobodyさん mailto:sage [2007/11/25(日) 21:13:37 ID:???] デリミタねw
591 名前:nobodyさん mailto:sage [2007/11/25(日) 21:51:10 ID:???] タブ?
592 名前:nobodyさん mailto:sage [2007/11/25(日) 21:57:24 ID:???] 俺はタブ。excelにも貼るだけで、データやりとりできるし。
593 名前:nobodyさん mailto:sage [2007/11/26(月) 01:21:50 ID:???] 俺は適当に,にしてた
594 名前:nobodyさん mailto:sage [2007/11/26(月) 09:34:29 ID:???] >>593 CGIでHTMLを吐く前提なら、 , を入力されると面倒なことになるんだよな。 < > なら < > ってできてしまうからいいんだけど。
595 名前:nobodyさん mailto:sage [2007/11/26(月) 09:35:03 ID:???] ↑失礼 < > なら < > ってできてしまうからいいんだけど。
596 名前:nobodyさん mailto:sage [2007/11/26(月) 17:00:07 ID:???] , は,でいいんじゃね?俺もタブ使うけど
597 名前:nobodyさん mailto:sage [2007/11/26(月) 19:49:54 ID:???] ちょいと質問を。 今ソフトバンククリエイティブのCGI/perl ハンドブック第3版 のCGIサンプルで掲示板を作ったのですが掲示板にメッセージが書き込まれなかったらエラーを出そうと 思って四苦八苦しているんですがperl6はよく分からなく苦戦しています。 誰かこの本を持っていて、分かる方がいればご教授お願いします。
598 名前:nobodyさん mailto:sage [2007/11/26(月) 20:23:48 ID:???] >>597 その本持ってないから知らないけど、本当にperl6ですか? #このスレはご教授ってOKなんだっけ?
599 名前:nobodyさん mailto:sage [2007/11/26(月) 21:19:36 ID:???] こんばんは。 LWPで、現在取得しているURLの情報を参照する方法ってあるでしょうか。 ttp://www.xxx.ne.jp というURLを取得したときに、いくつかリダイレクトされて、 ttp://www.xxx.ne.jp/cgi-bin/test.cgi?id=aaaa&pass=bbbb こんな感じのURLになってるのですが、この ? 以降の情報を取得したいのです。 $responoser->base では、 ? より前のURLしか返してくれません。 教えてください。
600 名前:nobodyさん mailto:sage [2007/11/26(月) 23:26:29 ID:???] >>598 その使い方も間違ってない以上、突っ込む方が野暮or空気が読めないでおk
601 名前:nobodyさん mailto:sage [2007/11/27(火) 03:23:29 ID:???] 質問します 他のサーバー上のテキストファイルを読み込ませたいのですがopen関数ではできないんでしょうか?
602 名前:nobodyさん mailto:sage [2007/11/27(火) 03:33:26 ID:???] できない
603 名前:nobodyさん mailto:sage [2007/11/27(火) 03:49:49 ID:???] >>601 あんたすげーな
604 名前:nobodyさん mailto:sage [2007/11/27(火) 06:16:45 ID:???] 童貞で40歳まで行ったら妖精になれるよりすごい発想
605 名前:nobodyさん mailto:sage [2007/11/27(火) 07:36:33 ID:???] ただ、PHPでは同じような方法でできるこの不思議。
606 名前:nobodyさん mailto:sage [2007/11/27(火) 08:12:36 ID:???] だれか599についての回答を・・・
607 名前:nobodyさん mailto:sage [2007/11/27(火) 09:01:18 ID:???] >>599 =606 リダイレクトされるためには適切なHTTPヘッダが返っているはずだからそれ調べる。
608 名前:nobodyさん mailto:sage [2007/11/27(火) 11:02:47 ID:???] >>599 >>606 うちの環境では、3回リダイレクトを経て、?&引数がもっさりついたurlに飛ばしても、 print $response->base(); で、引数(’?’以降%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8Aとか)がついた URLを表示できたけど・・・。 ActivePerl 5.8.8-build822(XPsp2) LWP/5.808
609 名前:nobodyさん mailto:sage [2007/11/28(水) 05:14:00 ID:???] ブログの自動投稿プログラムを作りたいと思ってるんですが、大まかな仕組みも分からず困っています。 どなたかご教授願えませんか? ちなみに、用途はバーチャルな人間の日記を作りたいと思っています。 日記を出力するアルゴリズムは別に用意しますので、 それをブログの投稿画面に自動でログインして書き込むようにしたいのです。 ローカルからでも構わないのですが、 できれば安いレンタルサーバーから行えれば良いなと思ってます。 検索で『自動投稿』としたらたくさん見つかったのですが、どれもアフィリエイター用のもので、 結構値段も高いですし、記事を予め用意しないとダメなので私がしたいようには出来そうにありません。
610 名前:609 [2007/11/28(水) 05:16:24 ID:onMmaiK+] よろしくお願い申し上げます。m(__)m
611 名前:nobodyさん mailto:sage [2007/11/28(水) 05:24:30 ID:???] ひょっとしたら、atom っていうのを勉強したら道が開けるんですか?
612 名前:nobodyさん mailto:sage [2007/11/28(水) 05:26:27 ID:???] 日記を出力するアルゴリズム ←これがきになる
613 名前:nobodyさん mailto:sage [2007/11/28(水) 09:39:10 ID:???] 日記を出力するアルゴリズム ←ってのはもしかして勝手に日記を書いてくれるプログラムだろうか
614 名前:nobodyさん mailto:sage [2007/11/28(水) 09:48:03 ID:???] >>609 △▲ WebProg 初心者の質問 Part16 ▼▽ pc11.2ch.net/test/read.cgi/php/1187729623/
615 名前:nobodyさん mailto:sage [2007/11/28(水) 13:29:43 ID:???] 日記を出力するアルゴリズムを書ける人ならそれぐらい自分でできそうだけど。 荒らしスクリプトにするつもりじゃないなら、その日記を出力するアルゴリズムの 元ネタの場所を公開すれば信用が得られるかも。
616 名前:nobodyさん mailto:sage [2007/11/29(木) 03:01:28 ID:???] そういうのは荒らしやスパムに使われる可能性が高いから、自分でやりな。
617 名前:609 [2007/11/29(木) 18:18:55 ID:fn44RAXr] >>612-615 日記のアルゴリズムが完成したわけではありません ただそっちは、大したものじゃないにしても何とかなりそうなんです。 一方、自動投稿の方は何から手を付けていいのかすら分からない状態でしたので質問させてもらいました >>616 やっぱりそうですか わかりました。何とか頑張ってみます 因みにスパム行為をするつもりは毛頭ありませんが、確かに見ようによってはそう映る可能性も否定できないですね。 あくまでも普通の人間っぽい挙動にしたいと思っているので、投稿の数も一日で多くて3通程度、少ないときは三日ぐらい更新しないような動きを考えてました。 とにかく自分で何とかしないとダメみたいですね ご迷惑おかけ致しました
618 名前:nobodyさん mailto:sage [2007/11/29(木) 18:50:54 ID:???] search.cpan.org/perldoc?XML::Atom::Client
619 名前:nobodyさん mailto:sage [2007/11/29(木) 18:56:46 ID:???] >>617 う〜む、どう考えてもやっぱりその 日記を出力するアルゴリズム ってのが、自動投稿するスクリプトより遥かに高レベルのような気がするが・・・・。 まあいいや、ヒントだけ。 WWW::Mechanize オススメ。 内容や使い方は、自分で調べてちょ。
620 名前:609 mailto:sage [2007/11/30(金) 00:45:15 ID:???] >>618 ,619 ありがとうございました。 参考にさせていただきます。 今いろいろ資料を調べたり、さっき図書館で借りてきた Webクライアントプログラミングって言う本(めちゃふるいですがw) を読んだりしてます。 HTTP通信などは一度もやったことがないので、 LWPあたりから勉強したほうがよさそうな、 そんな気がしてる今日この頃。 AtomとかXML-RPCとかの資料にまではたどり着けたのですが、 そこに平然と書かれている GETだのPOSTだのという表現についていけない状況です。 あれを全部 perl のコードに解釈するための知識がないのです。 というわけで、だいぶ時間掛かりそうですが、 こつこつやっていこうかなと。 もう少し進歩して、またわからないことがあったら、 ここか>>614 さんが教えてくれたスレにでも出没いたします。 では、ごきげんよう皆様。
621 名前:609 mailto:sage [2007/11/30(金) 03:34:24 ID:???] (´・ω・`) ノシ やっとこさ、livedoor から餌を頂戴できました なんだか、嬉しくて涙が出てきた 。・+゜(つД`)゜+・。 みんなありがと
622 名前:609 mailto:sage [2007/11/30(金) 03:51:57 ID:???] >>619 Mechanize というのを完全に誤解してたようです XML-RPCとかAtomPubなどとはまったく違うんですね。 なんというか、禁断の・・・いや、貴重な情報ありがとうございました。
623 名前:nobodyさん mailto:sage [2007/11/30(金) 12:46:37 ID:???] フォームメールに入力された内容を半角→全角に変換するプログラムがわかりません。 $str = '$mystr'; $kigou ='@!"#$%&\'()=-^\\|{}:;+*?_/<>'; require 'jcode.pl'; if ($FORM{'namae'} ne ''){ $mystr = $FORM{'namae'}; &hankaku; } sub hankaku{ &Jcode'convert(*str,'euc'); if($str =~ /^[0-9]{7,11}$/){ &jcode'tr(*str,'0-9A-Za-z','0-9A-Za-z'); }elsif ($str =~ /\x8E/) { &jcode'h2z_euc(*str); }else ($str =~ /$kigou/){ &jcode'tr(*str,'@!”#$%&’()=−^¥|{}:;+*?_/<>','@!"#$%&\'()=-^\\|{}:;+*?_/<>'); } &Jcode'convert(*str,'sjis'); $str = $value; exit 0; } 1度eucに変換してからと考えたんですが。
624 名前:nobodyさん mailto:sage [2007/11/30(金) 13:06:38 ID:???] >>623 Unicode::Japanese
625 名前:nobodyさん [2007/11/30(金) 13:27:37 ID:7wito75u] 2007/11/30-2007/12/01,00-24,[動作させる値] のようなdatファイルを下記でブランチさせると、指定範囲外だと判定されてしまうようなのです。 改善するにはどこを直せば良いでしょうか・・・最後の日付部分の比較だけで判定されてる・・? localtime(time)取得やDAT読み込みは大丈夫っぽいです。 foreach $sdat(@set){ next, if $sdat eq "\n"; @sdat = split(/,/,$sdat); @ddat = split(/\-/,$sdat[0]); @d1dat = split(/\//,$ddat[0]); @d2dat = split(/\//,$ddat[1]); @tdat = split(/\-/,$sdat[1]); if( ($ddat[1] eq '' || ($ddat[1] ne '' && $d2dat[0] eq '*' || $d2dat[0] >= $year)) &&($ddat[1] eq '' || ($ddat[1] ne '' && $d2dat[1] eq '*' || $d2dat[1] >= $mon)) &&($ddat[1] eq '' || ($ddat[1] ne '' && $d2dat[2] eq '*' || $d2dat[2] >= $mday)) &&($d1dat[0] eq '*' || ($ddat[1] ne '' && $d1dat[0] <= $year) || ($ddat[1] eq '' && $d1dat[0] == $year)) &&($d1dat[1] eq '*' || ($ddat[1] ne '' && $d1dat[1] <= $mon) || ($ddat[1] eq '' && $d1dat[1] == $mon)) &&($d1dat[2] eq '*' || ($ddat[1] ne '' && $d1dat[2] <= $mday) || ($ddat[1] eq '' && $d1dat[2] == $mday)) &&($sdat[1] eq '*' || ($tdat[0] <= $hour && $hour <= $tdat[1])) ){ chomp $sdat; $url = $sdat[2]; last; } }
626 名前:nobodyさん mailto:sage [2007/11/30(金) 13:32:25 ID:???] ひどすぎわろた
627 名前:nobodyさん [2007/11/30(金) 15:56:59 ID:7wito75u] 失礼。自己解決しました。
628 名前:nobodyさん [2007/12/10(月) 07:32:09 ID:aPvXjzqK] Perl5.x+CGIです。 現在、複数のプロセスから、同じデータにアクセス(読み書き)したいと考えています。 異なるプロセス間で共有される静的な変数、というようなイメージです。 外部ファイルやデータベースなどを経由する方法以外で、 このような処理を実現するにはどのようにすればよいか、ご存知の方がいましたらお願いします。 やはりmod_perlが適当でしょうか。
629 名前:nobodyさん mailto:sage [2007/12/10(月) 11:08:15 ID:???] 静的な変数? ていうかそれプロセスが落ちたらデータは消えていいってこと? 素直にファイルなりDBなり使えばいいとおもうんだけど、それができない理由は?
630 名前:nobodyさん mailto:sage [2007/12/10(月) 11:47:45 ID:???] 質問の意味がわからないけど mmapやmemcacheみたいなの?
631 名前:nobodyさん mailto:sage [2007/12/10(月) 13:16:59 ID:???] 読み書きするのに静的ってナンダロ スレッド使うMPM+mod_perlで:shared使うとか shared memory使うとかそういう話かな? 質問の仕方が初心者臭いし素直にDB使っとけって気がする。
632 名前:628 mailto:sage [2007/12/10(月) 20:47:52 ID:???] >629-631 ありがとうございます。遅くなってすみません。 ご想像通り初心者です。初めて触ったのは何年も前ですが、仕事とか全然関係ないので。 Perl ←―→ 外部ファイル、DB ↑ ここのコストが凄く重いので、可能な限りアクセスを減らしたいと考えています。 Perl側で保持しておけば多少は減るかなあと。 要は、「キャッシュ」のようなものだと思っていただければ。 >629 >プロセスが落ちたら はい、構いません。もう一度、データ本体から取得するだけなので。 >631 >読み書きするのに静的 「静的変数」と「定数」は全くの別物という認識だったのですが、 もしかするとPerlの世界だと違うのかもしれません。少し調べてきます。 >630-631 >mmap、memcache、shared 軽く調べてみただけですが、そういうことです。勘違いしてるかもしれませんが。 この辺のキーワードを参考に、深く見てみようと思います。
633 名前:nobodyさん [2007/12/12(水) 13:49:47 ID:uWSb2hJm] すみません質問です。 複数画像ファイルが入っている特定フォルダから更新日が一番最新のファイルを 探して表示させたいのですが出来ますでしょうか? 尚、ファイル形式は不定です。 教えてください。 宜しくお願いします。
634 名前:nobodyさん mailto:sage [2007/12/12(水) 13:58:00 ID:???] (stat 'filename')[9]
635 名前:nobodyさん mailto:sage [2007/12/12(水) 16:11:40 ID:???] 質問です。 aaa.htmというファイルを読み込んで、その中に書かれている変数を変数展開したいと思ったのですがそう簡単にはいきませんでした。 print qq|$_|; とすれば変数展開されるかなと思いましたがそれもだめ。 置換を使えば簡単なのですが、置換以外の方法がありましたら教えてください。 --------aaa.htmの内容-------- <html> <body> $a </body> </html> --------ソース-------- $a = 'aaa'; open(IN, "< aaa.htm"); @html = <IN>; close(IN); print "Content-type: text/html; charset=Shift_JIS\n\n"; foreach (@html) { print $_; }
636 名前:nobodyさん mailto:sage [2007/12/12(水) 16:27:53 ID:???] HTML::Templateでも使っとけ
637 名前:635 mailto:sage [2007/12/12(水) 16:52:55 ID:???] evalをつかったらなんとかなりそうです。 >636さんレスありがとう
638 名前:nobodyさん [2007/12/12(水) 17:26:25 ID:BkwLyerT] Encode.pm 5.85でEUC→UTF-8変換時に、 「」などの漢字が化けてしまうのですが、 これを化けないように工夫するにはどうすればいいのでしょうか?
639 名前:nobodyさん mailto:sage [2007/12/12(水) 18:06:55 ID:???] >>638 Encode::EUCJPMSを入れて、cp51932を使う。
640 名前:nobodyさん mailto:sage [2007/12/13(木) 08:48:25 ID:???] >>635 s/\$(\w+)/${$1}/g;
641 名前:628=632 mailto:sage [2007/12/13(木) 20:33:46 ID:???] 自己レスな上に遅レスです。 色々と検討してみた結果、速度や安全性に疑問も多いですが、とりあえずshm○○を使ってみようかなと思います。 ありがとうございました。
642 名前:nobodyさん [2007/12/14(金) 03:20:01 ID:jWEjvsMQ] 質問です。 Usteramで録画したflvをダウンロードしたくて、 unknownplace.org/memo/2007/10/03 を参考に以下のソースを実行しました。 #!/usr/bin/env perl use strict; use warnings; use AMF::Perl; use LWP::UserAgent; my $cid = shift || '5Fq8cQp9eHsEEknbQ22OOZniqS2xUiuz'; my $amf = AMF::Perl::Util::Object->new; $amf->addBody('client.watch_video', '/1', { cid => $cid }); my $outputstream = AMF::Perl::IO::OutputStream->new; my $serializer = AMF::Perl::IO::Serializer->new($outputstream, 'utf-8'); $serializer->serialize($amf); my $amfdata = $outputstream->flush; $amfdata =~ s/\xff\xff\xff\xff/\0\0\0\x31\x0a\0\0\0\x01/; my $ua = LWP::UserAgent->new; my $req = HTTP::Request->new( POST => 'gw.ustream.tv/gateway.php ' ); $req->content( $output ); $req->content_type('application/x-amf'); $req->content_length( length $amfdata ); my $res = $ua->request($req); my $deserializer = AMF::Perl::IO::Deserializer->new(AMF::Perl::IO::InputStream->new($res->content), 'utf-8'); use YAML; print Dump $deserializer->getObject->getBodyAt(0)->{value};
643 名前:642 [2007/12/14(金) 03:21:23 ID:jWEjvsMQ] 実行結果は以下の通りです。 Content-Length set when there is no content, fixed at /Library/Perl/5.8.6/LWP/Protocol/http.pm line 196. Can't use an undefined value as a HASH reference at test.pl line 37. どうすればいいでしょうか。 よろしくお願いします。
644 名前:nobodyさん mailto:sage [2007/12/14(金) 08:48:00 ID:???] 37行目って何処よ
645 名前:nobodyさん mailto:sage [2007/12/15(土) 20:24:19 ID:???] $text = <STDIN>; として、処理中に何らかのテキストを入力させたいです。 英数字は問題ないのですが、日本語を入力したときが変です。 aあ と入力して、バックスペースを押すとちゃんと消去されません。2回おせば「あ」の表示は消えるのですが、 受け取った文字のaも消えてしまっています。 解決策を教えてください
646 名前:nobodyさん mailto:sage [2007/12/15(土) 22:15:15 ID:???] IPアドレスから携帯のキャリア判定してる人ってみんなここから 新しいIPアドレスが追加されたか定期的にチェックしてるんですか? ja.wikipedia.org/wiki/%E5%88%A9%E7%94%A8%E8%80%85:Tietew/%E6%90%BA%E5%B8%AF%E9%9B%BB%E8%A9%B1%E3%81%AEIP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%83%AA%E3%82%B9%E3%83%88
647 名前:nobodyさん mailto:sage [2007/12/15(土) 22:41:06 ID:???] ついでにききたいのですが、 @text = <STDIN>; ってやったときに、入力を終わりにするにはどうすればいいのですか?
648 名前:nobodyさん mailto:sage [2007/12/16(日) 02:59:28 ID:???] >646 そこから調べてるかどうかはともかく、公式サイトを見るのは確かだな。 まあ、IPアドレスが追加されること自体はあんまり無いし……。
649 名前:nobodyさん mailto:sage [2007/12/16(日) 11:33:56 ID:???] >>646 リモートホストに変換して判断してる。
650 名前:nobodyさん mailto:sage [2007/12/16(日) 16:00:14 ID:???] >>649 ホストに変換するのは失敗することあるらしいぞ。 直接IPから判断した方が確実。 気にするほどじゃないとは思うけど、どうなんだろ
651 名前:nobodyさん mailto:sage [2007/12/16(日) 18:41:45 ID:???] perlで2ちゃんねるの専用ブラウザみたいなのって作れるんでしょうか。
652 名前:nobodyさん mailto:sage [2007/12/16(日) 19:23:33 ID:???] ネットワークをサポートしていて、文章の出力が出来るなら大抵の言語で可能だと思うよ。
653 名前:642 [2007/12/17(月) 11:34:49 ID:FgX+pG+l] >>644 37行目は一番最後のprintの部分です。
654 名前:nobodyさん mailto:sage [2007/12/18(火) 10:34:57 ID:???] たとえば、sample.plに、 require('lib/lib.pl'); &dosomething(); と書いておいて、lib/lib.plに、 sub dosomething{ open(FH, '>> baka.log'); print FH time."\n"; close(FH); } とすると、lib/の中にファイルができるのではなく、ひとつ上にできてしまいます。 これをlib/の中に保存したいのですが、ライブラリからの相対パスで保存する方法はないでしょうか。 または絶対パスを使うしかないのでしょうか。 ヒントだけでもお願いします。
655 名前:nobodyさん mailto:sage [2007/12/18(火) 11:18:35 ID:???] >>654 じゃあ、ヒントだけ… つ %INC
656 名前:654 mailto:sage [2007/12/18(火) 16:52:48 ID:???] >>655 ありがとう! こーゆー用途に使うのな。
657 名前:nobodyさん mailto:sage [2007/12/19(水) 01:05:36 ID:???] ハッシュ配列の各要素をリファレンスとして関数の引数に渡したいのですが よくわからなくて試行錯誤の末下のような方法にたどり着きました $AA{'name'} = '1234'; $BB[0]{'name'} = 'abc'; $BB[1]{'name'} = 'ああああ'; $BB[2]{'name'} = '!?'; kansuu( \%AA ); $tmp = \@BB; kansuu( ${\$tmp->[0]} ); kansuu( ${\$tmp->[1]} ); kansuu( ${\$tmp->[2]} ); sub kansuu { my $h = $_[0]; print "$h->{'name'}<br>"; } BBの要素を kansuu() に入れるために もっとスマートな方法(っていうか正しい書式)がありましたら教えていただけないでしょうか?
658 名前:nobodyさん mailto:sage [2007/12/19(水) 01:14:31 ID:???] my %AA = ( name => 1234 ); my @BB = ( {name => 'abc'}, #$BB[0]に無名ハッシュ(リファレンス)をいれる {name => 'ああああ'}, #$BB[1]に〃 {name => '!?'} #$BB[2]に〃 ); kansuu( \%AA ); #\をつけることで%AAのリファレンスがわたる kansuu( $bb[0] ); #$bb[0]の無名ハッシュリファレンスを渡す kansuu( $bb[1] ); kansuu( $bb[2] ); sub kansuu { printf('%s<br>',shift->{name});#ハッシュリファレンスは->をつけて要素を取り出す }
659 名前:nobodyさん mailto:sage [2007/12/19(水) 02:00:39 ID:???] $,@,%,\と(),{},[]と->の組み合わせで大抵何とかなる。 正直スカラーのリファレンスの説明は自身がないけどおよそあってると思う my $scalar = 'abc'; #スカラー my $scalar_ref = \$scalar; #スカラーのリファレンス my $anon_scalar_ref = \do {my $anon;}; #微妙に無名じゃないけど my @array = (1,2,3); #配列 my $array_ref = \@array; #配列のリファレンス my $anon_array_ref = [1,2,3]; #無名配列のリファレンス my %hash = (a=>1,b=>2,c=>3); #ハッシュ my $hash_ref = \%hash; #ハッシュのリファレンス my $anon_hash_ref = {a=>1,b=>2,c=>3}; #無名ハッシュのリファレンス my $slacar_object = bless $scalar_ref => __PACKAGE__; # スカラー使ったオブジェクト my $array_object = bless $array_ref => __PACKAGE__; # 配列使ったオブジェクト my $hash_object = bless $hash_ref => __PACKAGE__; # ハッシュ使ったオブジェクト #素直に取り出せる printf "scalar=%s\n",$scalar; printf "array=%s\n",$array[0]; printf "scalar=%s\n",$hash{a}; #アドレスっぽいのがとれる printf "scalar_ref=%s\n",$scalar_ref; printf "array_ref=%s\n",$array_ref; printf "scalar_ref=%s\n",$hash_ref; #リファレンス先の値書き換えたり取り出したり $$scalar_ref = '書き換えちゃった';printf "scalar=%s\n",$$scalar_ref; $array_ref->[1] = '書き換えちゃった';printf "array=%s\n",$array_ref->[1]; $hash_ref->{b} = '書き換えちゃった';printf "scalar=%s\n",$hash_ref->{b}; #デリファレンスする(copyが作られる) my $scalar2 = ${$scalar_ref}; my @array2 = @{$array_ref}; my %hash2 = %{$hash_ref};
660 名前:nobodyさん mailto:sage [2007/12/19(水) 07:53:49 ID:???] CGI.pmでmetaを出力したいのですがうまくいきません。 ↓これを出力したいのですが・・・ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ttp://www.geocities.co.jp/SiliconValley-Sunnyvale/6128/perl/cgipm.html このページの解説によると、 use CGI; my $q = CGI->new; print $q->start_html( -head=>meta({'http-equiv' => 'Content-Type' -content=>"text/html; charset=$CharSet"} ), このようなコードになるはずなのですが、やってみると Undefined subroutine &main::meta called というエラーがでます。meta()がメインのサブルーチンだと解釈されてるみたいです。
661 名前:660 続き mailto:sage [2007/12/19(水) 07:54:19 ID:???] print $q->start_html( -head=>$q->meta({'http-equiv' => 'Content-Type' -content=>"text/html; charset=$CharSet"} ), とやると一応うまくいくのですが、なぜか <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> このようにもう一つ余計なメタが出てしまいます。どうすればいいのでしょうか? CGI.pmは3..31です。
662 名前:nobodyさん mailto:sage [2007/12/19(水) 10:23:45 ID:???] >>660-661 perldoc.jp/docs/modules/CGI.pm-2.89/CGI.pod my $q = CGI->new; $q->charset('UTF-8');
663 名前:660 mailto:sage [2007/12/19(水) 23:37:11 ID:???] >>662 ありがとうございました!
664 名前:657 mailto:sage [2007/12/20(木) 08:31:41 ID:???] >>658-659 ありがとうございます! 超わかりやすくて助かりました 今のプログラムの色んなところがもっと簡潔に書けそうです
665 名前:nobodyさん mailto:sage [2007/12/20(木) 10:28:40 ID:???] > 超わかりやすくて助かりました > 今のプログラムの色んなところがもっと簡潔に書けそうです 本当はわかってないくせに。
666 名前:nobodyさん mailto:sage [2007/12/20(木) 13:33:18 ID:???] >>658-659 ですべてが理解できれば天才
667 名前:nobodyさん mailto:sage [2007/12/20(木) 13:39:25 ID:???] 最低限は書かれてて分かりやすいとは思ったぞ
668 名前:nobodyさん mailto:sage [2007/12/20(木) 16:21:00 ID:???] 読む気もしねぇよ
669 名前:nobodyさん mailto:sage [2007/12/21(金) 21:13:42 ID:???] でもああやって思いつく限りの書き方試して要素やハッシュ値見てればなんとなくでもわかってくるはず。 めんどいけど。
670 名前:nobodyさん mailto:sage [2007/12/22(土) 18:50:11 ID:???] あんな変な列挙を眺めるんじゃなくて、続初めてのPerl読むべきだろ。
671 名前:nobodyさん mailto:sage [2008/01/02(水) 06:47:19 ID:???] perl5.10 に移行した人います?
672 名前:nobodyさん mailto:sage [2008/01/02(水) 20:07:21 ID:???] ノ 依存コードは書いてないけど
673 名前:nobodyさん mailto:sage [2008/01/03(木) 00:16:04 ID:???] ノシ cygwinで5.10入れてみた use 5.10;で書いてみてる
674 名前:nobodyさん mailto:sage [2008/01/05(土) 22:21:41 ID:???] 変数の中身を展開せずに確認したい場合ってどうすればいいんでしょうか? $test = "今日は\n いい天気です $wether"; こんな変数があるとして、$test自体は展開してほしいんですが、 中身の\nや$wetherは展開せずに出力したいのです。
675 名前:nobodyさん mailto:sage [2008/01/05(土) 22:58:36 ID:???] ' ちなみに、weather?
676 名前:nobodyさん mailto:sage [2008/01/06(日) 03:58:05 ID:???] >>674 $testに代入した時点で展開しちゃってるでそ そもそも確認したい意図は何? リファレンスにしてアドレスを確認する手もあるけど
677 名前:674 mailto:sage [2008/01/06(日) 14:08:20 ID:???] うーん、無理みたいですね。諦めます。一応問題は解決しましたので >>675 そうです; >>676 なるほど・・・ 意図は正規表現でゴチャゴチャいじったあとの文字列が どうしてもめちゃくちゃくになってしまうので、変数の位置関係を調べたかったのです。
678 名前:nobodyさん mailto:sage [2008/01/06(日) 16:36:10 ID:???] >>674 はなぜ>>675 の一行目を無視するんだ? それが答えじゃないか。 >>676 はそれもわかってないみたいだが。
679 名前:nobodyさん [2008/01/06(日) 23:12:25 ID:wcb81UNa] $kekka = int(200 * 0.29); print "$kekka"; このような計算をしたら、結果が57になりました。 intって小数点が発生した時に切り落とすはずですよね? えと、なぜこんなことになるのか意味が分からないのですが、 誰かご教授お願いします
680 名前:nobodyさん mailto:sage [2008/01/07(月) 01:59:09 ID:???] >>679 www.tt.rim.or.jp/~rudyard/torii009.html
681 名前:nobodyさん mailto:sage [2008/01/07(月) 11:17:24 ID:???] それ、今じゃ間違いじゃないってのが一般的。 語源の知識としてはありだけど、誤用が定着するなんていくらでもあることだから。 いつもいつも空気読めない人が指摘するよな。
682 名前:nobodyさん mailto:sage [2008/01/07(月) 11:27:36 ID:???] >>679 $kekka = int(((my $n=200 * 0.29)=~/(.*)/)[0]); print "$kekka"; こう書けばOK
683 名前:nobodyさん mailto:sage [2008/01/07(月) 11:29:04 ID:???] >>681 誤用でない方が一般的だとする根拠は?
684 名前:nobodyさん mailto:sage [2008/01/07(月) 11:38:36 ID:???] 回答にはなってないけれど、こちらの環境でもいくつか試してみた ので、その結果を書いておく。 何でこんな風な結果になるのだろうか。私も分からなかった。 $kekka = 200 * 0.29; print "$kekka"; 出力:58 $kekka = 200 * 0.29; $kekka = int($kekka); print "$kekka"; 出力:57 $kekka = int(200 * 0.29); print "$kekka"; 出力:57 $kekka = int(2 * 29); print "$kekka"; 出力:58
685 名前:nobodyさん mailto:sage [2008/01/07(月) 12:30:31 ID:???] 浮動少数の扱いの問題。 use bignum; これで解決。
686 名前:nobodyさん [2008/01/07(月) 21:15:48 ID:XSyaqzwg] >>685 おぉ いきました! 詳しい原因はよくわからないですが、ありがとうございました。
687 名前:nobodyさん mailto:sage [2008/01/07(月) 21:22:49 ID:???] ためしにPerlじゃなくてLispで (* 200 0.29) ってしてみたら57.99999999999999だってさ。機械の計算って難しいことがあるな
688 名前:nobodyさん mailto:sage [2008/01/07(月) 22:41:02 ID:???] 誤差については、がっこで習うものだと思ってたけど、そうでもない?
689 名前:nobodyさん mailto:sage [2008/01/07(月) 22:44:33 ID:???] 俺は習ったけど、もしかしたら教えてないところも少なくないかもしれん
690 名前:nobodyさん mailto:sage [2008/01/07(月) 23:59:36 ID:???] 情報工学を扱う授業でもなきゃ教わらないんじゃね? 少なくとも俺は浮動小数点の丸め誤差については習ったことない。 あと高校の世界史も。
691 名前:nobodyさん mailto:sage [2008/01/08(火) 00:07:25 ID:???] >>683 >>681 じゃないがなんかの辞書に載ってた気がする ソースはない
692 名前:nobodyさん [2008/01/08(火) 00:31:05 ID:k+nta2fc] 丸め誤差の知識はありますけど、 コンピュータの中で200*0.29ってどうやって計算してるか分からない そもそも結果が57.9999・・・・になると言われても、どういう計算をしているのか さっぱりw
693 名前:nobodyさん mailto:sage [2008/01/08(火) 00:34:28 ID:???] しかも (* 20 0.29) これは5.8って表示されるから困るw
694 名前:nobodyさん mailto:sage [2008/01/08(火) 00:38:53 ID:???] 自前のショッピングカートの消費税を int($sum * 0.05) みたいに計算してるんだけど、大丈夫だろうか…
695 名前:nobodyさん mailto:sage [2008/01/08(火) 07:14:24 ID:???] >>694 >>685 にすれば大丈夫かと
696 名前:nobodyさん mailto:sage [2008/01/08(火) 08:15:35 ID:???] 俺は一番最初の質問者ではないが、浮動小数点の丸め誤差については、 wikipediaにも載ってたね。 問題の解決には、 use bignum; つかえばいいわけで、それでいい のは分かるけれど、それとは別の話で、小数を100倍して整数で演算をして、 あとで100で割ったりする方法だったらちゃんとでるから use bignum; しなくてもいいんだよね?
697 名前:nobodyさん mailto:sage [2008/01/08(火) 22:01:08 ID:???] >>696 0.29が有効数字2桁だとあらかじめ分かっているなら100倍すればいいけどなあ。 既知でないときにはuse bignum;じゃないか?
698 名前:nobodyさん mailto:sage [2008/01/09(水) 00:10:32 ID:???] >>697 レスサンクス。 いや、意味の無い部分の考えかなと思ったんだけど、 そっちの方がメモリが少なくて済み、処理が早くなったりするのかなとか 思ったのよね。ま、すごく小さな世界をいっているんだろうけれど。
699 名前:nobodyさん mailto:sage [2008/01/09(水) 01:01:57 ID:???] うーん、俺も難しいことはわからんけど、 俺は細かい実行時間を気にしてミスをするより、コードの可読性を優先したいな。と思った。 大量のデータを扱う人から見ればふざけた態度かもしれないけどね。
700 名前:nobodyさん mailto:sage [2008/01/09(水) 02:01:45 ID:???] LL的には人間にとっての最適化(コードの可読性)のほうが重要だからそれでいいと思うな
701 名前:nobodyさん [2008/01/09(水) 03:08:01 ID:480klIK2] リーダビリティ重要。(高橋メソッド風に)
702 名前:nobodyさん mailto:sage [2008/01/10(木) 23:51:33 ID:???] IPを10進数に変換したものと、 サブネットマスク形式のリストをマッチングさせたいんですが、 どんなループさせればいいですかね? #判定ルーチン内 foreach (@list) { my ($min,$max) = subnetMinMax($_); return ($ip >= $min and $ip <= $max) ? 1 : 0; } としてるんですが、grep等を使ったほうが良いんでしょうか? ループ内でサブルーチン呼ぶのがちょっと気になります。
703 名前:nobodyさん mailto:sage [2008/01/11(金) 00:04:09 ID:???] 訂正orz x: return ($ip >= $min and $ip <= $max) ? 1 : 0; o: return 1 if($ip >= $min and $ip <= $max);
704 名前:nobodyさん mailto:sage [2008/01/11(金) 11:44:26 ID:???] @listの中にマッチするものが複数存在する可能性があって 何にマッチしたか全て取りたいならgrepだけど 有るか無いかだけでいいならループ回して見つけ次第結果返していいんじゃない?
705 名前:nobodyさん mailto:sage [2008/01/11(金) 16:30:20 ID:???] return $ip >= $min and $ip <= $max;
706 名前:nobodyさん mailto:sage [2008/01/11(金) 20:31:41 ID:???] >>704 なるほど。このままにしますありがとうございました。 >>705 そっか、そうですよね。 聞いてみて良かったです。
707 名前:nobodyさん mailto:sage [2008/01/12(土) 13:10:11 ID:???] 「うんこ」を含む行の最後に「出る」と追加することってできますか? 「うんこ」の前後は英数字・日本語交じりで文字数は不定です。 $_ =~ s/(うんこ)/$1でる/; だと、うんこ〜出るの間の文字が文末にきてしまいます。 文末指定は$みたいなので $_ =~ s/(うんこ)/$1でる$/; としてperlを実行させると、エラーなのか、プログラムが終わりません。
708 名前:nobodyさん mailto:sage [2008/01/12(土) 13:13:01 ID:???] if ( $うんこ =~ /うんこ/ ) { $うんこ .= ’でる’ }
709 名前:nobodyさん mailto:sage [2008/01/12(土) 13:38:43 ID:???] 「うんこを含む行」「改行」 ⇒ 「うんこを含む行」「でる」「改行」 if (index($_, 'うんこ') >= 0){ $_=~ s/$/でる/; }
710 名前:707 mailto:sage [2008/01/12(土) 13:54:47 ID:???] >>708 全角を半角にしてやってみたりしましたが、エラーでした。 >>709 できました。ありがとうございます。 ただ、>=0の意味が分かりません。 改行は\nじゃないんですか?
711 名前:nobodyさん mailto:sage [2008/01/12(土) 18:35:26 ID:???] なにこのうんこスレ
712 名前:nobodyさん mailto:sage [2008/01/12(土) 19:18:44 ID:???] >>710 index
713 名前:707 mailto:sage [2008/01/12(土) 22:50:20 ID:???] >>712 すみません、わかりました。ありがとうございました。
714 名前:nobodyさん [2008/01/13(日) 13:16:41 ID:rzzkvCmj] 怠惰が美徳だの エロエロ言語だの 言うけどさ 俺が習ってきた主な4つの言語のなかじゃ 間違いなく一番習得が苦しかった ぞ つまり、学習コストは高い Perlより習得が難しい言語ってあるの? 私見では達人レベルを目指すならC++が全言語のなかで一番習得困難 そこそこのプロレベルを目指すならPerlが一番困難(C++はそこそこのプロならまだ簡単)
715 名前:nobodyさん [2008/01/13(日) 13:17:19 ID:rzzkvCmj] スレ間違えた( ゚д゚ )
716 名前:nobodyさん mailto:sage [2008/01/13(日) 21:52:12 ID:???] 配布用のスクリプトを書く予定なんですが、 変数名のつけ方で悩んでいます。 たとえば、 my $title; my $script_content_title; my $ScriptContentTitle; sub param{} sub parse_URL_encoded_string{} sub ParseURLEncodedString{} 等、色々書き方ありますが 短い方が良いのか、わかりやすい名前が良いのか、 又、大文字、小文字を混ぜて使うべきか、覚えやすい名前にするべきか、 意見ください。 賛否両論あると思いますが、極力万人受けするものを選びたいです。 長文すみません
717 名前:nobodyさん mailto:sage [2008/01/13(日) 21:53:50 ID:???] 配布スクリプトの中身の変数名なんて誰も見ねぇよ
718 名前:nobodyさん mailto:sage [2008/01/13(日) 21:56:06 ID:???] >>717 学習、改造用として配布したいんです。
719 名前:nobodyさん mailto:sage [2008/01/13(日) 22:43:42 ID:???] perldoc perlstyle
720 名前:nobodyさん mailto:sage [2008/01/13(日) 23:03:26 ID:???] 変数や関数の名前の付け方は、どんなプログラムを書こうとしている かというところもあるからな。 例えば、関数名で html_ をつけるとそうでないものとの区別がついて 分かりやすくなるけれど、全部の関数に html_ がついてたら 逆に無意味に長いだけとなる。 ここでアドバイスが欲しかったら、その書こうとしているプログラムや ソースをもう少し具体的にだすとかしないと話は進まないと思う。
721 名前:716 mailto:sage [2008/01/13(日) 23:22:17 ID:???] >>719 ありがとうございます。全部読みました。 基本的にはアンダースコアを使うべきだそうです。 スコープによって使い分けるのが良いみたいですね。 $Global_Data #グローバル $tmp #局所 $LOCK_KIND #定数 >>720 プログラムの種類によって書き方が変わる、変えられるのがperlの利点かもしれませんね。 >全部の関数にhtml_ そういうのはパッケージにまとめればOKですかね。 おかげ様で書き方が頭に浮かんできました。ありがとうございました。
722 名前:nobodyさん mailto:sage [2008/01/14(月) 02:09:11 ID:???] Perlプログラマは"不精"なので面倒なタイピングはしません。 でもPerlプログラマは"傲慢"なので他人のコーディングスタイルを気にしません。 こんなイメージ。
723 名前:nobodyさん mailto:あげ [2008/01/14(月) 02:26:48 ID:???] 怠惰と傲慢と短気だっけなラリーの三原則。 ネーミング重要。(高橋メソッド風に) でも職人芸的なところあるよねネーミングセンスって。 なかなかそこは難しい。
724 名前:nobodyさん mailto:sage [2008/01/14(月) 04:10:53 ID:???] 果たして自閉症の描くイメージとは
725 名前:nobodyさん mailto:sage [2008/01/14(月) 04:15:16 ID:???] >>716 もう解決したみたいだけど、Perlベストプラクティスもおすすめ ダミアン先生の盲信はいけないけど、かなりためになるYo
726 名前:nobodyさん mailto:sage [2008/01/14(月) 17:41:01 ID:???] ダミアン先生はPerl界屈指のハッカーだが、著作物での記述にクセが全くないわけではないからね。 一般論としては、上を目指すならいろんなハッカーのコードや文章にたくさん触れることが必要。 これがなかなか大変だし難しい。 そのためにはネット上のコミュニティーやリアルのイベントにこまめに参加したり ブログを定期的にチェックし続けないといけないから。 そういうことをしてない自称Perl使いが結構俺の周りにはいて、 そういう奴らは我流のあまりエレガントじゃないスタイルから抜け出せないでいる。
727 名前:nobodyさん [2008/01/14(月) 18:57:12 ID:4AKnbZN2] ファイルに入っている文字を出力するつもりなのですが、 メタ字が混ざっていることもあり、ちゃんと出力できません。 あらかじめファイルの中のメタ字に\を振って置くとしても、かなりの手間になりそうですし、 何か効率の良いメタ字対策はないでしょうか?
728 名前:727 [2008/01/14(月) 19:02:23 ID:4AKnbZN2] すみません。微妙に文書が狂っていました。 ファイルに入っている文字からの出力の際の 文字化けする文字の対策をお願いします。
729 名前:716 mailto:sage [2008/01/14(月) 20:00:43 ID:???] >>725-726 オライリーファンの俺には最高の本かもです。 >>727-728 余計な事してるからじゃないですかね? quotemetaなんてのはどうですか? 文字コードなんかも書くと返事もらえるかも。
730 名前:nobodyさん mailto:sage [2008/01/14(月) 20:08:53 ID:???] >>727 情報不足です。 「ファイルに入っている文字」…どんな文字? 文字コードは何? 「出力するつもり」…どこに出力するの? 「メタ字」…具体的にどの文字ですか? 「ちゃんと出力できません」…具体的にどのように出力できないのですか? ありがちなのは、ファイルの中と、コンソールの文字コードの設定が異なっていて、文字化けしたように見えるとか。 メタ文字をいったん解釈してしまっているとか。 ヌル文字とかタブとか垂直タブとかグループセパレータとかasciiの制御コードはそもそも「文字」ではないですし。 「文字」をどう「出力」したいのかにもよります。 コードを示してはどうですか。
731 名前:727 [2008/01/14(月) 20:18:57 ID:4AKnbZN2] $i = 0; while($list = <IN>){ (undef,$name[$i],undef) = split(/:/, $list); $i++; } @name = sort(@name); while($line = <@name>){ print "<option value='$line'>$line</option>"; } えーっと、コードはこのような感じです。 ファイルのDBにアクセスして、その中の一部を取り出しソートしてhtmlで出力するという形です。
732 名前:nobodyさん mailto:sage [2008/01/14(月) 20:21:10 ID:???] メタ文字がhtmlの解釈の問題を引き起こしてるんじゃないよね?
733 名前:nobodyさん mailto:sage [2008/01/14(月) 20:23:30 ID:???] metaタグで宣言している文字コードと異なるとか… html中で使われてる文字コードと出力してる変数の文字コードの不一致とか…
734 名前:727 mailto:sage [2008/01/14(月) 20:30:22 ID:???] >>733 タグで宣言しているコードは関係ないのではと思います。 出力するとき、一部の文字がうまく表示出来ていませんから。
735 名前:727 mailto:sage [2008/01/14(月) 20:32:56 ID:???] 現状としてはファイルの中の「ソ」とかに\を付けていけば表示はうまくいくのですが、 ファイルをその後書き換えたりするとそれも出来なくなるのではないかと思っております。
736 名前:nobodyさん mailto:sage [2008/01/14(月) 20:40:00 ID:???] これか?www.kentweb.jp/pubc/jcode/
737 名前:nobodyさん mailto:sage [2008/01/14(月) 20:46:05 ID:???] >>735 use utf8; binmode STDIN, ':encoding(shiftjis)'; binmode STDOUT, ':encoding(shiftjis)'; # windowsなら shiftjis -> cp932 ↑やってみて ソース中に日本語文字列書くならutf8で保存してね。
738 名前:nobodyさん mailto:sage [2008/01/14(月) 20:54:55 ID:???] あw binmode IN, ':encoding(shiftjis)'; かな?
739 名前:nobodyさん mailto:sage [2008/01/14(月) 20:57:33 ID:???] >>731 DBにアクセスしているのにファイルハンドルから@nameに格納しているとはいかに? @nameへの格納の仕方が心許ないです。せめて以下のようにするとか。 my @name = map { (split(/:/))[1] } <IN>; splitの対象が全角のコロンですが、perlソースと取り扱うデータの文字コードが合っていないと 間違いの元ですよ。 で、optionタグで書き出すべき文字列のリストが@nameに入っていて、それをどうしてグロブ 演算子を使っているのかわかりません。私はこんなこと一度もしたことありませんが…。 ここで、@nameの各要素がいったん解釈されてしまっていて、カタカナのソなどSJISの2バイト目の \x5cが取り除かれてしまっています。単に for (sort @name) { print qq{<option value="$_">$_</option>\n}; } でいいと思うのですが。
740 名前:nobodyさん mailto:sage [2008/01/16(水) 00:34:21 ID:???] CGI::Applicationで index.cgi?rm=<デタラメなキー> のように run_modesで定義されなかったrun_modeを指定するとエラーが発生させられてしまうのですが 未定義の場合デフォルトのrunmodeを起動させる方法は無いでしょうか?
741 名前:nobodyさん mailto:sage [2008/01/16(水) 02:08:57 ID:???] $self->run_modes( AUTOLOAD => \&catch_my_exception, );
742 名前:nobodyさん mailto:sage [2008/01/16(水) 02:17:14 ID:???] >>741 ありがとうございます!試してみます。
743 名前:nobodyさん [2008/01/16(水) 04:59:20 ID:FWbaTTLj] 5.005です。 以下のような、引数が省略可能なサブルーチンがあるとします。 sub Func(;$\@\%) { (省略) } このとき、引数が渡されたのか、それとも省略されたのかを Func内で判断する方法を教えてください。 なお、そのままifに入れると偽となるような値(例えばスカラーの値が0)の場合も、 引数が渡されていると判断します。
744 名前:nobodyさん mailto:sage [2008/01/16(水) 05:29:59 ID:???] >>743 引数の数から判定 sub Func(;$\@\%) { print scalar @_ } Func(); # 0 Func(undef); # 1 Func(1, @hoge); # 2
745 名前:nobodyさん mailto:sage [2008/01/16(水) 05:44:10 ID:???] >744 ありがとうございます。 なるほど、サブルーチンを使う時は常に@_を意識しないとダメだってことですね。
746 名前:nobodyさん mailto:sage [2008/01/16(水) 11:29:46 ID:???] @_ ってカタツムリみたいだよね。 @_ii
747 名前:nobodyさん [2008/01/16(水) 14:19:16 ID:Z4nycbhz] かたつむり大作戦
748 名前:nobodyさん [2008/01/16(水) 20:06:54 ID:L/Qn1HzA] 質問です! 入門書を見ながら「URLにパラメータを加える」というのをやりました。 〜〜/test.cgi?list=man とURLにパラメーターをくっつけ、cgiで &ReadParse( *form ); $sex = $form{ 'list' }; と受け取ったつもりだったのですが、結果をprintしてみると manman と2回表示されてしまいます。これは何が悪いのでしょうか?
749 名前:nobodyさん mailto:sage [2008/01/16(水) 20:30:55 ID:???] いるんだよ、自分で勝手に照会用のコードを切り詰める奴
750 名前:748 mailto:sage [2008/01/16(水) 20:51:36 ID:???] 失礼しました。手当たりしだい試してたら解決しました。 なんだか色々と間違ってたようです。
751 名前:nobodyさん [2008/01/16(水) 22:40:40 ID:QOevDgBW] CGIモジュール等を使わない、 一般的なuriデコードのバグってどんな事ですか? 同じkeyに複数のvalがある場合の対処はしてます。
752 名前:nobodyさん mailto:sage [2008/01/17(木) 00:41:41 ID:???] >>751 区切り文字が & でなく ; のときとか、マルチタイプで送られてきたときとか、XSS対策とかかな?
753 名前:nobodyさん mailto:SAGE [2008/01/17(木) 12:39:49 ID:???] ちょっと考えてみてほしい ドラゴンボールというのは、集めれば願いがかなうアイテムだ それに対して、 ウンコは、いくらドッサリ集めてもウンコにしかならない このように両者は一見似ているようで本質的に異なる
754 名前:nobodyさん mailto:sage [2008/01/17(木) 12:41:44 ID:???] >>751 巨大なクエリーとか、lengthがでたらめとかかな? # httpdの仕様にもよるな
755 名前:nobodyさん mailto:sage [2008/01/17(木) 17:15:28 ID:???] uriデコード?とは関係ないけど CGI.pm使うとmod_perl環境(Apache::RegistryやModPerl::Registry)で -ParseHeadersやPerlSendHeader offしてあってもheaderを正しく扱えるので CGIでもmod_perlでも動きます。ってプログラムが作りやすくなる。
756 名前:nobodyさん mailto:sage [2008/01/17(木) 17:17:24 ID:???] >>751 バグってどういうこと? 引数には、ある程度想定されるものしか入らないはずなんだから、 $form{'hoge'} とか、引数として使う値に想定される正しい値が入っているかのチェックを行えばいいんじゃないの?
757 名前:751 mailto:sage [2008/01/17(木) 18:58:22 ID:???] >>752 区切り文字はCGI.pmでも&か:ですよね。 >>754 cgi側では解決できないような感じしますね。 >>755 それは良いコト聞いた。 >>756 オライリーの本読んでたら一般的にバグがあるとの事です。 CGI..pm使えとの一点張りです。 なので、どこにバグがあるのかなと ← いまここ みなさんレスありがとうございます。
758 名前:nobodyさん mailto:sage [2008/01/17(木) 23:23:09 ID:???] とりあえず>>751 がド初心者だということは分かった。
759 名前:nobodyさん mailto:sage [2008/01/18(金) 00:48:01 ID:???] >>758 スレタイ読めカス
760 名前:nobodyさん [2008/01/18(金) 12:04:46 ID:Z4Jr4bli] ファイルをサーバにアップロードしたいCGIがほしいのですが どこかいいサンプルないでしょうか? アップロードしたいファイルはエクセルファイルです
761 名前:nobodyさん mailto:sage [2008/01/18(金) 12:15:45 ID:???] ぐぐれかす
762 名前:nobodyさん mailto:sage [2008/01/18(金) 12:39:13 ID:???] アップロードされたファイルのを受信するCGIなのか、 それともファイルをアップロードするCGIなのか知らんけど search.cpan.org/~gaas/libwww-perl-5.808/lib/HTTP/Request/Common.pm search.cpan.org/~lds/CGI.pm-3.33/CGI.pm#CREATING_A_FILE_UPLOAD_FIELD
763 名前:nobodyさん mailto:sage [2008/01/18(金) 12:51:11 ID:???] >>760 ちゃんとした日本語で
764 名前:nobodyさん mailto:sage [2008/01/18(金) 14:27:48 ID:???] アップロードしたがってるCGIが欲しいんだろ
765 名前:nobodyさん mailto:sage [2008/01/18(金) 15:13:46 ID:???] 意思を持つCGIコワス
766 名前:nobodyさん mailto:sage [2008/01/18(金) 16:38:38 ID:???] >>760 こんな感じですか? #!/usr/bin/perl use strict; use warnings; use utf8; use CGI qw/:standard/; use constant MAX_WAIT => 10; my $q = new CGI; $q->charset('utf8'); my $wait = rand(MAX_WAIT); my @mind = qw(uploadしたい uploadしたくない uploadしてもいい); my $mind = $mind[ int( rand(scalar @mind) ) ]; print start_html( -head => meta({-http_equiv=>'refresh', -content=>"10; URL=$ENV{SCRIPT_NAME}"}), -title => 'CGIの気持ち' ),$mind,end_html;
767 名前:nobodyさん mailto:sage [2008/01/19(土) 01:06:12 ID:???] >>766 $waitは、どこで使ってるの? -head => meta({-http_equiv=>'refresh', -content=>"$wait; URL=$ENV{SCRIPT_NAME}"}), とかやりたかったのか?
768 名前:nobodyさん [2008/01/19(土) 14:38:24 ID:gMv3rNuv] すみません、少し数学の話になるかもしれませんが、 100%の確率のうち30%が当たりという設定をして くじを引かせる場合、 my $rate = 30; my $atari = int((rand(100))) + 1; if($atari <= $rate){ print "あたり\n"; } これで30%ということに理屈ではいえるのでしょうか。 それとも上か下かなので2分の1になるのでしょうか。 ご教示いただけますと幸いです。
769 名前:nobodyさん mailto:sage [2008/01/19(土) 15:04:56 ID:???] 算数のレベルだぞ
770 名前:nobodyさん mailto:sage [2008/01/19(土) 15:25:31 ID:???] すみません
771 名前:nobodyさん mailto:sage [2008/01/19(土) 16:00:15 ID:???] >>768 そういうときは、そのコードを何万回か繰り返してあたりとはずれのカウントを取って、 実際に30%くらいになるかを調べればいいんですよ。
772 名前:nobodyさん mailto:sage [2008/01/19(土) 17:54:09 ID:???] >>768 極東連合乙
773 名前:nobodyさん mailto:sage [2008/01/19(土) 18:03:47 ID:???] >>768 10000回だけ繰り返してみた。 あたり=3031 はずれ=6969
774 名前:nobodyさん mailto:sage [2008/01/19(土) 21:24:36 ID:???] >>771 ありがとうございます。 >>773 実行有難うございます。 私の方でもやってみましたが、平均値が30%になりました。 安心しました。
775 名前:nobodyさん mailto:sage [2008/01/19(土) 23:16:40 ID:???] #!/usr/bin/env perl use strict; use CGI; use CGI::Carp qw(fatalsToBrowser); use POSIX qw(strftime); my $q = new CGI; print $q->header(), $q->start_html(); #print $q->dump; # for debug my $outputdir = "log"; # ファイルを置く先 (ディレクトリ) my $fh = $q->param('uploaded_file'); my ($ex) = ($fh =~ m|(\.[^./\\]+)$|); # 拡張子 if ($fh ne "") { my $timestamp = strftime "%y%m%d%H%M%S", localtime; my $outputfn = "$outputdir/$timestamp$ex"; open(F, "> $outputfn") or die; flock(F, 2); if (defined $fh) { while (<$fh>) { print F $_; } } close F; print qq{saved as <a href="$outputfn">$outputfn</a>}; } print $q->start_multipart_form(-name => 'myform'), $q->filefield(-name => 'uploaded_file'), $q->submit("OK"), $q->endform, $q->end_html(), "\n";
776 名前:760 mailto:sage [2008/01/19(土) 23:18:40 ID:???] ファイルをアップロードするCGIを探してます。 日本語おかしかったですね、すいません。 サンプルを探したんですが >>775 のままだったら ファイルをアップしたときにファイル名が アップロードした日付になってしまいます。 ファイル名を変更することなくアップロードするにはどうすればいいでしょうか?
777 名前:nobodyさん [2008/01/20(日) 00:14:39 ID:1RDcSYMg] my $outputfn = "$outputdir/$timestamp$ex"; のところを、そうじゃなくすれば良い。
778 名前:nobodyさん mailto:sage [2008/01/20(日) 00:15:00 ID:???] >>776 マルチタイプを分割して、そのヘッダ部分に名前あるよ。
779 名前:nobodyさん mailto:sage [2008/01/20(日) 02:12:08 ID:???] ついでにフォルダ名も表示してやれば、閑古鳥鳴くこと間違い無し。
780 名前:nobodyさん mailto:sage [2008/01/20(日) 03:03:09 ID:???] サーバにファイル名を任意に保存出来るって危険じゃね? 同名ファイルの処理が必要になるし、文字化けとかあるし。 文字化けとかしたら、ダウソとか出来なくなる場合もあるし、 削除とかはsshログインして * とか使って消さないといけなく なる場合もある。(解決は出来るから問題なしともいえるのだが) 日本語はファイルと一緒にコメントとして管理すべきだと思うけど、 どうかな?
781 名前:nobodyさん mailto:sage [2008/01/20(日) 10:25:46 ID:???] >>780 間違いなく正しい。
782 名前:nobodyさん [2008/01/20(日) 19:19:48 ID:xw354eHR] 上の人とは別人だけどファイルのアップロードに関して質問 open(OUT, ">$filename"); binmode(OUT); while (read($fh, $buf, 1024)) { print OUT $buf; } close(OUT); close($fh); 上記なソースをよく見かけるんだけど、 三行目で一気に処理するんじゃなくて、 1024バイトずつ取り出して処理する理由って何?
783 名前:nobodyさん mailto:sage [2008/01/20(日) 19:21:07 ID:???] 1000MBのバッファ蓄えろというのか
784 名前:775 mailto:sage [2008/01/20(日) 19:37:21 ID:???] >>777 具体的にどうかえればいいのでしょうか? 教えてくださいとはいいません。 やってください >>780 ご意見ありがとうございます。
785 名前:nobodyさん mailto:sage [2008/01/20(日) 20:21:40 ID:???] 完全に自分専用とかなら別なんだろうけどな。
786 名前:nobodyさん mailto:sage [2008/01/20(日) 22:56:33 ID:???] >782-783 に関連した便乗質問で悪いけど、 レン鯖とかも考えた時の常識的なメモリ使用量ってどのくらい? シュワルツ変換とか使っていいものかいつも悩む。
787 名前:nobodyさん mailto:sage [2008/01/20(日) 23:26:35 ID:???] >>786 「レンタルサーバ メモリ使用量」でぐぐってみたらどうかな? ま、突き詰めるとそのサービスの仕様次第となるだろう。 シュワルツ変換も「やってはいけない処理」ではなく、重たい処理 でしかないからな。それだけの質問では何もいえない。 具体的なソースを出して、この負荷は問題ないか?とかなら分かるが。
788 名前:nobodyさん [2008/01/21(月) 21:15:32 ID:29cYlZ80] input type=file で送るファイルを指定しますが、 この場合のファイル名そのものを取得するようにするには どのようにしたらよいですか?
789 名前:nobodyさん mailto:sage [2008/01/21(月) 21:26:25 ID:???] >>788 HTTP_CONTENT_TYPEを見て、boundaryで区切って分割して、そのヘッダを読む。
790 名前:nobodyさん [2008/01/21(月) 22:20:09 ID:29cYlZ80] >>789 有り難うございます よく分かりませんが、ヒントを元にくぐってみます
791 名前:nobodyさん [2008/01/21(月) 22:33:12 ID:MggCWroJ] toolkitについての質問です。 toolkitのテンプレートを利用ユーザに編集させてたいと思っているのですが、 [% myheader = 'my/index.cgi' %] [% INCLUDE myheader %] などされるとソースが見えてしまいます。 なんとか規制できないでしょうか? phpのsmartyであれば以下のように、テンプレートからのインクルードを規制することができます。 同等の機能はあるのでしょうか? $this->security = true; $this->security_settings["INCCLUDE_ANY"] = false; $this->security_dir = "/path/to/templates"; $this->trustes_dir = "/path/to/php"; または、テンプレート内で使える関数を指定できるとかありますでしょうか? 日本語マニュアル見てみましたが、それらしいものがありませんでした。 www.hakoniwa.net/tt/
792 名前:nobodyさん mailto:sage [2008/01/21(月) 23:09:44 ID:???] >>787 亀レスですみません。ぐぐってみました。 >782-783 のような流れをたまに見るので業界の暗黙知が あるのかと思いましたが特に無いようですね。 会社毎に見ていくと具体的な数字を出している所は少なかったですが、 少ないところで2MBと10Mb(=1.25MB?)でした。
793 名前:nobodyさん mailto:sage [2008/01/21(月) 23:29:51 ID:???] ムーアの法則があるので、数値は出しにくいところがある。 あるサーバで5秒くらいかかっていたのが、最新のでは1秒くらいで終わるので、 ぜんぜん問題にならなくなったとか。 でも、1分を1秒にするのはムーアの法則でも5年以上はかかるわけで、 そのくらいの規模はどう頑張っても無理だろという話だ。
794 名前:nobodyさん mailto:sage [2008/01/22(火) 09:20:05 ID:???] >>791 INCLUDE自体を抑制するやり方はわからんが、 If a BLOCK definition is not currently visible then the template name should be a file relative to one of the INCLUDE_PATH directo- ries, or an absolute or relative file name if the ABSOLUTE/RELATIVE options are appropriately enabled. これを利用すれば普通は十分じゃねーの?
795 名前:nobodyさん mailto:sage [2008/01/22(火) 10:10:27 ID:???] テンプレート編集自体はtoolkit使うわけじゃないだろ? そこでチェックすりゃいいんじゃね?
796 名前:791 [2008/01/23(水) 00:37:55 ID:fM6ljyqY] >>794 >もし、ブロック定義が見つからない場合は、テンプレート名はINCLUDE_PATHのディレクトリにあるファイルか、ABSOLUTE/RELATIVEオプションが付いていれば絶対/相対パスにあるファイルを対象とします。 とのことですが、相対・絶対でスクリプト指定できてしまうということですよね? 考えても理解できませんでした、具体的にどのように利用すれば大丈夫なんでしょうか? >>795 たしかにテンプレート編集時にinclude等、使わせたくない文言を削除する方法もあるのですが、 入れようとしているシステムが銀行ほどではないんですけど、絶対にユーザにソースが漏れてはいけないシステムなんです。 (今後のシステム拡張等も含んで)チェックミスが出てきやすい作りで作るのはあまり好ましくないと考えています。 html-templateでも、includeなど規制する機能はなさそうですし・・・。 使いたい機能はifとloopだけなんですけど、 perlでセキュリティ完備したテンプレートエンジンほかにあるのでしょうか?
797 名前:nobodyさん mailto:sage [2008/01/23(水) 09:55:40 ID:???] >>796 HTML::Template には no_includes ってオプションがあるけど?
798 名前:nobodyさん mailto:sage [2008/01/23(水) 10:07:27 ID:???] INCLUDE_PATH以下に見られちゃいけないファイル置かないという選択肢はないの?
799 名前:nobodyさん mailto:sage [2008/01/23(水) 10:27:22 ID:???] >>796 そんな大事なシステムをお前程度のスキルの人間が任されていることに 激しく不安を感じるのだが...
800 名前:nobodyさん mailto:sage [2008/01/23(水) 11:28:58 ID:???] INCLUDE_PATHに関数渡すと・・・
801 名前:nobodyさん mailto:sage [2008/01/23(水) 11:58:33 ID:???] >>796 anond.hatelabo.jp/20071030153111
802 名前:nobodyさん mailto:sage [2008/01/23(水) 14:51:21 ID:???] データベースにutf8でデータを入れて、携帯の絵文字対応のsjisで取り出そうとしようと思っています。 $s = Unicode::Japanese->new; $s->set($aaa); $str = $s->sjis-imode; という風に、perlで記述したところ、0という値しか返ってきません。ちなみに$aaaをそのままprintすると、文字化けします。 何がいけないのかよくわかりません。どなたかお答えいただけるとうれしいです。
803 名前:nobodyさん mailto:sage [2008/01/23(水) 14:59:42 ID:???] sjis-imodeが悪いと思うよ。sjis_imodeだろ。 $str = ($s->sjis) - 'imode'; と書いたのと同じだな。いちおうエラーにはならないが、 use strictとuse warningsを使ってればいろいろ怒られる のではまらないですむパターンの間違いなので、なぜ 使わなかったのかよく反省しとけ。
804 名前:nobodyさん mailto:sage [2008/01/23(水) 15:07:11 ID:???] さっそくのご返答ありがとうございます。 試してみましたところ、こんどは??????という文字列が返ってきました。 いま現在、iモードシュミレータを使って表示させているのですが、これは携帯を使ってテストしないのが悪いのでしょうか?
805 名前:nobodyさん mailto:sage [2008/01/23(水) 15:27:16 ID:???] >>804 iモードシミュレータとなるとそれはもはやPerlの話題ではないな。 適切なところへいって質問するほうがお互いのため。 その前に$strを16進ダンプ表示してみて期待したバイト列になってるか どうかぐらいは確認しといた方がいいとは思うが。
806 名前:791 [2008/01/23(水) 21:46:29 ID:fM6ljyqY] >>797-802 いろいろな案有難うございます。 一つづつ試してみます。 どうもありがとうございました。
807 名前:nobodyさん [2008/01/23(水) 23:17:40 ID:FgvU3OwA] だれか >>775 をいじってくれる 心のやさしくて暇なやつはおらんのか サーバに日本語のファイルをUPしたいんだ
808 名前:nobodyさん mailto:sage [2008/01/23(水) 23:18:24 ID:???] するなといわれてそれを納得しておいてなんだそれはw
809 名前:プログラミング歴2ヶ月 [2008/01/23(水) 23:19:54 ID:bNex267N] ローカルホストで動かしたときに、mkdirでディレクトリを生成できていたのに いざwebにアップロードしてみると、ディレクトリの生成をやってくれません。 この場合、原因として何が考えられるのでしょうか。 ちなみにperlのパスはあっています。 mkdirなどでググって見ても、よくわかりませんでした。。。 ヒントだけでもいいんで、どなたかよろしくお願いします。(_ _)
810 名前:nobodyさん mailto:sage [2008/01/23(水) 23:27:24 ID:???] >>809 まずはパーミッションの確認からだろうな。
811 名前:nobodyさん mailto:sage [2008/01/23(水) 23:52:28 ID:???] >>809 他には2階層以上のディレクトリはmkdirで作れないとかかな?
812 名前:プログラミング歴2ヶ月 [2008/01/24(木) 00:03:36 ID:+24Wb9Pu] >>810 ,811 さん ご親切にご教授いただきありがとうございます。 先ほど、パーミッションを変更したところ解決いたしまして、とても感謝しております。 しかしそれと同時に新たな問題が浮上してきまして、困っています。。。 mkdirを行った後に、とあるdatファイルに文章を出力しているのですが、 出力した後の改行コードが■になってしまいます。。。 こっちもローカルホストではうまくいっていたのに、なぜなんでしょう??
813 名前:nobodyさん mailto:sage [2008/01/24(木) 00:05:46 ID:???] 改行コードの違いかな? ttp://www.tohoho-web.com/wwwxx011.htm
814 名前:nobodyさん mailto:sage [2008/01/24(木) 00:28:39 ID:???] >>812 ヒント ・UNIXではLF、WindowsではCRLF。 ・\nはLR、\r\nがCRLF。 ・FTPのアスキーモードで転送すると自動相互変換してくれる。
815 名前:プログラミング歴2ヶ月 [2008/01/24(木) 00:53:36 ID:+24Wb9Pu] >>813 ,814さん 解決しました。ありがとうございました! マジに感謝してます。
816 名前:nobodyさん mailto:sage [2008/01/24(木) 10:27:32 ID:???] >>815 例えばxyzzyみたいに、改行コードを確認したり、変更できる テキストエディタを入れておいたほうがいいよ。
817 名前:nobodyさん mailto:sage [2008/01/24(木) 10:41:34 ID:???] サクラエディタおすすめ。
818 名前:nobodyさん mailto:sage [2008/01/26(土) 19:03:18 ID:???] 保守
819 名前:nobodyさん [2008/01/28(月) 12:09:42 ID:fVIm37qB] Perl初心者です。 簡単なPerl/CGIのプログラム(掲示板など)が書ける程度のレベルです。 mod_perlの超初心者向けの解説本、ウェブサイトがあれば教えてください。 できれば日本語でお願いします。 あと、今は退社された方が書いたらしい、現在稼動中のプログラムのソースを入手したんですが、 ソースの最後に exit; って思いっきり書いてたりするんですが、これって大丈夫なのでしょうか?
820 名前:nobodyさん mailto:sage [2008/01/28(月) 12:53:50 ID:???] multix.jp/html/memo/030526.html#00010801
821 名前:nobodyさん [2008/01/28(月) 15:21:58 ID:eRROoQGz] ありがとうございます。 これに関して、オーバーライドを利用したコードを書いているとき、 ある関数(この場合はexit)が、どのパッケージに属しているかを調べる方法があればお願いします。
822 名前:nobodyさん [2008/01/28(月) 16:14:02 ID:Fd8GryNX] ときどき見かけるcodepageというのはどういうものなんでしょうか。 たとえば、TeraTermPro with SSHの設定でcodepageというのがあります。 ほかにもありますがこれを例にとります。 ヘルプやgoogle検索で調べても引っかからないのでここでおたずねします。 locale=japanese codepage=932 だとどうもShift-jisの設定をなんらかの形でやるみたいです(付属ヘルプ)。 locale=japanese codepage=65001 だとutf-8みたいです。 それで、私のマシンはWindowsなので、codepage=932で統一しておけばいいんでしょうか。 ケースバイケースなのでしょうか。 相手マシンがFreeBSDで通信することがあるのですが、その場合は、 設定の漢字受信/送信ともutf-8でokですか?? unixだとeucとも聞きますが、最近はutf-8化したほうがいいようなことも聞きます。 ので、よくわかりません。 もちろん、ソースを何で書くかはケースバイケースなのは知っています。 分からないのは、TeraTermの設定で 漢字受信/送信 と codepage という2つのよく分からない項目がある点です。 TeraTermは有名なので当然スレがあるかと思ったらありませんでした。 それにperlプログラミングでよく登場するので、ここで質問させていただきました
823 名前:nobodyさん mailto:sage [2008/01/28(月) 16:22:56 ID:???] exitはダメだけどexit(0)なら大丈夫、 実はそう言われてるけど逆で、exit(0)はダメだけどexitなら問題ない、 最近のヤツはどっちでもいい(具体的なバージョンはか書かれてない)、 色々と情報が混ざってて、調べれば調べるほど混乱してきた orz
824 名前:nobodyさん mailto:sage [2008/01/28(月) 17:37:21 ID:???] 動いてんならいいじゃない
825 名前:nobodyさん mailto:sage [2008/01/28(月) 18:19:41 ID:???] そうします。
826 名前:nobodyさん mailto:sage [2008/01/28(月) 18:33:58 ID:???] UTF8の文字列で、全角ひらがなが入ってきた場合、全角カタカナに変換しようとしているのですが 思うように行きません。 $name =~ tr/ぁ-ん/ァ-ン/ 一度、sjisやらecuやらに変換して、文字コードで置換させないと駄目でしょうか
827 名前:nobodyさん mailto:sage [2008/01/28(月) 18:39:31 ID:???] UTF8ならむしろ文字コード変換しないほうが置換しやすくないか?
828 名前:nobodyさん mailto:sage [2008/01/28(月) 18:55:50 ID:???] >>826 そんなことはない。 use utf8してないとかdecodeしてなくて$nameがバイトのままとか そういうあたりじゃねーの? use utf8; binmode STDOUT, ":encoding(utf8)"; foreach (ord('ぁ') .. ord('ん')) { my $h = my $k = chr($_); $k =~ tr/ぁ-ん/ァ-ン/; printf "%x %s %s\n", $_, $h, $k; }
829 名前:nobodyさん mailto:sage [2008/01/28(月) 19:04:20 ID:???] >>822 > TeraTermは有名なので当然スレがあるかと思ったらありませんでした。 テラターム pc11.2ch.net/test/read.cgi/linux/1012915309/
830 名前:nobodyさん mailto:sage [2008/01/28(月) 19:21:58 ID:???] >>829 誘導thx!! いやースレタイ検索で引っかからなかったもんで。
831 名前:nobodyさん mailto:sage [2008/01/28(月) 21:13:04 ID:???] 確かにこりゃ罠だな……
832 名前:nobodyさん [2008/01/30(水) 17:37:10 ID:irpAKk1D] ActiveperlでローカルPC上に作成したWEBサイトにIE等でアクセスし、 その処理結果をファイルにしてデスクトップ上に出力したいのですが、 デスクトップまでのパスをどう取得すればいいか分かりません。 ログインユーザ毎にデスクトップのパスが変わってしまうので、 そのあたりを上手く解決できる方法があれば知りたいです。
833 名前:nobodyさん mailto:sage [2008/01/30(水) 18:10:39 ID:???] perlとは関係ないがユーザ毎に環境変数ってのが存在する
834 名前:nobodyさん mailto:sage [2008/01/30(水) 18:43:24 ID:???] use strict;use warnings; use Win32::OLE; my $sh = Win32::OLE->new('WScript.Shell'); print $sh->SpecialFolders("Desktop"); use strict;use warnings; use Win32 qw/CSIDL_DESKTOP/; print Win32::GetFolderPath( &CSIDL_DESKTOP );
835 名前:nobodyさん [2008/01/30(水) 21:04:32 ID:FClDhuIR] require Hoge; は通るんですが、 no strict 'refs'; require "Hoge"; が通りません。Can't locateとなります。 文字列からrequireするにはどう書いたらよいでしょうか。
836 名前:nobodyさん mailto:sage [2008/01/30(水) 21:12:10 ID:???] Hogeってのを用意すればいい
837 名前:nobodyさん mailto:sage [2008/01/30(水) 21:17:18 ID:???] どうもです。 Hogeはあるつもりなんですが、前者と後者は同じものを指してないですか?
838 名前:nobodyさん mailto:sage [2008/01/30(水) 21:29:04 ID:???] 拡張子を省略していたせいだった気がしました。ありがとうございました。
839 名前:832 mailto:sage [2008/01/30(水) 21:59:46 ID:???] >>833 システム環境変数とユーザー環境変数ってやつですよね。 ここにあらかじめデスクトップへのパスを設定するという事でしょうか? >>834 ソースありがとうございます。 実際に実行してみたんですが、CGIとして実行すると SYSTEM ユーザ名義で実行され、ログインユーザでのパスが取れませんでした。 DOS窓から実行するとバッチリなんですが…。 少し調べた所、WMIで実現できそうな気がしてきたので そちらを当たってみようと思います。ありがとうございました。
840 名前:nobodyさん mailto:sage [2008/01/30(水) 22:29:21 ID:???] 3年ぶりくらいにPerlを使ってみたのですが、 以前は日本語の検索の時、EUCを使わなくてはいけないとかあったと 思いますが、普通にshift-jisで書いて、パターンマッチも問題なし だったのですが、今のバージョンのPerlは文字コードとか気にしなくて 良くなりました?それともたまたま文字化けしなかっただけ?
841 名前:nobodyさん mailto:sage [2008/01/30(水) 22:53:08 ID:???] >>840 これを実行してみたらどうなる? print "表現"; print '表現';
842 名前:nobodyさん mailto:sage [2008/01/30(水) 23:05:02 ID:???] >841 だめっすね。 まだjcode.plとか使ってるんですかね。 実は全てunicodeで問題なくなったりしてますか? 日本語のパターンマッチで注意することとかまとめた いいページ知ってたら教えてください。
843 名前:nobodyさん mailto:sage [2008/01/30(水) 23:12:08 ID:???] >>842 一部の文字列を使う時だけ注意をして、POSTで受け取った文字列を jcode.pl 使うという程度でも、Shift-JISでいけることはいける。 ttp://www.shtml.jp/mojibake/sjis_cgi.html
844 名前:nobodyさん mailto:sage [2008/01/30(水) 23:19:37 ID:???] >843 thxです。しばらく離れていましたが、少し思い出しました。 結局Perlはその間進化していなかったのね。
845 名前:nobodyさん mailto:sage [2008/01/30(水) 23:19:46 ID:???] クライアント、サーバ共にWindowsで、SQLServerとVB使っている システムでも記号とか入力しようとすると駄目な場合もあるからな。 シビアに全部に対応とか考えなくても良いのではと思ったり。
846 名前:nobodyさん mailto:sage [2008/01/30(水) 23:22:28 ID:???] >>844 Perl は 5 が出てから結構経っているはずだよ。 3 年前に触ったのも 5 じゃないかな? そこまで大きな変化が無いからこそ、という メリットももあるんだけどね。 次に 6 には、構文とか大きな変化があるらしいから そっちに期待だなw
847 名前:nobodyさん mailto:sage [2008/01/30(水) 23:45:06 ID:???] たとえば This is a pen.という入力があって、 「This」にマッチしたら、 htmlの色のタグを付けて<font color>This</font>と置換する場合、 これをやると次に「This is」に色を付けたい場合マッチしなくなる のですが、上手いやり方あります? 先に「This is」の置換を する位しか思いつかない。
848 名前:nobodyさん mailto:sage [2008/01/31(木) 01:44:59 ID:???] 検索に使うデータは別に持っておくというのはどうだろうか。 Thisにマッチしたとき、 いきなり This → <tag>This</tag> と変換するのではなく、例えば「1番目の単語にマッチした」という情報だけ保存しておく。 で、最後にまとめて置換する。 Perlの持つ強力な文字列操作が活かされないという欠点はあるが。
849 名前:nobodyさん mailto:sage [2008/01/31(木) 07:23:10 ID:???] $in_str = "This is a pen."; $out_str = '<font color="red">' . $in_str . "</font>"; ここで $str に検索対象の文章を入れる。 $str =~ s/$in_str/$out_str/g;
850 名前:nobodyさん mailto:sage [2008/01/31(木) 09:05:07 ID:???] >849 それ同一箇所を何度も置換する場合でも大丈夫?
851 名前:nobodyさん mailto:age [2008/01/31(木) 09:23:09 ID:???] >>850 具体的にどういう場合?
852 名前:nobodyさん mailto:sage [2008/01/31(木) 09:59:40 ID:???] >849 <tag>This</tag> is a pen. が$strに入ったら、次にThis isは一致しないでしょ?
853 名前:nobodyさん mailto:sage [2008/01/31(木) 10:21:21 ID:???] 優先度つけて順番にやるしかない その優先度はあなた次第だもの。
854 名前:nobodyさん mailto:sage [2008/01/31(木) 12:45:35 ID:???] s/This is|This/REPLACEMENT/gみたいなことしたいんだろうか? 一括してやるなら長い方を先にすればいい
855 名前:nobodyさん mailto:sage [2008/01/31(木) 13:03:27 ID:???] This is a pen. ↓ <tag>This is</tag> a pen. このあとに、「tag」というフレーズで検索する可能性は否定できない。 いや、細かくマッチ条件つければ別だろうけど。
856 名前:nobodyさん [2008/01/31(木) 21:12:55 ID:ZyBf2Z6K] 配列と文字を引数とする場合の書き方がよく分かりません。できるのでしょうか? 以下のようにやってもだめでした。 &subtest(@arr,$str,@arr2); function () { my (@arr,$str,@arr2) = @_; }
857 名前:nobodyさん mailto:sage [2008/01/31(木) 22:22:57 ID:???] >>856 (@arr,$str,@arr2)は新しい配列として扱われるので、サブルーチン側では区切りが分からん。 arrとarr2は参照を渡すとか、要素数が分かってるならサブルーチン側で@_をspliceするとかがいいかも
858 名前:nobodyさん mailto:sage [2008/02/01(金) 00:10:05 ID:???] >845 長い方を先にした場合、 ThisとThis isとis a penがあって、 結論は<font>This is a pen</font>に色を付けたいのだ。 848の方法かなぁ。 ただ、入力テキストが100M位、マッチする検索リストが1万個とかなので、 動かせるか・・・。 Perlよりwordマクロとかの方がいいのかなぁ。 wordなら何度重なって色付けても問題ないし・・・。
859 名前:nobodyさん mailto:sage [2008/02/01(金) 00:32:08 ID:???] >>856 ヒント:リファレンス
860 名前:1/2 mailto:sage [2008/02/01(金) 03:03:29 ID:???] >>858 途中まで書いてまじめにやると面倒だという事は分かった。 あとは頑張ってくれ。 #!/usr/bin/perl -w use strict; my $str = 'This... This is, This is a pen.'; my @target = ('This', 'This is', 'is a pen'); my $tag_o = '<font color="#ffff00">'; my $tag_c = '</font>'; my $tag_r = qr|</?font[^>]*>|; my $tag_e = qr/(?:(?!$tag_r).)*/s; for (@target) { my $re = join qr/(?:$tag_r)*/o, split /(\s+)/; $str =~ s/($re)/add_tag($1)/eg; } print $str;
861 名前:2/2 mailto:sage [2008/02/01(金) 03:04:31 ID:???] sub add_tag { my $substr = $_[0]; if ($substr !~ /$tag_r/o) { $substr = "$tag_o$substr$tag_c"; } elsif ($substr !~ /\Q$tag_o\E/o) { $substr =~ s/(\Q$tag_c\E)/$1$tag_o/go; $substr .= $tag_c; } elsif ($substr !~ /\Q$tag_c\E/o) { $substr =~ s/(?=\Q$tag_o\E)/$tag_c/go; substr($substr, 0, 0) = $tag_o; } elsif ($substr =~ /^($tag_e)\Q$tag_c\E($tag_e)\Q$tag_o\E($tag_e)\z/o) { $substr = "$1$2$3"; } elsif ($substr =~ /^($tag_e)\Q$tag_o\E($tag_e)\Q$tag_c\E($tag_e)\z/o) { $substr = "$tag_o$1$2$3$tag_c"; } else { die $substr; # ココを頑張ってくれ。 } $substr =~ s/\Q$tag_c$tag_o\E//go; $substr; }
862 名前:nobodyさん [2008/02/01(金) 04:53:15 ID:hS8kNEG7] if(A1 < B1 && A2 < B2 && A3 < B3 && A3 < B3 && A4 < B4) { $page_dsp .= <<"EOM"; <tr> <td colspan="2" > <form action="????.cgi" method="post" onSubmit="return send_check()"> <select name=ku class=slc> <option value="no"> EOM #この中の条件式(ifの条件付オプション)は省略 {$page_dsp .= "<option value=\"1\">\n"; } $page_dsp .= <<"EOM"; </select> <input type=hidden name=back value="no"> <input type=hidden name=id value="$kid"> <input type=hidden name=pass value="$kpass"> <input type=hidden name=mode value="ku"> <input type=submit class=btn value="オン"> </td></form></tr> EOM } else{$page_dsp .= "<tr><td colspan=2 align=center>終わり</td></tr>\n"; } 以上のように、最初の5つの条件 (各々全部の、左の数値が右の数値と同じかそれ以上の時にセレクトを非表示) で動かしたいのですけど、5つの条件中3つの条件しか満たしてないのに非表示に なります。 条件が5つ揃ってから非表示にするにはどうすればいいですか? ご教授お願いします。
863 名前:nobodyさん mailto:sage [2008/02/01(金) 05:30:16 ID:???] 落ち着け
864 名前:nobodyさん mailto:sage [2008/02/01(金) 07:45:40 ID:???] >>862 それはない。他にミスがあるはず。
865 名前:nobodyさん [2008/02/01(金) 16:52:45 ID:hS8kNEG7] 命令が作動しなかったのは今回は説明で省略した命令(ifの条件付オプション)と 最初の5つの命令との相性が悪かったからかもしれませんね。 省略した部分内には、最初の5つの命令を一個ずつ(計5個)指定して、条件が満たされるごとに オプション項目が一つずつ消えていき、全部満たしたら最初の5つの命令でセレクト ごと非表示にするつもりでいたんです。
866 名前:nobodyさん mailto:sage [2008/02/01(金) 16:54:10 ID:???] 相性とな?
867 名前:nobodyさん mailto:sage [2008/02/01(金) 16:55:34 ID:???] バルクメモリさしたら動かなかった 相性が悪かったということだな
868 名前:nobodyさん mailto:sage [2008/02/01(金) 19:03:10 ID:???] >>862 まずは、配列の勉強頑張れ。
869 名前:nobodyさん mailto:sage [2008/02/02(土) 05:09:34 ID:???] 修士出たら就職を考えている現在3回生の情報の学生でperlが一番すきですが、 今年に入ってからいろいろと求人情報を集めてみたところperlの仕事少ないですね 噂には聞いてましたが、僕は何が何でもperlを仕事にしたいのです まあそれはおいといて、perlを仕事としてみたときどんな感じですかね? 皆さま先輩方の多くはperlを仕事としていらっしゃると思ったので、 是非とも業務内容、他言語と比べたときの待遇、仕事のやりがいなどなど、 ポジティブな意見(勧め)もネガティブな意見(愚痴)も生の声としてお聞かせ願えればと存じます。
870 名前: ◆TWARamEjuA mailto:sage [2008/02/02(土) 07:42:12 ID:???] perlを仕事にするところはほとんど無いと断言できるです。 仕事の中でperlを使うことはたくさんの現場であるです。 おいらは今、製造業の中でperlを利用しています。 昨今の機器はLANでデータを採取できたりします。 それを高ぁーいWindows専用のアプリでデータ加工することなく、unix(含むlinux)なサーバにてcronでデータ採取・計算・加工してDB(DB_Fileで充分)に登録。(もちろんperlで) そいつを拾ってエクセルに貼り付けるだけ(もしくはSpreadsheet::Writeで書き込むも良し)でもデータの共有が出来たりします。 記録計のようなグラフを作るにしてもGDだけで充分。 部品の計測をするのでも、今時のマイクロメータは数値をUSBで送ってくれる物があったりします。(USBテンキーみたいな出力をしたりする) それをExcelにちまちま放り込むよりか、単純テキスト(csvでも良いけれども)で保存して、perlを使っていろんな形や計算をさせることも出来たりします。 以前勤めていたWEB屋(主にデザインやHTML書き)でも、Excelのデータを1件1HTMLファイルに変換する作業がありました。 (その求人に応募したのだ(照)) 3000件近いデータを変換すると云うことで、2-3か月近い工程を組まれていたことがありました。 どうやら手動で書き換え作業をと目論んでいたようです。 けれどもデータ構造と特性を見極めるのに2日、それを変換するperlスクリプトを2日、変換作業たったの10秒って事がありました。 その当時、その部署の長は目を丸くしていましたです。 まだまだperl=CGIっていう感覚で居られたからです。 その後、ちまちまと元データ(Excel)の修正が入ってきても数秒で修正完了。 デザイン変更があってもテンプレートを書き換えるだけでおしまい。 あまった2-3か月の期間、他の仕事を色々とこなしていました。 ようは仕事に使う道具の1つとしてperlというのを持っていればどんな業種にでも使えるんじゃないかな。 そんなこともあって製造業の現場であるにもかかわらず、おいらのところにだけは使い慣れたMacOSX(iMacG5)なんてのを無理を聴いて貰って備え付けましたですです♪
871 名前:nobodyさん mailto:sage [2008/02/02(土) 11:18:13 ID:???] perlを仕事で使うなら修士はオーバースペック。 高卒で十分な土方に好き好んで修士雇う経営者がいるのか?
872 名前:nobodyさん mailto:sage [2008/02/02(土) 11:21:37 ID:???] 修士雇う経営者がいないなら高卒って言えばいいだけのこと そんなこともわからないのか?
873 名前:nobodyさん mailto:sage [2008/02/02(土) 12:03:51 ID:???] perl土方は頭悪いな。 高卒で足りる仕事には高卒の賃金しか払わないという事だよ。
874 名前:nobodyさん mailto:sage [2008/02/02(土) 13:18:25 ID:???] >>872 それ、学歴詐称にあたるんじゃないの? ちょっと前、問題になったでしょ。
875 名前:nobodyさん mailto:sage [2008/02/02(土) 13:33:00 ID:???] perl土方は新聞を読まない。
876 名前:nobodyさん mailto:sage [2008/02/02(土) 13:46:46 ID:???] WEB系いきゃいいんじゃないの? 個人的にはなにがなんでもPerlとかいってるPerl使いは嫌だけど
877 名前:nobodyさん mailto:sage [2008/02/02(土) 14:25:02 ID:???] Perlがちょっとくらいできても仕事ねえぜ、と修士出の自宅警備員が言ってみる。 >>874 それ公務員ね。試験区分に対象の学歴があってそれに沿うことが望ましいとされてるから。 というかこれマ板のネタだろ。
878 名前:perl好き情報3回生(本物) ◆qqt5.0NxB6 mailto:sage [2008/02/02(土) 14:40:08 ID:???] ちょっと失礼します。 僕はWebprog板に>>869 と同一内容の書き込みをした者です。 >>869 は偽者であって僕がマルチポストをしたのではないことを明言しておきます。 トリップをつけたので本物しか相手をしないようお願いいたします。 迷惑をおかけして申し訳ありません。 お騒がせしました。
879 名前:nobodyさん mailto:sage [2008/02/02(土) 15:45:41 ID:???] 質問です。XML::RSSを使って、外部から取得したRSSを加工してHTML(euc-jp)に出力しているのですが、 一部の記号(それも機種依存文字含む)が文字化けします。 − → \x{ff0d} o → \x{339c} 機種依存文字に関しては、根本的に対応することに意味があるのか疑問ですが、せめてwindowsな環境で 文字化けしないようにしたいのです。どうしたらいいでしょうか? あんまし分かっていませんが、重要そうな部分だけ。 use XML::RSS; use LWP::Simple; use encoding 'euc-jp', STDOUT => 'euc-jp'; use open IN => ":encoding(euc-jp)"; use open OUT => ":encoding(euc-jp)"; binmode OUT => ":encoding(euc-jp)"; my $rss = new XML::RSS; $rss->parsefile($site_file); my $item_list = $rss->{'items'}; $item = ${$item_list}[0]; my $desc = $item->{'description'}; #一応対策っぽいことをやって一部の記号には対応できた $desc =~ tr/\x{005C}\x{00A5}\x{2014}\x{203E}\x{2225}\x{FF0D}\x{FF5E}\x{FFE0}\x{FFE1}\x{FFE2}/ \x{FF3C}\x{FFE5}\x{2015}\x{FFE3}\x{2016}\x{2212}\x{301C}\x{00A2}\x{00A3}\x{00AC}/;
880 名前:879 mailto:sage [2008/02/02(土) 15:48:16 ID:???] ちなみに、 〜 → \x{FF5E} に化ける問題は、一番下に書いた置換で解決したのですが、\x{FF0D}は何故かそのまま 文字化けしたままです…
881 名前:879 mailto:sage [2008/02/02(土) 15:55:11 ID:???] すいません、>>880 は単純ミスでした、取り消します。
882 名前:879 mailto:sage [2008/02/02(土) 15:57:31 ID:???] 忘れていました。エラーメッセージが出ます。 hogehoge.cgi: "\x{ff0d}" does not map to euc-jp at hogehoge.cgi line 183.
883 名前:nobodyさん mailto:sage [2008/02/03(日) 01:13:34 ID:???] 求人ってほとんどPHPだよなぁ。プラスDreamWeaverの使用をセットで。 perl使ってるところはライブドアとかはてなとか高レベルに使いこなしてるところばっかり。 初〜中級のところは全部PHPになってしまった。
884 名前:nobodyさん mailto:sage [2008/02/03(日) 03:35:42 ID:???] モバイルならPerlも使ってるとこそこそこあるんでないか
885 名前:nobodyさん mailto:sage [2008/02/03(日) 11:14:58 ID:???] 正規表現とか以外なら、構文同じなんだからすぐに移植できるだろ。 あとはPEARとかを使いこなせればいいわけだから、Perlの基礎がある のなら、1週間程度で、出来るといえるんでね? Perlで作ったコードをPHPに移植して、これ、私が作りました、みたいな。
886 名前:nobodyさん mailto:sage [2008/02/03(日) 12:57:34 ID:???] PEARってperlでいうCGI.pmみたいなもん?
887 名前:質問 [2008/02/03(日) 13:04:56 ID:34/ZwImQ] このスレでよいかわかりませんが・・・ 項目を選択しボタンをクリックすると、あるページには選択した項目の画像ファイルを表示し、 もうひとつのページにはその選択した項目を表示させたいのですがどうしたらよいでしょうか? 最初のページには <form action="A.cgi" target="表示させたいページ"> を埋め込んでいるのですが、当たり前ですがこれだと"表示させたいページ"にしか表示できません。 A.cgiのなかでさらにこの部分だけは他のページへ表示させるとかできませんか?
888 名前:nobodyさん mailto:sage [2008/02/03(日) 14:09:58 ID:???] >>886 CPANじゃね?
889 名前:nobodyさん mailto:sage [2008/02/03(日) 14:12:18 ID:???] >>887 それは、Perlの話じゃなくて、htmlの話じゃないの? フレームタグを使って区切るか、テーブルタグを使って全部を表示させる方法がある。 板違いなので、これ以上の質問はしないように。
890 名前:nobodyさん mailto:sage [2008/02/04(月) 03:22:50 ID:???] >>879 メッセージのとおりで、変換表に該当するものがないんでしょ。 euc-jpMSとか使わないといけないんじゃないの?
891 名前:nobodyさん mailto:sage [2008/02/07(木) 12:55:00 ID:???] perl 5.8.5 CentOS 5.1 「out of memory」のときのエラーハンドリングの方法を教えてください。 dieのときは $::SIG{__DIE__} = sub {〜〜〜}; でいけることまではわかったのですが 「out of memory」がハンドリングできないのです。 よろしくおねがいします
892 名前:nobodyさん mailto:sage [2008/02/07(木) 15:49:01 ID:???] OSの制限だから、ハンドリング考えるよりコード見直す。 それができないのなら、OSの制限上げる。メモリ積む。
893 名前:nobodyさん mailto:sage [2008/02/07(木) 19:10:28 ID:???] perl5.8 my @value=(0,1,3,8); #任意のkey my @hoge=('hoge1','hoge2','hoge3'....); #表示用配列 my $disp; foreach (@value) { $disp .= ',' if $disp; $disp .= $hoge[$_]; } という処理をしているんですが、これってJOINでできませんか? map使ってもこれより簡単に書けないですよね?
894 名前:nobodyさん mailto:sage [2008/02/07(木) 19:28:15 ID:???] こういうこと? my @value = (0, 1, 3, 8); my @hoge = ('hoge1', 'hoge2', 'hoge3', 'hoge4', 'hoge5', 'hoge6', 'hoge7', 'hoge8', 'hoge9'); print join ',', @hoge[@value];
895 名前:nobodyさん mailto:sage [2008/02/07(木) 20:34:51 ID:???] >>894 おお。ありがとうございます。コードがすっきりします^^
896 名前:nobodyさん mailto:sage [2008/02/08(金) 09:47:17 ID:???] すいません。もう一点。 my $value = "0,1,3,8"; my @hoge = ('hoge1', 'hoge2', 'hoge3', 'hoge4', 'hoge5', 'hoge6', 'hoge7', 'hoge8', 'hoge9'); これは join ',',@hoge[sprit',',$value]; ですよね? splitしてjoinして勿体無い感じ。。
897 名前:nobodyさん mailto:sage [2008/02/08(金) 10:08:10 ID:???] splitとspliceは別物
898 名前:nobodyさん mailto:sage [2008/02/09(土) 18:24:58 ID:???] valueがスカラーで入れなきゃ一回joinで済む話。
899 名前:nobodyさん [2008/02/11(月) 09:15:09 ID:7AZat8M4] ファイルの最後の行番号を取得したいんですが、 my $endline = $. while (<FH>); としてとりえず取得できたんですが、 その後 seek FH,0,0; として、また1行目から別の処理したいんですがうまくできません。 seekの戻り値をprintしてみると1を返してますが、先頭には戻ってないようです。 windows環境なのが原因でしょうか?
900 名前:nobodyさん mailto:sage [2008/02/11(月) 09:31:45 ID:???] my $endlineだと局所化されて外側で取得できなくない? seekしても$.はリセットされないから先頭に巻き戻したら$.= undefとかすればいい
901 名前:nobodyさん mailto:sage [2008/02/11(月) 11:26:23 ID:???] >>900 さんレスありがとうございます。 >局所化 あ、ほんとだ。ミスってました。 undef $.; reset $.; それぞれ試してみましたが変化ありませんでした。 その後に while (<FH>) { if ($. == $bigin .. $. == $end) { といった処理をしたいんですが、どうもうまくいきません。
902 名前:nobodyさん mailto:sage [2008/02/11(月) 11:49:03 ID:???] $. = 0;としたらうまくいきました。 ありがとうございました。
903 名前:nobodyさん mailto:sage [2008/02/12(火) 21:28:15 ID:???] 文字コードについて質問します。 utf-8から7bitJISへの変換なのですが、(メール送信のため) Encode.pmもJcode.pmもローマ数字をJISにしてくれません。 Encodeでは「\x{2160}」と変換不可の場合のユニコード値に変換され、 Jcodeでは「?」になります T(ローマ数字1) \xE2\x85\xA0 utf8 → \x1B\x24\x42\x2D\x35 JIS と手動で変換してやれば良いのですが、escシーケンスの処理がどうしたものかと・・・
904 名前:nobodyさん mailto:sage [2008/02/12(火) 23:23:01 ID:???] use lib '../lib'; のように相対パスを使うと出来るけど use lib '/i/cgi-bin/lib'; のように絶対パスを使うと動かなくなります サーバーの設定によって絶対パスだと読み込めなかったりするんでしょうか 普通のリンクだと絶対パスでリンクできます
905 名前:nobodyさん mailto:sage [2008/02/12(火) 23:31:03 ID:???] >>904 本当にそれが絶対パスであれば使えると思うのだが、おそらく違うんだと思う。
906 名前:nobodyさん mailto:sage [2008/02/13(水) 02:37:13 ID:???] >>904 perlから使う絶対パスはwebサイト上の絶対パスじゃないよ。 ・ http鯖がルートとして扱うディレクトリからの絶対パス ・ 鯖のOSの絶対パス の違いを理解しような。
907 名前:nobodyさん mailto:sage [2008/02/13(水) 02:39:50 ID:???] >>903 JISとかISO-2022-JPにはローマ数字はないから。 Encode::EUCJPMS - Microsoft Compatible Encodings for Japanese - search.cpan.org search.cpan.org/~naruse/Encode-EUCJPMS-0.07/EUCJPMS.pm あたりをいれて、cp50220 とか cp50221 で変換する。
908 名前:906 mailto:sage [2008/02/13(水) 10:48:35 ID:???] 有難うございます 調べてみます
909 名前:904 mailto:sage [2008/02/13(水) 10:49:51 ID:???] >>906 でした
910 名前:nobodyさん mailto:sage [2008/02/13(水) 12:25:12 ID:???] >>907 ありがとうございます Encode::EUCJPMSモジュールをいれて、 use Encode::EUCJPMS; use Encode; my $cp50220_str = Encode::from_to( $utf8_str , "UTF8" , "CP50220" ); で良いのでしょうか? 実はフォーム入力はShiftJISでして、CP932からutf-8に一旦エンコードしています。 これで問題はないでしょうか?
911 名前:nobodyさん mailto:sage [2008/02/14(木) 02:49:22 ID:???] >>910 UTF-8に変換するときにエラーになってなきゃ大丈夫なんじゃない? 〜 あたりが微妙ではあるけど。
912 名前:nobodyさん [2008/02/14(木) 10:56:12 ID:AY3pAm1W] 教えてください。サーバではなくて、自分のPCにPerlをインストールしています。 #!/usr/bin/perl use strict; print "IEを起動します...\n"; system("C:/Program Files/Internet Explorer/iexplore.exe"); exit; __END__ 上のようにすると、IEは起動するのですが、コマンドプロンプトは残ったままで タスクマネージャーにも perl.exetが残っています。(残るというか待ってるようですが…) IEを起動したあとはPerlも終了して欲しくて検索したらexecというのがあったので exec("C:/Program Files/Internet Explorer/iexplore.exe");としたら起動しませんでした。 IE起動後速やかにPerlを終了させるにはどうすれば良いでしょうか。 PerlはActivePerl 5.8.8をインストールしました。 もう一つは、my $url = 'www.google.co.jp/ '; とした時に IEにこの$urlを開かせるにはどうすればよいのでしょうか。よろしくお願いします。
913 名前:nobodyさん mailto:sage [2008/02/14(木) 11:58:11 ID:???] ヒント: system("start", $url);
914 名前:nobodyさん mailto:sage [2008/02/14(木) 12:23:37 ID:???] >>913 うわぁぁ。ありがとうございました!
915 名前:nobodyさん mailto:sage [2008/02/14(木) 12:27:34 ID:???] /\___/ヽ ヽ / ::::::::::::::::\ つ . | ,,-‐‐ ‐‐-、 .:::| わ | 、_(o)_,: _(o)_, :::|ぁぁ . | ::< .::|あぁ \ /( [三] )ヽ ::/ああ /`ー‐--‐‐―´\ぁあ
916 名前:910 mailto:sage [2008/02/14(木) 12:58:24 ID:???] >>911 ありがとうございます。 「〜」は手動でE3 80 9Cに置き換えています。 では教えていただいた方法でやってみようと思います。
917 名前:nobodyさん mailto:sage [2008/02/14(木) 15:13:40 ID:???] fedora8なマシンで監視装置をでっち上げようとしています Net::SMTPについて教えて下さい use Net::SMTP; my $smtp = Net::SMTP->new( $mailhost ); $smtp->mail( $MailFrom ); $smtp->to( $MailTo ); $smtp->data(); $smtp->datasend( "From: $MailFrom\n" ); $smtp->datasend( "To: $MailTo\n" ); $smtp->datasend( "Subject: $e_subject\n" ); $smtp->datasend( "Mime-Version: 1.0\n" ); $smtp->datasend( "Content-type: text/plain; charset=ISO-2022-1\n" ); $smtp->datasend( "Content-transfer-encoding: 7bit\n" ); $smtp->datasend( "Reply-to: $MailFrom\n" ); $smtp->datasend( "$body\n" ); ここでbodyに例えばtestdataと入れると$bodyもメールとして届くのですが、 $bodyをtest:dataとする(半角コロンが入っている)と、$bodyが送られません 何が悪いのかご教示下さい
918 名前:nobodyさん mailto:sage [2008/02/14(木) 15:18:19 ID:???] 半角コロン
919 名前:nobodyさん mailto:sage [2008/02/14(木) 15:28:13 ID:???] つ[ $smtp->datasend( "\n$body\n" ); ]
920 名前:917 mailto:sage [2008/02/14(木) 15:31:16 ID:???] >>919 できました ありがとう ( ;∀;)
921 名前:919 mailto:sage [2008/02/14(木) 15:57:21 ID:???] >>920 よかったな。 バグった状態だと$bodyが送られてこないんじゃなくヘッダに入ってたはず。 メールヘッダと本文の切り分けは「半角コロンが入ってない行が登場した所から本文」って事になってるから、 どんな文が入るか分からん時は、ヘッダの最後に空行を入れれば桶。基本なんで覚えとくと便利。
922 名前:917 mailto:sage [2008/02/14(木) 16:25:19 ID:???] >>919 覚えておきます ありがとうございました(^^ これで沈みます
923 名前:nobodyさん mailto:sage [2008/02/17(日) 21:47:50 ID:???] >>921 ヘッダと本文は空行で分けられます。 ついでに言うと、改行は CRLF (\r\n) にすること。 MTA によっては受け付けてくれません。
924 名前:exe [2008/02/19(火) 11:44:47 ID:L1DAdjnk] ファイルにaからz、AからZを交互に連続で出力し、最後に改行して、この処理を10回繰り返す方法を教えてください。 aAbBcCdDeE・・・yYzZ のような形です。お願いします。
925 名前:nobodyさん mailto:sage [2008/02/19(火) 12:05:44 ID:???] 宿題は自分でやろうな。
926 名前:nobodyさん mailto:sage [2008/02/19(火) 12:06:11 ID:???] print "aAbB.....yYzZ\n"; を10個コピペでおk
927 名前:exe [2008/02/19(火) 14:24:58 ID:L1DAdjnk] すいません。10回出力はわかるんですが、for文を使ってaAbBcC...zZの表示方がわからないのでどなたかお願いします。
928 名前:nobodyさん mailto:sage [2008/02/19(火) 14:25:28 ID:???] for(1..10) { for(65..90) { print pack("C*",$_); print pack("C*",$_+32); } print "\n"; }
929 名前:exe [2008/02/19(火) 14:42:37 ID:L1DAdjnk] nobody さんありがとうございます。 ちなみに↓の形で書くと、どうしたらよいでしょうか。 何度もすいません。 open (FILE, '>test1.txt') or die "$!"; for my $count (0..9) { for my $i ("a".."z") { } print FILE "\n"; } close(FILE);
930 名前:nobodyさん mailto:sage [2008/02/19(火) 14:59:33 ID:???] # # $countってなんぞ? # open (FILE, '>', 'test1.txt') or die "$!"; binmode(FILE); for my $count (0..9) { for my $i('a'..'z') { print $i; print uc($i); } print FILE "\n"; } close(FILE);
931 名前:nobodyさん mailto:sage [2008/02/19(火) 15:01:42 ID:???] # # ↑はウソ # open (FILE, '>', 'test1.txt') or die "$!"; binmode(FILE); for my $count (0..9) { for my $i('a'..'z') { print FILE $i; print FILE uc($i); } print FILE "\n"; } close(FILE);
932 名前:exe [2008/02/19(火) 15:06:17 ID:L1DAdjnk] ありがとうございます。$Countは適当においてる変数です。
933 名前:exe [2008/02/19(火) 15:54:07 ID:L1DAdjnk] 先ほど↑で作ったファイルを出力として、小文字のみを取り除いた結果を標準出力に表示するにはどうしたらよいでしょうか? 自力でやらないといけないのはわかっているのですが、時間がなくて・・どなたかお願いします。
934 名前:nobodyさん mailto:sage [2008/02/19(火) 16:04:55 ID:???] # # そういうウンコみたいな仕事を漏れにも回してくれよ # $sent = 'dTgZtyYthSGetLt'; $sent =~ s/[a-z]//g; print $sent;
935 名前:nobodyさん mailto:sage [2008/02/19(火) 16:31:12 ID:???] 馬鹿だな、まずはおっぱいうpしてからだろjk・・・
936 名前:exe [2008/02/19(火) 16:55:41 ID:L1DAdjnk] 仕事では無いです。笑われてるかもしれませんが初心者の 自分にとっては色々難しくて。時間もありませんでしたので・・
937 名前:nobodyさん mailto:sage [2008/02/19(火) 17:15:11 ID:???] perlで外部サーバー上のファイルを読み込む方法はありますか? OPEN("www.aa.com/a.cgi ") みたいにして a.cgiの出力結果を元にさらに処理をしたいと思っています
938 名前:nobodyさん [2008/02/19(火) 17:30:48 ID:gLoGL0Ae] >>937 いい手じゃないが、Linuxでwgetが入ってる状態で漏れが使ってる方法 $foo = `wget -O- www.aa.com/a.cgi`;
939 名前:nobodyさん mailto:sage [2008/02/19(火) 17:45:18 ID:???] いやそれが最強。wgetのWIN版もあるからな。-qも付けると良い。
940 名前:nobodyさん mailto:sage [2008/02/19(火) 17:55:56 ID:???] LWP
941 名前:937 mailto:sage [2008/02/19(火) 19:26:35 ID:???] >>938 ありがとうございました 無事 取得することが出来ました。 あと[`]でくくるのはなぜなのでしょう?
942 名前:938 mailto:sage [2008/02/19(火) 20:13:58 ID:???] >939 モジュール使った方が互換性高いし、そっちの方が良いと思ったんで。 >940のLWPを使うのが最良だと思うが、使い方調べてる気分的な余裕がないんで、 wget使ってそのまま今に至る感じだ。 >941 外部コマンド実行だから。``で囲むと外部コマンドを実行して標準出力が戻ってくる。 ちなみに"perl -T"でやってると、そのままじゃ外部コマンド動かない事があるんで注意。 $ENV{'IFS'}, $ENV{'CDPATH'}, $ENV{'ENV'}, $ENV{'BASH_ENV'}, $ENV{'PATH'}を 退避・削除してから外部コマンドを実行し戻す必要がある。
943 名前:nobodyさん mailto:sage [2008/02/19(火) 20:26:04 ID:???] LWP
944 名前:nobodyさん mailto:sage [2008/02/20(水) 08:23:23 ID:???] >>937-942 search.cpan.org/~gaas/libwww-perl-5.808/lib/LWP/Simple.pm
945 名前:937 mailto:sage [2008/02/20(水) 12:35:11 ID:???] >>938-944 ありがとうございます。 LWPも使えました 研究してみます。
946 名前:nobodyさん mailto:sage [2008/02/20(水) 13:15:09 ID:???] @urlの中に500くらいのサイトのURLが入っています。 そのURLのページにキーワードか書かれているかどうか調べるとき、 foreach (@url) { LWPで取得してキーワードが見つかったら、$count++; } みたいにすると一つずつなので物凄く時間が掛かります。 10個くらい一気に取得する方法はないでしょうか?
947 名前:nobodyさん mailto:sage [2008/02/20(水) 13:35:03 ID:???] 同じプログラムを10個並列に走らせてそれぞれに50サイトずつ担当させるのが一番楽だと思うよ。
948 名前:nobodyさん mailto:sage [2008/02/20(水) 13:43:09 ID:???] こういう場合ってほとんどはLWPで取得するのが一番時間かかってるのかな?
949 名前:nobodyさん mailto:sage [2008/02/20(水) 13:59:11 ID:???] >>947 そうですか…分割してみます。 >>948 応答待ちが長いと停止状態です。
950 名前:nobodyさん mailto:sage [2008/02/20(水) 14:34:00 ID:???] fork
951 名前:nobodyさん mailto:sage [2008/02/20(水) 15:01:34 ID:???] プロセスで並列化するとプロセスAは終わってるけど プロセスBは重いサイトがリストにあって終わってないとか 無駄に待ち時間増えるから、threads使える環境ならthreadsのが楽でない?
952 名前:nobodyさん mailto:sage [2008/02/20(水) 15:03:07 ID:???] JISの文から携帯電話の絵文字部分を退避させたいと思っています。 正規表現について教えてください。 通常の2バイト文字と同様に絵文字[\x75-\x7B][\x21-\x7E]がエスケープシーケンス \x1b\x24\x42と\x1b\x28\x42に囲まれます。 エスケープシーケンスをそれぞれ $esc_in = "\x1b\x24\x42"; $esc_out = "\x1b\x28\x42"; とし、絵文字を $emoji = "[\x75-\x7B][\x21-\x7E]"; とします。 元の文を $str="今日は晴れでした■気温は10度です。";(■は笑顔の絵文字 \x79\x79 ) この$strは $esc_in今日は晴れでした■気温は$esc_out10$esc_in度です。$esc_out とエスケープされます。 やりたい事はこれを $esc_in今日は晴れでした$esc_out[7979]$esc_in気温は$esc_out10$esc_in度です。$esc_out というように[]で絵文字コードを囲い、エスケープシーケンスの整合性をとるというものです。 どなたかご教授いただけないでしょうか?
953 名前:nobodyさん mailto:sage [2008/02/21(木) 00:49:43 ID:???] それのどこがWeb Programmingなんだ?
954 名前:nobodyさん mailto:sage [2008/02/21(木) 02:07:00 ID:???] JISコードは加工には向かないので、Encode::JP::Mobileあたり使って いったんutf8文字列にしてから加工して戻す方がたぶん見通しいいよ。
955 名前:952 mailto:sage [2008/02/21(木) 03:31:08 ID:???] >>954 ありがとうございます。そちらの方で検討させていただきます。 このような複雑な置換について私は苦手でして、もしこれがお分かりになられるなら後学のためにも教えていただきたいのですが、ご無理でしょうか?
956 名前:nobodyさん mailto:sage [2008/02/21(木) 10:36:05 ID:???] マッチした文字列の前後は$esc_inで囲って マッチした文字列はルールに沿って変換 ってことかな?
957 名前:nobodyさん mailto:sage [2008/02/21(木) 10:36:46 ID:???] ×$esc_inで囲って ○$esc_inと$esc_outで囲って
958 名前:nobodyさん mailto:sage [2008/02/21(木) 10:39:56 ID:???] 無理に書くとこんな感じ? 全くお勧めしない。 # 絵文字部分を1文字ずつ加工。 # 1バイトずれてマッチしたり、ascii部分にマッチしないようにしてるので面倒 $str =~ s{ ( (?:\G | ^[^\1b]*\x1b\x24\x42) (?:[^\x1b]{2}|\x1b\x28\x42[^\x1b]*\x1b\x24\x42)*? ) ([\x75-\x7b])([\x21-\x7e]) }{ sprintf "%s\x1b\x28\x42[%02x%02x]\x1b\x24\x42", $1, ord($2), ord($3) }gex; # 冗長なエスケープシーケンスの並びを除去 $str =~ s/(\x1b\x24\x42)+/$1/g; $str =~ s/(\x1b\x28\x42)+/$1/g; $str =~ s/\x1b\x28\x42\x1b\x24\x42//g; $str =~ s/\x1b\x24\x42\x1b\x28\x42//g;
959 名前:952 mailto:sage [2008/02/21(木) 14:20:04 ID:???] >>958 ありがとうございます。 やはりすごい複雑になってしまうんですね。 ( (?:\G | ^[^\1b]*\x1b\x24\x42) (?:[^\x1b]{2}|\x1b\x28\x42[^\x1b]*\x1b\x24\x42)*? ) を見てもさっぱり理解できません。 これが絵文字でない文字を指すというのはわかるのですが、詳しく教えていただけないでしょうか? または参考になる書籍などがありましたら教えていただけないでしょうか。
960 名前:952 mailto:sage [2008/02/21(木) 14:25:02 ID:???] 書き忘れましたが、Encode::JP::Mobileを使い無事utf8にできました。 これを作った方すごいですね。こんな便利なものがあると知りませんでした。
961 名前:初心者 [2008/02/21(木) 14:43:22 ID:eHzrHpy8] perlでカレンダーを作るのですが、プログラミングする内容としては何がひつようでしょうか? 何から書いていいやらとっかかりがわかりません。どなたかアドバイス等をお願いします。
962 名前:nobodyさん mailto:sage [2008/02/21(木) 14:48:53 ID:???] ggrks
963 名前:nobodyさん mailto:sage [2008/02/21(木) 14:49:53 ID:???] とりあえず以下のサブルーチンを作る 1. 本日の年・月・日・曜日を返す 2. x年y月z日の曜日を返す 3. x年y月1日の曜日を返す 4. x年y月の月末日を返す 5. x年y月の前月を返す 6. x年y月の翌月を返す 7. x年y月z日の前日を返す 8. x年y月z日の翌日を返す
964 名前:初心者 [2008/02/21(木) 15:13:33 ID:eHzrHpy8] ありがとうございます。
965 名前:初心者 [2008/02/21(木) 15:26:58 ID:eHzrHpy8] 今年のようなうるう年かどうかを調べるにはどうしたらよいのでしょうか?
966 名前:nobodyさん [2008/02/21(木) 15:35:05 ID:/bZGgDSr] 閏年の定義に当てはまるかどうかを調べればよい。>>965 西暦が4で割り切れて、100で割り切れなければ閏年。 西暦が4で割り切れて、400でも割り切れれば、100で割り切れても閏年。
967 名前:nobodyさん mailto:sage [2008/02/21(木) 15:35:25 ID:???] いちいち相手にするからググればわかるような質問が絶えないんだよな
968 名前:nobodyさん [2008/02/21(木) 15:38:45 ID:/bZGgDSr] 悪かった。今は反省している。
969 名前:nobodyさん mailto:sage [2008/02/21(木) 16:23:42 ID:???] 閏年を知る必要は無いはず。 月末=翌月1日の1日前( x年y月の月末日=(x年y+1月1日)-1日 )だから、 PerlインタプリタとOSとライブラリにバグがなけりゃ閏年だろうが、平年だろうが 関係なく計算できる。 Date::Calc使って計算すりゃ一発で出るだろ。
970 名前:nobodyさん mailto:sage [2008/02/21(木) 16:35:43 ID:???] ググっても分からないような初心者質問って?
971 名前:nobodyさん mailto:sage [2008/02/21(木) 17:03:05 ID:???] >>1
972 名前:nobodyさん mailto:sage [2008/02/21(木) 18:08:27 ID:???] >>969 ggrksには同意だが、 たとえば誕生日の入力で2/29が妥当かどうかってのは閏年を判別しなきゃいかんだろ。 質問者の意図は知らんが。
973 名前:969 mailto:sage [2008/02/21(木) 18:13:29 ID:???] >>972 名前: 初心者 ID:eHzrHpy8 が継続的に質問してるんで、 ID:eHzrHpy8 : 「>961 カレンダーを作りたい。」 nobodyさん: 「>963」 ID:eHzrHpy8 : 「>965 月末日を知るのに閏年を知りたい」 って一連の流れだと思ったんだが、違うのか?
974 名前:nobodyさん mailto:sage [2008/02/21(木) 18:21:25 ID:???] 要するに2月のカレンダーを作るときには、3月1日の日付から−1してやって、日付を取得すれば いいってことを>>969 は言ってるんだね。 カレンダーを書くルーチンを考えたことないから、参考になるね。
975 名前:nobodyさん mailto:sage [2008/02/21(木) 19:03:40 ID:???] localtime使う前提だよね? 末日計算を前提としてる話とごっちゃになっとる
976 名前:nobodyさん mailto:sage [2008/02/21(木) 19:18:16 ID:???] もちろん。 でもさ、カレンダーを書くcgiくらい、散々ソースが転がっていそうな気がするんだけどね。 その辺の中から、適当に拾ってアレンジすれば目的は果たせるんじゃないの?
977 名前:nobodyさん mailto:sage [2008/02/21(木) 19:26:16 ID:???] 自分が使うカレンダーならどっかから拾ってくればいいが、 課題ともなるとそうもいかないんじゃない?
978 名前:nobodyさん mailto:sage [2008/02/21(木) 19:33:08 ID:???] というか、今更perlの課題とか出す大学とかあるの?
979 名前:nobodyさん mailto:sage [2008/02/21(木) 20:55:28 ID:???] >>952 とまったく同じ文章が今日MLに流れてきてたけど、同一人物?
980 名前:nobodyさん mailto:sage [2008/02/21(木) 23:37:02 ID:???] >>978 専門学校とかじゃね?
981 名前:ID消し挑戦w mailto:000 [2008/02/23(土) 16:05:17 ID:???] テスト^^;
982 名前:nobodyさん mailto:sage [2008/02/23(土) 16:40:22 ID:???] 自分用モジュールつくってるんだけどさ package hoge; use strict; my $test = 'ABC'; sub new { my $pkg = shift; bless { hoge => $test, },$pkg; } みたいに先頭で定数定義してメソッド内で使いまくるのって問題ありますか? これならuse strictしない方が良かったりする?
983 名前:nobodyさん mailto:sage [2008/02/23(土) 16:46:25 ID:???] 外部値で初期化したいなら引数として渡せば?
984 名前:nobodyさん mailto:sage [2008/02/23(土) 17:07:54 ID:???] >>982 問題ないとおも。 ただ、定数として明示したければ、 use Readonly; Readonly my $test = 'ABC'; しといた方が
985 名前:nobodyさん mailto:sage [2008/02/23(土) 17:09:32 ID:???] 定数は大文字にする習し
986 名前:nobodyさん mailto:sage [2008/02/23(土) 18:07:36 ID:???] (・∀・)
987 名前:nobodyさん mailto:sage [2008/02/23(土) 18:54:14 ID:???] >>983 箱から出したくないしので、blessに絡めたくないんです。 ちなみに全メソッドで使います。 >>984 CPAN配布物ですかね? 名前からして便利そうですが、標準で入ってないのは遠慮したいです。 >>985 おk コールバックあたりも調べてみます。 とりあえずみなさんありがとうです。
988 名前:nobodyさん mailto:sage [2008/02/23(土) 19:03:14 ID:???] use Vars, oursなんてあったのか。
989 名前:nobodyさん mailto:sage [2008/02/23(土) 19:57:03 ID:???] >>987 標準ならconstantプラグマ
990 名前:nobodyさん mailto:sage [2008/02/23(土) 21:32:08 ID:???] 以前は値を返すだけのsub使ってた。
991 名前:nobodyさん mailto:sage [2008/02/23(土) 21:46:40 ID:???] >>987 CPAN配布物だけど、純Perlソースだから、インスコしなくても、 下記からダウソして自分のモジュールと同じディレクトリに入れればよさげ。 search.cpan.org/src/ROODE/Readonly-1.03/Readonly.pm
992 名前:nobodyさん mailto:sage [2008/02/23(土) 21:47:49 ID:???] 空のプロトタイプ付きサブルーチンはコンパイル時に展開されるので 効率はいい。constant プラグマはいわばその構文糖。 www.kt.rim.or.jp/~kbk/perl5.005/perlsub.html#Constant_Functions 変数展開コンテキストに埋め込みたいなら、リテラルのリファレンスに 名前を付ける方法もある。 www.kt.rim.or.jp/~kbk/perl5.005/perlmod.html#Symbol_Tables パッケージグローバルな my 変数も、そのパッケージ内でうっかり 書き換える心配が無いのなら別に悪い選択肢じゃない。
993 名前:982 mailto:sage [2008/02/23(土) 22:24:31 ID:???] >>991 ダウソしました。できるだけ理解してから使ってみます。 >>990 ,>>992 サブルーチンでやるならsub Readonly () { 'ABC' }でおkですね。 とりあえず自分用はそうします。 もし他人に配布するような事があれば>>989 ,>>991 が良いっす 短時間ですごい勉強になりました。ありがとう
994 名前:nobodyさん mailto:sage [2008/02/24(日) 18:30:29 ID:???] 保 守
995 名前:nobodyさん mailto:sage [2008/02/25(月) 16:37:54 ID:???] 次スレ希望
996 名前:nobodyさん mailto:sage [2008/02/25(月) 17:52:22 ID:???] テンプレ貼るなら立ててやるよ
997 名前:nobodyさん mailto:sage [2008/02/25(月) 19:27:13 ID:???] ほらよ Perlコーディング初心者質問スレ Part 57 pc11.2ch.net/test/read.cgi/php/1203935151/
998 名前:nobodyさん mailto:sage [2008/02/25(月) 20:00:31 ID:???] 乙です。 埋め
999 名前:nobodyさん mailto:sage [2008/02/25(月) 20:07:07 ID:???] 埋め
1000 名前:nobodyさん mailto:sage [2008/02/25(月) 20:07:31 ID:???] 埋め
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。