[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 08/25 20:07 / Filesize : 271 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Perlコーディング初心者質問スレ Part 56



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/

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;

って思いっきり書いてたりするんですが、これって大丈夫なのでしょうか?








[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<271KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef