- 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/
- 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 ""){ 処理 }
|

|