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/
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) = @_; }