トップページ⇒php
1001コメント404KB

Perl コーディング初心者質問コーナー Part33

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/03/01 02:46ID:1GeWO7LH
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。

過去ログやお勧めサイトは >>2-10
0784漏れはこれだけ補完できる04/03/29 13:17ID:???
784 名前: nobodyさん :sage 投稿日: 04/03/25 (木) 21:23 ID:???
>>739
> for (reverse 0 .. 5) {
リストが作られるから、
0..10000なんてやると、かなりメモリ食うと思う。
0785漏れはこれだけ補完できる04/03/29 13:18ID:???
悪い、レス番号にだまされて連続で張るつもりだった。

既に張っている人、乙!
0786nobodyさん04/03/29 14:51ID:???
2chの板にマッチさせるには
http:\/\/\w+(\.2ch\.net\|\.bbspink\.com)\/\w+\/
であってますか?
0787nobodyさん04/03/29 14:57ID:???
>>786
>>1
&
正規表現道場
0788nobodyさん04/03/29 16:28ID:???
質問です。
localとmyの使い分けについてなのですが、
どちらを使っても厳密な違いはないのでしょうか?
localはPerl4、myはPerl5以降という話を見たことがあるのですが、
環境を選ばずに正確に動作させるのならば、
myではなくlocalで統一したほうがいいのでしょうか。
0789nobodyさん04/03/29 16:39ID:???
>>788
これを検索汁

レキシカルスコープ変数
ダイナミックスコープ変数
0790nobodyさん04/03/29 17:21ID:???
>>789
あいよー、dmds
0791nobodyさん04/03/29 20:16ID:???
>>788
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlfaq7.html#What_s_the_difference_between_dy
0792nobodyさん04/03/29 21:54ID:???
改行で区切った単語リストを読みこみ、それぞれについてgooの辞書に照合し、
意味を結果ファイルに書き出していくスクリプトを作ったのですが、うまくいきません。
動作自体には問題はないのですが、結果ファイルに照合した単語を書きこむと、
一部の文字が化けてしまいます。
例えば阿諛追従という文字列をgooの辞書で検索し、結果を書き出すと、
�艸追従
となってしまいます。検索結果は問題なく書き込まれています。
単純に阿諛追従とテキストに書き出すスクリプトで試してみましたが、文字化けは
起こりませんでした。ちなみにスクリプトはShiftjisで書かれています。
実行環境はWindowsMe+ActivePerl最新版です。
いくら考えてもどこがおかしいのか分からないので、申し訳ないのですが、
短いコードですので全部載せさせて下さい。
---------------------------------------
#!/etc/env perl

use strict;
use LWP::Simple;
use Win32::FileOp;

my $file="a.html";
my $meanfile = "mean.txt";#結果ファイル
my $str;
my $wordfile = "word.txt";#単語リスト
my $mflag = 0;
open IN, "$wordfile" or die "$!";
my @wordlist = <IN>;
close IN;
open OUT, ">>$meanfile" or die "#!";
0793nobodyさん04/03/29 21:56ID:???
foreach (@wordlist) {
my $word = $_;
&url_encode($word);
my $url="http://dictionary.goo.ne.jp/search.php?MT=" . "$str" . "&kind=jn";
print $url;
if (is_success(getstore($url,$file)))
{
open IN, "$file" or die "$!";
print "$word\n";
while (my $data = <IN>) {
if ($data =~ m/<!--meaning_body-->/) {
$mflag = 1;
chomp($word);
print OUT "<title>$word</title>\n";
next;}
if ($data =~ m/<!--\/meaning_body-->/) {
$mflag = 0;}
if ($mflag == 1) {
$data =~ s/<br>/\n/g;
$data =~ s/<small>|<\/small>|<b>|<\/b>//g;
if ( ! ($data eq "\n") ) {
print OUT "<contents>$data</contents>\n";}}}
close IN;}}}
close OUT;
ShellExecute 'open' => $meanfile;
sub url_encode{
$str = shift;
$str =~ s/(\W)/'%'.unpack("H2", $1)/eg;
$str =~ tr/ /+/;
}
よろしくお願いします。
0794nobodyさん04/03/29 22:11ID:???
>>792
gooの文字コードを見てみれ
079579204/03/29 23:06ID:???
>>794さん、ありがとうございます。
見てみました。gooはEUC-JPでした。
で、ますます混乱してしまいました。
単語リストはSJIS、照合結果のhtmlファイルはEUCJP,
単語リストから抜き出した単語と照合結果のhtmlファイルから
抜き出した意味のデータを組み合わせて結果ファイルに書き
込むと結果ファイルはEUCJP・・・・・
EUCJPと認識されているテキストにSJISのコードを書きこむと
化けるのは分かります。でもそれならSJISで書きこんだコード
全てが化けるのではないのですか?
阿諛追従は文字化けしましたがその他の大半の単語はそうは
なりませんでした。どうしてこのようなことになるのでしょうか?
それと、Windowsの基本文字コードはSJISですよね?なのに
どうして<title>SJISの文字列</title><contents>EUCJPの文字列</contents>
とprintで書きこんだテキストファイルがEUCJPとして認識され
てしまうのでしょうか?Windowsがテキストファイルの文字コード
をどのように判別しているか定かではないのですが、もし先頭の
何文字かをもとに判定しているとしたら、
Windowsにおいてperlから特に処理を
施さずに生成した文字列はSJISのはずでそれがファイルの先頭に
書きこまれているにもかかわらずなぜテキストファイルがEUCJP
として認識されてしまうのでしょうか?
文字コードに関する認識不足が多分にあると思われますが、
なにとぞご容赦下さい。
0796nobodyさん04/03/29 23:07ID:???
>>788
検索キーワードは>>789参照だが、少し補足

ぶっちゃけ、myとlocalは全く用途が違う。
myはlocalの代わりには出来ないし、localをmyの代わりに使うことはない。
変数の宣言にはmyを使う。。
localは既存の変数を一時的に局所化する為に使う。
sub f{
# 通常使う変数はmy
my($foo, $bar);
my @array = ($foo, $bar);
# 既存の変数を一時的に置換え
local $_ = 'str';
local $SomePackage::PublicVariable = 1;
}
# 関数f()の呼び出しが終われば、$foo,$bar,@arrayは消滅し、$main::_,$SomePackage::PublicVariableは関数呼び出し前の値が復帰する
0797nobodyさん04/03/29 23:41ID:???
過去ログ消滅しちゃってますね・・・・
非常に有用なのでぜひ参照したいのですが、
どうにかならんのでしょうか?
0798nobodyさん04/03/29 23:50ID:???
「仕事人★がpc2鯖をpc鯖と間違えてログ消したために
pc5鯖に復旧した時に一日分消えてしまったよ事件」のログなら
>>766-780
もともとのレス番は766から814らすぃな
0799nobodyさん04/03/30 00:17ID:???
バイナリアップロードなことをしたいんですが、
CGI.pmを使ったサンプルコードをいくつかみたところ、
while ($bytesread = read($fh,$buffer,1024)) {
print OUT $buffer;
}
といった風になってます。
$bytesreadはなんなのでしょうか。
とりあえずその部分を削って
while (read($fh,$buffer,1024)) {
としたところでエラーは出なかったのですが(win)
意図的にスカラーコンテキストにしているんでしょうか?
あるいは特殊な変数なのでしょうか?
また、もし前者ならmy宣言した方が軽くなるような気がするのですが、
どのコードもしてません。
その辺教えていただけませんでしょうか?
参考↓
http://www.google.co.jp/search?num=50&hl=ja&inlang=ja&ie=Shift_JIS&c2coff=1&q=perl+while+bytesread+read+buffer&lr=lang_ja
0800nobodyさん04/03/30 00:18ID:???
あげわすれました。お願いします。
080177904/03/30 00:22ID:???
あ、↓これで検索すると、、、
「perl while read buffer」
$bytesread抜きの、つまり>>799で書いた
>while (read($fh,$buffer,1024)) {
のような形で書かれたページも見つかりますね。

いらないのかな。何の意味があるんでしょう。
0802nobodyさん04/03/30 01:06ID:???
>>799-801
http://perldoc.com/perl5.8.0/pod/func/read.html
http://perldoc.jp/docs/perl/5.6.1/perlvar.pod

君が参考にしたページの作者も、君と同じくコピペプログラマなんだろう。
意味の有無は判断材料を集めて自力で考えてみなさい。
0803nobodyさん04/03/30 01:14ID:???
マルチですが失礼します。以下こぴぺ

CGI::Sessionつかって
$session = new CGI::Session("driver::File", undef, {Directory => $session_dir});
$sid = $session->id();
$session->param("aaa", "v_bbb");
のようにして、得たセッションIDをもとに次にアクセスするときにその
セッションIDをもとに
$session = new CGI::Session(undef, $sid, {Directory => $session_dir});
として、前のセッションのデータにアクセスしようとしたんですが、データを
引き継げてないようです。これは使い方が間違っているのでしょうか?
ぶっちゃけparamメソッドで入力したデータに二回目以降のアクセスで
取得できるようにするにはどのようにすればいいのでしょうか?

$session_dirに指定したファイル?もどこにあるかわからないし、、、
わからないことずくしです。
0804nobodyさん04/03/30 01:58ID:???
>>802
有難うございます。
サンプルとなるコードを検索してそれを理解する。わからなければ時には弄くり倒しながら。
そして理解できたら自分なりの方法でコーディングする。
これがコピペプログラマーでしょうか?
bytesreadが定義済み変数なのかは調べた。しかし探してもそのような記述は見当たらない。
英語は苦手だから日本語texinfoのttp://flex.ee.uec.ac.jp/texi/perl/perl_90.html
だって見た。それでも解決しない。
ところがbytesreadという変数を使ったコードを紹介するサイトが山のようにある。
・・・私には理解できない。

しかし言われてみて思った。
while内で$bytesreadを参照し処理をしていたスクリプトがあった。
そのソースからコピペして$bytesreadは使わないのに残したままである。
そんなコードを参考にしてしまった。

こんなところですか?
0805nobodyさん04/03/30 07:09ID:???
>>795
結果を書き出すのにEUC-JPかShift_JISかに統一しる。
# 私のところでは、そんな化け方しないけど。

>>797
HTML版はあるけど、2chブラウザ用のが無いのかも。

>>803
$session_dirディレクトリの中にファイルが作られる。
まずはそこから確認。
0806nobodyさん04/03/30 07:29ID:???
>>805
> HTML版はあるけど、2chブラウザ用のが無いのかも。
ありました。
リンクをhttp://pc5.2ch.net/にしないとだめなのね(そりゃそうか)。
0807nobodyさん04/03/30 10:54ID:???
>804
>while内で$bytesreadを参照し処理をしていたスクリプトがあった。
>そのソースからコピペして$bytesreadは使わないのに残したままである。
>そんなコードを参考にしてしまった

恐らくそういうこと。というか、>>5-6あたりを参照するのは基本だが底から少しでも探した?

世の中のコピペプログラマがいかにダメコード汚染を撒き散らすかということがよくわかるよ。

とはいうものの、readに関していうなら、C言語では極めて重要なreadの戻り値がPerlでは意味が薄れている為、
マニュアルを読んだだけではその意味するところを理解し難いというのはあると思うけどね。
0808nobodyさん04/03/30 12:24ID:???
次スレ立てる人は $テンプレ =~ s/pc2/pc5/g; するのを忘れずに。
0809nobodyさん04/03/30 13:18ID:???
>>808
Bareword found where operator expected at - line 1, near "$テ"
(Missing operator before e?)
syntax error at - line 1, near "$テ"
Unrecognized character \x83 at - line 1.

な上に、gオプションはいらないだろ。
${'テンプレ'} =~ s/pc2/pc5/;

どうでもいいか・・・
0810nobodyさん04/03/30 13:28ID:???
どうでもいいな。
だが>>808は次スレ立つ時期に同じことを言うのを忘れずに。
0811nobodyさん04/03/31 06:09ID:???
>>795

>Windowsがテキストファイルの文字コードをどのように判別しているか定かではないのですが
Windows 自体は文字コードの判別など「しない」。
ブラウザかテキストエディタか知らんが判別しているのはアプリ側。
つまり自動判別に頼る場合(ロジックが異なる可能性があるから)、
開くアプリによって結果が異なることもある。
先頭数文字で判別するアプリもあれば、どちらかのコードで解釈できなくなった時点で
コードを決定するアプリもあるだろう。

>阿諛追従は文字化けしましたがその他の大半の単語はそうは
>なりませんでした。
「その他の大半の単語」の方は本文(意味)の方もちゃんと読めるのか?

結論としては >>805 の通り、文字コードを統一してから書き込めってことだが。
ActivePerl 最新版(5.8系列)なら use Encode すれば文字コード変換を使えるはず。
0812nobodyさん04/03/31 08:34ID:???
久しぶりにPerlを弄り始めて突っかかってしまいました。
変数の型(HASHやARRAY)を返す関数があったと思うんですが
忘れてしまいました、誰か助けてぇ〜
0813nobodyさん04/03/31 10:07ID:???
いらっしゃーい、Perlのコーディングで困ってる人のスレです。
081479204/03/31 10:48ID:???
>>805
>>811
どうもありがとうございました。
Encodeではありませんが、jocde.plでEUCJPに統一することで解決しました。

>「その他の大半の単語」の方は本文(意味)の方もちゃんと読めるのか?
はい、何故か本文の方は全く文字化けしませんでした。
0815nobodyさん04/03/31 11:35ID:???
>>812
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perldata.html
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlref.html
0816nobodyさん04/03/31 11:42ID:???
>>815
ありがとう!それです、感謝!!
0817nobodyさん04/03/31 16:37ID:msaZKwho
サブルーチンや関数って

こうじゃなくて
sub hoge{

}

こう書くのが正しいのですか。
sub hoge
{

}
0818nobodyさん04/03/31 16:53ID:???
>>817
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlstyle.html
0819nobodyさん04/03/31 20:12ID:???
>>817
どっちも構文上は正しい。
好きに汁。
0820nobodyさん04/03/31 22:18ID:???
CGIで、COOKIEを書き込めるのってもしかしてPOSTでCGIが呼び出された時だけなんですか?
0821nobodyさん04/03/31 22:21ID:???
>>820
呼び出し方は関係ないよ。
httpヘッダを出力して、それをブラウザが解釈すれば書き込まれる。
0822nobodyさん04/03/31 22:22ID:???
>>820
いいえ。
なお、その質問はスレ違いです。
082382004/03/31 22:33ID:???
ん・・・・わかりにくくてすいません

COOKIEの書き込みを行っているんですが、
なぜか$EMV{'HTTP_COOKIE'}にCOOKIEの値として認識されてきません。
もっとも単純なCOOKIEを書き込んで、読み出すだけ、のCGIであれば問題は無いのですが、
なぜかいろいろ付け加えていくウチに、$ENV{'HTTP_COOKIE'}の値を正常に読み込まなくなってしまいます。
何度1から作り直しても同じ事が起きるのですが、これは原因として考えられる部分が他にあるのでは、と考えています
Perlの都合上でCOOKIEの書き込み読み込みに異常を来すような例は考えられますでしょうか

ちなみに、COOKIEに関する部分は至って単純で、ソースは以下の通りです。
これを動作させたところ、COOKIEの中身が表示されるべき所に全く文字は出力されませんでした。


$jcode= './jcode.pl';
$getArg= './getarg.pl';

require $jcode;
require $getArg;

print "Content-type: text/html\n";
print "Set-cookie: style=",$PostARG{'style'}||$CookieARG{'style'},"; expires=Thu, 1-Jan-2030 00:00:00 GMT;\n";
print "Set-cookie: access=",$date{'mon'},$date{'mday'},"; expires=Thu, 1-Jan-2030 00:00:00 GMT;\n\n";

中略

print $CookieARG{'style'};
print $CookieARG{'access'};
print $ENV{'HTTP_COOKIE'}};


後略
0824nobodyさん04/03/31 22:34ID:fllGa8Oy
getarg.plの内容

%GetARG = %PostARG = %CookieARG = ();
($date{'sec'},$date{'min'},$date{'hour'},$date{'mday'},$date{'mon'},$date{'year'},$date{'wday'},$date{'yday'},$date{'isdst'}) = localtime(time);
foreach ( split /[&,]/,$ENV{'QUERY_STRING'} ){
 ($name, $value) = split /=/;
 $value =~ s/\+/ /g;
 $value =~ s/%([0-9a-fA-F]{2})/pack("C", hex($1))/ego;
 &jcode'convert(*value,'sjis');# コードをShift_JISに
 $GetARG{$name} = $value;
}
if($ENV{'REQUEST_METHOD'} =~ /^POST$/i){
 read(STDIN , $POST , $ENV{'CONTENT_LENGTH'});
 foreach ( split/&/,$POST ){
  ($name, $value) = split /=/;
  $value =~ s/\+/ /g;
  $value =~ s/%([0-9a-fA-F]{2})/pack("C", hex($1))/ego;
  &jcode'convert(*value,'sjis');# コードをShift_JISに
  $PostARG{$name} = $value;
 }
}
0825nobodyさん04/03/31 22:35ID:fllGa8Oy
@_ = split(/; /,$ENV{'HTTP_COOKIE'});
foreach ( @_ ){
 ($name, $value) = split /=/;
 &jcode'convert(*value,'sjis');# コードをShift_JISに
 $CookieARG{$name} = $value;
}
foreach ( keys %CookieARG ){
 print "Set-Cookie: $_=",$CookieARG{$_},"; expires=Thu, 1-Jan-2030 00:00:00 GMT;\n";
}
foreach ( keys %GetARG ){
 print "Set-Cookie: $_=",$GetARG{$_},"; expires=Thu, 1-Jan-2030 00:00:00 GMT;\n";
}
foreach ( keys %PostARG ){
 print "Set-Cookie: $_=",$PostARG{$_},"; expires=Thu, 1-Jan-2030 00:00:00 GMT;\n";
}
1;
0826nobodyさん04/03/31 22:52ID:???
スレ違いって文字は読める?
0827nobodyさん04/03/31 22:56ID:fllGa8Oy
どこで聞けばいいんですかね・・・
0828nobodyさん04/03/31 23:13ID:???
またCOOKIEの仕様を理解してないのが現れたか…
スレ違いだから答えない。
0829nobodyさん04/03/31 23:18ID:???
コードの問題かクッキーの問題か教えてから誘導してやれば良いのに。

取り合えずここじゃないとなると初心者スレなんかなあ……。
0830nobodyさん04/03/31 23:38ID:???
スレ違いスレ違いって言うんですけど、じゃあどこなら聞けるんですかね
0831nobodyさん04/03/31 23:44ID:???
んなもん知るか
0832nobodyさん04/03/31 23:45ID:???
その質問もスレちがくぁwせdrftgyふじこlp;
0833nobodyさん04/03/31 23:51ID:fllGa8Oy
スレ違いスレ違いと言われても
COOKIE関連のまともなスレなんてWebProg板に無いんですが
0834nobodyさん04/03/31 23:54ID:fllGa8Oy
・・・Perl関連で困ってるのにここじゃダメなんて・・・
どこで聞けば分かるんだ
0835nobodyさん04/04/01 00:01ID:f/d+tf5t
だいたい、COOKIEそのものの書き込みは出来てるんです
単純にCOOKIEに値を書き込んで、それを読み出すくらいは出来てるんです。

ただ、それに肉付けしていったときに読み込めなくなったりしたので、他の部分が影響を及ぼしているのは明らかなので、
どういった部分がCOOKIEへの値書き込みにこういう影響を及ぼすのか、って聞いてるのに、

ス レ 違 い

違わないでしょう
0836nobodyさん04/04/01 00:07ID:???
ここは「Perl関連」のスレではない。
「Perl コ ー デ ィ ン グ 」スレ。
コーディングの問題ではないのだからスレ違いだろう。
>828を読んでCOOKIEの仕様を勉強しなおしてこい。
0837nobodyさん04/04/01 00:12ID:???
いや、最初良かったのに途中でコード足していって駄目になったんなら、
原因はコーディングにある(と本人は言っている)のでコーディングに関しての話なんじゃないの?

と言うかこのスレのコーディングの定義が最近良く解らない……。
0838nobodyさん04/04/01 00:23ID:???
自分を擁護してる暇あったらweb探し回って調べるか、
コードとにらめっこしてなさいよ。
0839nobodyさん04/04/01 00:28ID:???
コードと睨めっこしたってわからないだろ。
0840nobodyさん04/04/01 00:29ID:???
コーディングスレでスレ違いって言われたってことは、コーディングの問題じゃないって事さ
0841nobodyさん04/04/01 00:43ID:???
もうさんざん悩んでWeb探し回って調べて

2週間が経過してるんだが・・・・・

もうだめぽ
0842nobodyさん04/04/01 01:00ID:???
それはもうだめかもわからんね
0843nobodyさん04/04/01 01:17ID:???
expiresに問題がなければクライアントにCookieファイルが残ってるよね?
$ENV{'HTTP_COOKIE'}を疑う前にCookieファイルの中身はちゃんと確認したの?

セパレータとかエンコードとか。
コーディングを疑う前にCookieのお作法を理解しないと先にすすめないよ。
0844nobodyさん04/04/01 02:07ID:OWaSi467
もまいら確かにぴろゆきは3月いっぱいで閉鎖と言ったがもしかしたら3月いっぱいで閉鎖と言うのがエイプリールフールなのかもしれないぞ。
つまり本当は4月1日のどこかで閉鎖するかもしれない。

実際に広告枠の所に「2004年4月1日に何かある」とあるんだしまだ希望はあるんじゃないか。?

2ch閉鎖実況スレ
http://ex2.2ch.net/test/read.cgi/net/     1080586834/
                         ↑間を消して

まだ1日ありますぞい

↑コピペyoro
0845nobodyさん04/04/01 02:34ID:???
>>823
サーバが食べられるクッキーはクライアントが吐いたものだけ。
自分で吐いたクッキーは食えねえぞゴルァ。
の呪文を100回唱えて、もう一回コードを見直しましょう。
0846nobodyさん04/04/01 21:54ID:Al4MgY0y
Perlで作ったCGIで、ブラウザにキャッシュされるようにするにはどう書けばいいのでしょうか?
ブラウザの戻るボタンで戻った時などに、いちいち再読み込みされないようにしたいです。

ヘッダのところに何か追加すればいいのかなというところまでは分かったのですが、
そこから先がどうしても分かりません。
よろしくお願いします。
0847nobodyさん04/04/01 21:55ID:???
>>846
△▲ WebProg 初心者の質問 Part8 ▼▽
http://pc5.2ch.net/test/read.cgi/php/1078568723/

CGI: Common Gateway Interface part 11
http://pc5.2ch.net/test/read.cgi/php/1055597189/

まずは過去ログを全部読め
0848nobodyさん04/04/01 22:11ID:Al4MgY0y
>>847
キャッシュさせないようにしたいという話は時々見ますが
キャッシュされるようにする方法というのは見つかりませんでした。

でも戻るボタンで戻っても再読み込みされない掲示板とかありますよね。
ああいうのってどうやってるんでしょうか?
すごい初心者ですいませんが、下の例だと何を追加すればいいんでしょう?


#!/usr/local/bin/perl

print "Content-type: text/html\n";
print "\n";
print "<HTML>\n";
(中略)
print "</HTML>\n";

__END__
0849nobodyさん04/04/01 22:50ID:???
HTML文書を生成するタイプのやつは
キャッシュされるんじゃないかな。
0850nobodyさん04/04/01 22:53ID:???
POSTじゃなくてGETにする
0851nobodyさん04/04/01 23:24ID:Al4MgY0y
表示部分がHTMLでなくてもキャッシュされる掲示板もありますよね。
設置したいCGIがあるのですが、ページ移動のたびに読み込まれるのが嫌で
自分で改造したいと思っています。
.cgiのままでもキャッシュさせる方法はないでしょうか?

>>849>>850
どこをどう変えたらいいのでしょうか?
>>848みたいなのでキャッシュさせないのは無理ですか?
0852nobodyさん04/04/01 23:28ID:???
>>849
当たり前だろ。ってか話ずれてんだよ
0853846=85104/04/01 23:34ID:Al4MgY0y
すいません。

>>848みたいなのでキャッシュさせないのは
↓
>>848みたいなのでキャッシュさせるのは

の間違いでした。
0854nobodyさん04/04/02 00:00ID:???
それってブラウザの仕様じゃないの。
0855nobodyさん04/04/02 00:02ID:???
ああ、POSTとGETの話かと思ったらちゃうんだな……まあ何にせよスレ違いかも。
(仮に)何かを追加してできるようになるとしても、
その何かを調べるのは少なくともこのスレじゃない、気がする。
0856846=85104/04/02 00:35ID:???
そうですね。スレ違いっぽいので自分で調べてみます。
ありがとうございました。
0857nobodyさん04/04/02 11:45ID:???
安全なセッションの作り方ありますか?

use Digest::MD5 qw(md5_hex);
my $session = md5_hex( time . $$ );

なんかこれじゃ心もとないんですが…
0858nobodyさん04/04/02 13:14ID:???
それだけだとセッションではなくセッションID(キー)の生成方法が
心許ないと読めるのでそれ前提で言うと。

渡す前の文字列が time.$$ だけだとちょっとって思うのなら
適当に30桁くらいのランダムな文字列作って md5_hex() に送れば良いんじゃないの。
0859未承諾広告※ ◆TWARamEjuA 04/04/02 13:30ID:???
>>896
その種が time . $$ だったりする罠。
0860nobodyさん04/04/02 13:30ID:???
800 :nobodyさん :04/03/26 10:46 ID:???
>>798
ロジックを語るならスレ違い。スレタイ嫁。

802 :nobodyさん :04/03/26 10:51 ID:tN6LIksl
>>800
どこいけばいいですか?

803 :nobodyさん :04/03/26 10:52 ID:???
春休みUZEEEEEEEEEEEE

804 :nobodyさん :04/03/26 10:56 ID:???
>>800
WebProg板の住人の大半、あるいはCGI設置して喜んでる日本人の95%以上は、
ロジック/アルゴリズムとコーディングの区別がついていないんじゃないか、
という気が前々からしている。
0861nobodyさん04/04/02 15:14ID:JAKs1zik
・・質問です・・

私の環境ではサーバで、cgi-bin以下でしかcgiが置けません。
ブラウザで見るときのパブリックディレクトリはhomeのインデックスです。

user/
 �歪gi-bin/
  �鷲oge.cgi
 �鷲ome/
  �亙ndex.html
  �鷲oge.html

この環境で、画像リンクなどではなく、
直接hoge.cgiをロードすることは出来ますでしょうか?
0862nobodyさん04/04/02 15:18ID:???
手におえんぞ。一切無視だ。
「>>1」とか「スレタイ嫁」とか言ってもきっとわからない。
完全スルーでよろ↓
0863nobodyさん04/04/02 15:34ID:8MGWWqTy
今、一行掲示板を作っていて負荷軽減の為、一定のhtml(index.html)に書き込み表示部を書き込みの度に出力(上書き)しようとしています。
書き込み表示部は予め関数化してあるのですが、この関数によって出力された物をファイルに書き込もうとするにはどうしたら良いのでしょうか?
どなたかご教授して頂けると幸いです(_ _)
0864nobodyさん04/04/02 15:58ID:???
>>863

800 :nobodyさん :04/03/26 10:46 ID:???
>>798
ロジックを語るならスレ違い。スレタイ嫁。

802 :nobodyさん :04/03/26 10:51 ID:tN6LIksl
>>800
どこいけばいいですか?

803 :nobodyさん :04/03/26 10:52 ID:???
春休みUZEEEEEEEEEEEE

804 :nobodyさん :04/03/26 10:56 ID:???
>>800
WebProg板の住人の大半、あるいはCGI設置して喜んでる日本人の95%以上は、
ロジック/アルゴリズムとコーディングの区別がついていないんじゃないか、
という気が前々からしている。
0865nobodyさん04/04/02 16:05ID:???
ある意味↑ってテンプレだな。

ってか、のスレの趣旨をわかってないヤシ多すぎ

正しい質問例:
これこれの配列にこういう値が入っています。
この配列に対してこういう処理をしたいと思っています。
こういう書き方をしたらこういう結果になりました。
こういう結果ではなくああいう結果を返したいと思っているのですが、
_以下略_

このスレってこういうことっしょ?
0866nobodyさん04/04/02 16:15ID:8MGWWqTy
>>864-865
ありがとうございます。それを踏まえて書き直してみました。
今、一行掲示板を作っていて負荷軽減の為、一定のhtml($file_html)に書き込み表示部を書き込みの度に出力(上書き)しようとしています。
書き込み表示部は予め関数化(&html)してあるのですが、この関数によって出力された物をファイルに書き込もうとするにはどうしたら良いのでしょうか?
一度、ヒアドキュメントにより関数化した物を代入し、それをファイル出力するという順序で可能かな、とも思い
$html_source = "_EOF_";
${&html}
_EOF_
if (!open(HTML,">$file_html")) { &error(0); }
print HTML $html_source;
close(HTML);
と、してみたのですが何も$file_htmlには書き込まれませんでした。どなたかご教授して頂けると幸いです(_ _)
0867nobodyさん04/04/02 16:38ID:???
$html_source = "_EOF_";
test
_EOF_
↑これがめちゃくちゃ。
まず一から勉強し直せ。
もうレスしなくていいから、そんな暇あったら調べろ。
0868nobodyさん04/04/02 16:43ID:???
ここは一風変わったヒアドキュメントを流布させるスレですね。
0869nobodyさん04/04/02 16:44ID:???
うぁ、すみません。元は$html_source <<"_EOF_";です。
調べるというのはそういうライブラリ等あるのでしょうか?
ぐぐってみたのですが、リファレンス等しか見つからないのですが。。。
ご存じでしたら教えて頂けると幸いです。
0870nobodyさん04/04/02 16:57ID:???
コピペしたんなら869みたいな間違いはするはずがない。
ていうかその書き方すら間違いなわけだが。
あんた普段から何作ってもバグだらけでしょ。
0871nobodyさん04/04/02 16:57ID:???
$html_source = << "_EOF_";
test
_EOF_
0872nobodyさん04/04/02 17:00ID:???
>うぁ、すみません。元は$html_source <<"_EOF_";です。
>うぁ、すみません。元は$html_source <<"_EOF_";です。
>うぁ、すみません。元は$html_source <<"_EOF_";です。
0873nobodyさん04/04/02 17:04ID:???
<<を付けた代わりに今度は=を付け忘れました。

右脳でも鍛えてきます。。。
0874nobodyさん04/04/02 17:08ID:???
ヒアドキュメントしか突っ込まれてなくて、肝心の質問には誰もレスしないというのも凄いな。
0875nobodyさん04/04/02 17:42ID:???
>>874
そんなに教えてほしいのかい?8MGWWqTyさんよ。
わざわざsageてID隠さなくでもいいんだよ?
0876nobodyさん04/04/02 17:44ID:???
もう自分でわかったんじゃないの?
あまりにもつまらないミスだし。
0877nobodyさん04/04/02 18:09ID:???
次の質問どうぞ。
書く前に>>1とスレタイ読んでくらはい。
0878nobodyさん04/04/02 20:25ID:???
>>866
デリファレンスしてるところはOK?
0879nobodyさん04/04/03 00:08ID:???
>if (!open(HTML,">$file_html")) { &error(0); }

>>866のこういう書き方する人って他にもいるの?
0880nobodyさん04/04/03 00:30ID:???
open HTML,">$file_html" or &error(0);
同じ意味だから好みだろ
0881nobodyさん04/04/03 02:51ID:???
自分も単一の処理なら and / or を使う。
でもperlをさわりはじめた頃はifでやってたな。
0882nobodyさん04/04/03 07:12ID:???
C/C++のほうがなれてるから>>879みたいなほうが楽。
0883未承諾広告※ ◆TWARamEjuA 04/04/03 11:19ID:???
効率を求めるのなら、
低コスト← and 、or、 後置 if、ブロック →高コスト
と教わった。
■ このスレッドは過去ログ倉庫に格納されています