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/
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:???] 拡張子を省略していたせいだった気がしました。ありがとうございました。