Perlコーディング初心者質問スレ Part 48
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2006/04/26(水) 18:00:50ID:RLbnve1J【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0002nobodyさん
2006/04/26(水) 18:01:55ID:???CGI: Common Gateway Interface part 13
http://pc8.2ch.net/test/read.cgi/php/1126436361/
【Perl,CGI】参考書籍 第三版
http://pc8.2ch.net/test/read.cgi/php/1030209573/
【Perl】ファイルロック(排他処理)について語ろう
http://pc8.2ch.net/test/read.cgi/php/1024795138/
★負荷軽減対策委員会(Perl、PHP)★
http://pc8.2ch.net/test/read.cgi/php/1034645635/
Perlモジュールについて
http://pc8.2ch.net/test/read.cgi/php/997829243/
CGIに依存しないPerlの話題一般/Part2
http://pc8.2ch.net/test/read.cgi/php/1030548610/
★三 【 スクリプト改造工房 PART 9 】 ★三
http://pc8.2ch.net/test/read.cgi/php/1143834740/
【 スクリプト改造依頼スレ 】(丸投げ) part5
http://pc8.2ch.net/test/read.cgi/php/1141174205/
0003nobodyさん
2006/04/26(水) 18:02:36ID:???Part1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980 参照不能
DAT: http://tako.2ch.net/perl/dat/957208980.dat
Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087 参照不能
DAT: http://tako.2ch.net/perl/dat/971817087.dat
Part3 http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521 参照不能
DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part4 http://tako.2ch.net/test/read.cgi?bbs=perl&key=984430156 参照不能
DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part5 http://pc.2ch.net/php/kako/988/988728069.html
Part6 http://pc.2ch.net/php/kako/996/996075607.html
Part7 http://pc.2ch.net/php/kako/1000/10002/1000267444.html
Part8 http://pc.2ch.net/php/kako/1003/10039/1003900311.html
Part9 http://pc.2ch.net/php/kako/1009/10095/1009549309.html
Part10 http://pc.2ch.net/php/kako/1014/10145/1014556702.html
0004nobodyさん
2006/04/26(水) 18:03:15ID:???Part11 http://pc.2ch.net/php/kako/1017/10172/1017201229.html
Part12 http://pc.2ch.net/php/kako/1019/10199/1019917048.html
Part13 http://pc.2ch.net/php/kako/1022/10227/1022731565.html
Part14 http://pc.2ch.net/php/kako/1026/10269/1026977659.html
Part15 http://pc.2ch.net/php/kako/1028/10288/1028816385.html
Part16 http://pc.2ch.net/php/kako/1032/10320/1032070299.html
part17 http://pc.2ch.net/php/kako/1034/10345/1034583844.html
part18 http://pc.2ch.net/php/kako/1037/10377/1037797479.html
part19 http://pc.2ch.net/php/kako/1042/10422/1042260745.html
part20 http://pc2.2ch.net/php/kako/1044/10447/1044717887.html (タイトルに19と誤記)
0005nobodyさん
2006/04/26(水) 18:03:54ID:???part21 http://pc2.2ch.net/php/kako/1047/10479/1047980851.html
part22 http://pc2.2ch.net/php/kako/1050/10503/1050369328.html
part23 http://pc2.2ch.net/php/kako/1053/10530/1053051519.html
part24 http://pc2.2ch.net/php/kako/1054/10549/1054992610.html
part25 http://pc2.2ch.net/php/kako/1056/10567/1056730690.html
part26 http://pc5.2ch.net/php/kako/1059/10590/1059043704.html
part27 http://pc5.2ch.net/php/kako/1060/10608/1060808783.html
part28 http://pc5.2ch.net/php/kako/1063/10635/1063562491.html
part29 http://pc5.2ch.net/php/kako/1066/10662/1066286828.html
part30 http://pc5.2ch.net/test/read.cgi/php/1069846177/
0006nobodyさん
2006/04/26(水) 18:04:25ID:???part31 http://pc5.2ch.net/test/read.cgi/php/1072896288/
part32 http://pc5.2ch.net/test/read.cgi/php/1075545279/ (タイトルに31と誤記)
part33 http://pc5.2ch.net/test/read.cgi/php/1078076768/
part34 http://pc5.2ch.net/test/read.cgi/php/1081148490/
part35 http://pc5.2ch.net/test/read.cgi/php/1085557731/
part36 http://pc5.2ch.net/test/read.cgi/php/1089779036/
part37 http://pc5.2ch.net/test/read.cgi/php/1093106507/
part38 http://pc5.2ch.net/test/read.cgi/php/1097158988/
part39 http://pc5.2ch.net/test/read.cgi/php/1101522903/
part40 http://pc5.2ch.net/test/read.cgi/php/1106816922/
0007nobodyさん
2006/04/26(水) 18:05:25ID:???part41 http://pc8.2ch.net/test/read.cgi/php/1110383236/
part42 http://pc8.2ch.net/test/read.cgi/php/1116970588/
part43 http://pc8.2ch.net/test/read.cgi/php/1123777607/
part44 http://pc8.2ch.net/test/read.cgi/php/1129477637/
part45 http://pc8.2ch.net/test/read.cgi/php/1134049707/
part46 http://pc8.2ch.net/test/read.cgi/php/1137518266/
part47 http://pc8.2ch.net/test/read.cgi/php/1141195171/ (前スレ)
part44-621氏による過去ログ倉庫
ttp://user.ftth100.com/mirrorhenkan/perl/
0008nobodyさん
2006/04/26(水) 18:05:56ID:???[プログラミング自体の経験が無い奴はまずココを読め]
Perlプログラミング講座: http://www.site-cooler.com/kwl/perl/
[本]
リャマ: http://www.oreilly.co.jp/books/4873111269/
駱駝: http://www.oreilly.co.jp/books/4873110963/
Effective Perl: http://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html
クックブック: http://www.oreilly.co.jp/books/4873112028/
[オンラインマニュアル] (追加)
最新のドキュメント: http://search.cpan.org/~nwclark/perl-5.8.7/
perl5.8.xのドキュメント(一部): http://www.kt.rim.or.jp/~kbk/perl-5.8/
perl5.005_03 のドキュメント: http://www.kt.rim.or.jp/~kbk/perl5.005/
日本語ドキュメント検索: http://www.cpan.jp/search.cgi
perldoc.jp: http://www.perldoc.jp/
Perldoc.com: http://www.perldoc.com/
0009nobodyさん
2006/04/26(水) 18:07:53ID:???[モジュール]
CPAN.com: http://search.cpan.org/
河馬屋二千年堂: http://homepage3.nifty.com/hippo2000/
[テクニック]
Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: http://homepage1.nifty.com/nomenclator/perl/
Perlの小技: http://homepage3.nifty.com/hippo2000/perltips/index.htm
[Perl5.8Unicodeメモ]
http://www.pure.ne.jp/~learner/program/Perl_unicode.html
http://www.namazu.org/~tsuchiya/perl/perl-5.8.html
http://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
0010nobodyさん
2006/04/26(水) 19:02:25ID:???メモリの節約になるって見てから、それ以降ほぼ全てのやり取りを
リファレンス経由でやってるんですが、これってどうなんでしょうか?
そこらへんの作法がよくわからなくて・・・
リファレンスを使用するのは大きなデータを読み込んだときだけにした方がいいんですか?
$str = 'aaa'
↑こういうほんのちょっとの変数でさえリファレンスで渡してたんですが、
普通に変数をコピーして渡すべきなんでしょうか?
0011nobodyさん
2006/04/26(水) 19:05:38ID:???0013nobodyさん
2006/04/26(水) 20:13:44ID:???>>10
その処理のためにスクリプトが10バイトくらい増えてたりしてw
データ大きい時に使うリファレンスはメモリ使用量じゃなく速度目当ての方が多いんじゃないかな。
0014nobodyさん
2006/04/26(水) 20:40:59ID:???メモリーを節約したいならそんなもんじゃぜんぜん不十分だろ。
リファレンスが必要になる時点でおわっとる。
変数は全部グローバルにして使いまわさないと。
コピーに比べたら関数の呼び出しはめっちゃコスト高いからな。
もちろん配列をループで扱うなんてもってのほか。
似たような処理はコピーペーストで記述したほうが速いぞ。
さらにやるなら変数ひとつについてファイルをひとつ作って
必要になったときのみ読み込むようにすると信じられないくらいメモリーが節約できる。
他にもまだまだあるけどこれ以上の極意はタダじゃ教えられないなー
0015nobodyさん
2006/04/26(水) 20:52:51ID:???0016nobodyさん
2006/04/26(水) 21:14:04ID:???逆にいえばパフォーマンスを下げにくいということ?
たまに処理がクソ重い掲示板をとか見かけるんだけど、あれは何が原因なんだろう。
もちろん同じ鯖上で他の掲示板は速かったりする。
0017nobodyさん
2006/04/26(水) 22:08:45ID:keS5Imx+以上
ハイ次
0018nobodyさん
2006/04/26(水) 22:27:04ID:???0019nobodyさん
2006/04/26(水) 22:35:51ID:???スカラ変数1個のメモリなんて誤差範囲に含まれるくらい
0020nobodyさん
2006/04/26(水) 22:40:24ID:???0021nobodyさん
2006/04/26(水) 22:50:55ID:???掲示板で体感でわかるほどの違いになることなんかないんじゃなかろうか。
たまたま別の処理でメモリー使い切っていたとか無駄な解析で遅くなっているとか。
やたらCSSやJS、画像が多いと体感でもはっきり遅いけどね。
0022nobodyさん
2006/04/27(木) 01:36:01ID:???0024nobodyさん
2006/04/27(木) 10:10:59ID:???0025nobodyさん
2006/04/27(木) 11:54:18ID:???無視しろよ。
0026nobodyさん
2006/04/28(金) 04:16:53ID:maSTbsWh2: for ($a = 0; $a <= f; $a++)
3: ダメポ
0027nobodyさん
2006/04/28(金) 04:27:40ID:???for (my $a = 0; $a <= 0xf; $a++) {
print "$a:(゚д゚)<シメジ\n";
}
# 範囲演算子?
for (0 .. 0xf) {
print "$_:(゚д゚)<シメジ\n";
}
002826
2006/04/28(金) 04:48:31ID:???thx!!
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
じゃなくて
0,1,2,3,4,5,6,7,8,9,a,b,c,d,e
と演算させるには地道に置換しかないですか?
0029nobodyさん
2006/04/28(金) 05:25:00ID:???0030nobodyさん
2006/04/28(金) 06:25:40ID:???for('0'..'9', 'a'..'f'){ ... }
0031nobodyさん
2006/04/28(金) 08:57:45ID:???003326
2006/04/28(金) 16:24:53ID:???0035nobodyさん
2006/04/29(土) 07:14:54ID:???どっちも同じこと出来ますよね?
本にはtrの方が高速だと書いてあります。なら全部trでいいですよね?
変換と置き換えの違いがわかりません。
教えてください。
0036nobodyさん
2006/04/29(土) 08:09:45ID:???使い方次第。
>本にはtrの方が高速だと書いてあります。なら全部trでいいですよね?
何をしたいかによる。
試しにs/// で、変数中に含まれる小文字アルファベットを全部大文字にする
正規表現を書いてみよう。
trだと tr/a-z/A-Z/; なんだけど、違いが分かるかな?
0037nobodyさん
2006/04/29(土) 08:10:16ID:???http://perldoc.jp/docs/perl/5.6.1/perlop.pod#item_s_PATTERN_REPLACEMENT_egimosx
http://perldoc.jp/docs/perl/5.6.1/perlop.pod#item_tr_SEARCHLIST_REPLACEMENTLIST_cds
0038nobodyさん
2006/04/29(土) 09:02:10ID:???0039nobodyさん
2006/04/29(土) 12:25:23ID:???気をつけないと嵌る。
tr/\t\n//; # タブと改行にマッチ
tr/\d\s//; # "d"と"s"にマッチ
0040nobodyさん
2006/04/29(土) 23:34:00ID:???read (STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
read (STDIN,$buf,$ENV{'CONTENT_LENGTH'});
$buf eq '' and die;
$buf = $buffer;
ではなくてもう一度<STDIN>に入力する方法ってありませんか?
0042nobodyさん
2006/04/30(日) 01:07:11ID:???> <STDIN>を一度使うと
使うってどういう意味? 標準入力に出力したいのかな。
> もう一度<STDIN>に入力する方法
STDIN へ出力はできないのでは。
というより、設計を見直した方がよさそう。
0043nobodyさん
2006/04/30(日) 05:58:26ID:???処理する(考慮する)内容が少ないからtrが高速ということか
0044nobodyさん
2006/04/30(日) 06:02:22ID:???そういう仕様です
なので、STDINで読み取ったものを再利用したいのなら一度ファイルに書き戻すか、
サイズが小さいなら読み込んだものを再利用するようにコーディングすればいいです
004535
2006/04/30(日) 07:48:31ID:???s/[a-z]/[A-Z]/;
ですね。違いは・・・カッコ?
>>37
参考ページありがとうございます。
tr///は正規表現を使えないということでいいのでしょうか。
>>38
つまり、探すんじゃなくて見つけたモノを単純に置き換えるということでしょうか。
>>39
なるほど。タブや改行を使えると・・・。でもメタ文字は使えないということですね。
みなさん解説ありがとうごぜーました。
ようやく違いがわかりました。
重複するとこもあるけど、役割はちゃんと違うんですね。
0046nobodyさん
2006/04/30(日) 09:13:52ID:???文字クラス展開の有無なんかより、
バックトラックする必要の無い事の方が大きいと思うよ。
>>45
tr/ab/AB/ に等価なのは
s/[ab]/ $& eq 'a' ? 'A' : $& eq 'b' ? 'B' : $& /eg
004736
2006/04/30(日) 10:54:32ID:???ちっがーう! ちゃんと動かして試してみた?
「g」オプションが無いんですよ。
…というのは嘘で、もし s/// で書くとしたら
s/a/A/g;
s/b/B/g;
(中略)
s/z/Z/g;
ってしないとダメなんだ。全然違うでしょ?
>>45に gつけても、出てくるのは小文字アルファベットを [A-Z]に置換した
ワケワカメな結果だけ。
[A-Z][A-Z][A-Z] [A-Z][A-Z][A-Z] [A-Z]…とか。
004836
2006/04/30(日) 10:59:21ID:???$bar=~ s/[a-z]/[A-Z]/g;
print $bar;
結果:
[A-Z] [A-Z][A-Z][A-Z][A-Z] [A-Z] [A-Z][A-Z][A-Z].
# キャラクタクラスだのパターンマッチだのより先に言うべき事が…(;´д`)
004940
2006/04/30(日) 11:00:50ID:???自分のHPで複数の掲示板を設置しているのですがコメントスパムがひどいんです。
その対策として現在稼動しているCGIにスパム対策を記述したplファイルをrequire '….pl';と読み込ませば
今後の追加対策もplファイルひとつで対応出来ます。
本体のCGIを改造するのは複数あるので困難だし配布先がバージョンアップすると一からやり直しだし、。
という理由で対策用のplファイルで一度<STDIN>読み込んで処理し問題無ければ本体のCGIに戻る→標準入力から呼び出す処理が始まる。
という理由です。
0050nobodyさん
2006/04/30(日) 11:13:20ID:???複数の掲示板って一体いくつあるの?
面倒がらずに改造したものを一つ一つ上書きすればいいじゃん。
'….pl'でコメントスパム対策ができるくらいのスクリプトは書けるんでしょ?
本体の頭でrequireしておいて、<STDIN>の後ろに外部サブルーチン呼び出しを
書くだけだから実質2行の追加で本体改造は終わると思うんだが。
0051nobodyさん
2006/04/30(日) 11:28:56ID:???0052nobodyさん
2006/04/30(日) 12:03:02ID:???改造物なら専用スレできいてほすぃ。
あくまでもPerlコーディング初心者、つまりこれから上達したい人の質問にその道の先輩が
答えるのが本道なわけだし。
0053nobodyさん
2006/04/30(日) 13:42:36ID:???tr/ab/ba/ と s/a/b/g; s/b/a/g; は結果が変わるから
tr/a-z/A-Z/ を s/a/A/g …のように説明するのはどうかと思うんだ。
005447-48
2006/04/30(日) 13:58:12ID:???そりゃ、結果は変わるよね(変換がまとめて行われるか否かってレベルで)。
s/a/A/g; のように26回繰り返せば tr と同じ事ができるよって言いたかったんじゃなくて
s/// と tr/// の用途の違いを見せたかっただけ。
そもそも tr は 0-9 a-z A-Zのように連続している事が保証されている文字グループを
同数の別文字に変換する目的なので、その場合は数の多寡に限らず s/// は使わないのがよい。
とか追記すればよかったかな。
005547-48
2006/04/30(日) 14:09:07ID:???jperlやPerl5.8+UTF8で、漢字の新旧変換とか異体字変換する時に重宝する。
005640
2006/04/30(日) 14:33:27ID:???自作しているPerlのコーディングに関する内容なのでここで質問した次第です。
スレ主1の趣旨とかけ離れていると思いませんでしたし。それにここは人が多そうなので。
どうせならrequire '….pl';1行の改造だけで済ませたいです。
# GETメソッドによるチェックもあるのでCGIの2行目に記述しているから
どういうラッパーなんでしょうか?
パイプを変則的に使えば実現出来るのは知っていますが、うちのプロバイダのサーバでは
パイプが使えないようなんです。
0057nobodyさん
2006/04/30(日) 15:34:27ID:???> 自作しているPerlのコーディングに関する内容
え、自作なの? >>49では
> 配布先がバージョンアップすると一からやり直しだし
って書いてあるけど…。
0058nobodyさん
2006/04/30(日) 15:53:15ID:???例えば本来のSTDINを閉じてIO::Stringにtieするモジュール。
strictじゃない環境で動かすつもりならIO/String.pmに
ttp://search.cpan.org/src/GAAS/IO-String-1.08/String.pm
を置いて、四行目以降をplファイルに突っ込めばOK。
#=======================================
package Hack::STDIN::Seekable;
use strict;
use warnings;
use IO::String;
my $stdin = join '', <STDIN>;
close STDIN;
tie *STDIN, 'IO::String', \$stdin;
1;
#=======================================
…新たに書こうとしてるならこんなのは絶対に使って欲しくないけどね
0059nobodyさん
2006/05/01(月) 00:18:30ID:kok0N6Ezプログラム中でUse::TextChaSenとしても実行されていないようです。
#!C:/cygwin/bin/perl
use Text::ChaSen;
print "hoge";
とするとエラーも何も出ずに終わってしまうのですが、どういうことなのでしょうか?
モジュールが正しくインストールされていないんですかね?
0060nobodyさん
2006/05/01(月) 00:30:02ID:???>>59
> プログラム中でUse::TextChaSenとしても実行されていないようです。
その宣言は間違いかもしれません。一般に、 use Text::ChaSen; かも。
> use Text::ChaSen;
> print "hoge";
> とするとエラーも何も出ずに終わってしまう
モジュールが正しく導入された、正常な状態です。
モジュールのインストールでミスってると、@INCを全部探したけどモジュールのファイルが
見つからんぞ、どないなっとんねん?というエラーメッセージが出るはずなので。
結論としては「何ら問題なくインストールできてる。use するときの書き方を再確認すると安心」
ぐらいじゃないですか?
0061>>60
2006/05/01(月) 00:34:25ID:kok0N6Ezprint "hoge";
とした場合hogeは表示されると思うのですが、それすら表示されないのです。
use Text::ChaSenの行でプログラムが終了してそれ以降の行に進んでいない気がするのですが…
0062nobodyさん
2006/05/01(月) 01:02:08ID:???CGIアクセスが実行されるときは、それが投稿なのか普通にアクセスされただけなのかは判別出来てるよね?
それなら簡単じゃないかと・・・
たとえば
my($spamflag) = 0;
if($in{'exec'} eq 'postmsg'){
require 'denypost.pl';
$spamflag = &denypostcheck($in{'posttitle'}, $in{'posthome'}, $in{'postmail'}, $in{'postbody'});
}
のようにすりゃいいんじゃないのでしょか?
denypost.plは
sub denypostcheck{
だらだら〜あーだこーだ
}
1;
だけ
難しく考えすぎじゃないのかな?
0063nobodyさん
2006/05/01(月) 10:13:04ID:BiGx6+8rforeach $log(@rankpairs){
($jikan,$name,$score)=split(/=/,$log);
if($pair{score}>$score){
push(@newrank,"$hiduke=$pair{name}=$pair{score}");
$check=1;
}
if($check==1){
if($pair{name} eq $name){next;}
}
push(@newrank,"$jikan=$name=$score");
}
得点ランキング用のCGIで、個人の最高得点を記録した後、
ログファイルにある$log{name}データと、フォームから送られた$pair{name]が同じ場合は、
それ以降、同じ名前の人は登録をせずにスルーしたいのですが、どうしてもうまく動いてくれません。
全てが「真」と判断されてしまうみたいで、全て「next」を通ってしまいます。
一体、どこが間違っているのでしょうか? perlの辞典も買ってきて
色々と調べているのですが本当に分かりません。
0064nobodyさん
2006/05/01(月) 10:59:16ID:???ロジックをよく見直せ。
pushした後で名前の値を比較してどーすんだよ。アフォかいな。
0065nobodyさん
2006/05/01(月) 11:19:05ID:BiGx6+8rそれ以降のループで名前の比較をして、nextしているつもりなのですが…。
0066nobodyさん
2006/05/01(月) 11:28:23ID:???foreach $log(@rankpairs){
($jikan,$name,$score)=split(/=/,$log);
if($check==1){
if($pair{name} eq $name){next;}
}
if($pair{score}>$score){
push(@newrank,"$hiduke=$pair{name}=$pair{score}");
$check=1;
}
push(@newrank,"$jikan=$name=$score");
}
でも、順番を変えたら成功しました。
なぜこれだとうまく行くのか、正直まだ理由が理解できていませんが、
>>64、ヒントを下さってありがとうございました。
0067nobodyさん
2006/05/01(月) 12:00:35ID:???そのソースじゃ問題ありそうな悪寒
0068nobodyさん
2006/05/01(月) 12:03:06ID:???掲示板を作っているのですが
openで読み取りの前に読み込むログを
ロックする必要はあるのでしょうか?
0069nobodyさん
2006/05/01(月) 12:11:37ID:???k○ntのロックの仕方は真似しちゃ駄目よ
0070nobodyさん
2006/05/01(月) 12:15:54ID:???ありがとうございます。
0071nobodyさん
2006/05/01(月) 15:50:31ID:???0073nobodyさん
2006/05/01(月) 17:07:02ID:???0074nobodyさん
2006/05/01(月) 17:15:00ID:???0075nobodyさん
2006/05/01(月) 17:15:27ID:???KENT WEB 総合スレ Part2
http://pc8.2ch.net/test/read.cgi/php/1078991985/
0077nobodyさん
2006/05/01(月) 18:08:15ID:???今でもあんな書き方してるんだったら知らん^^;
0078nobodyさん
2006/05/01(月) 18:09:41ID:???0079nobodyさん
2006/05/01(月) 19:50:42ID:???おまえら注目しすぎ。
0080nobodyさん
2006/05/01(月) 19:53:55ID:???008240
2006/05/01(月) 20:23:44ID:???動作確認しました。
個人的に使うだけなので・・・(^^;
稼動中の掲示板にはrequire一行だけしか記述せずに動作させてみたかったんです。
>>40
にもそれらしいことは書きましたが
plファイル抜ける時にreturn $buffer;としてそれを受け取るように稼動中のCGIも改造すれば
すむんですが、こだわってみたかったんです。
だからplファイルはほとんどif文ばかりです。もちろんそれがPOSTとGETなのか動作判定はしてます。
動作的に投稿時の<STDIN>を2回処理する無駄はありますが、体感出来るほどでもないですし。
0083pel
2006/05/02(火) 10:15:11ID:???例えば下記CGIを実行したとき、バックグラウンドでthre2を実行しておき、ブラウザにはすぐthre1を実行した結果としてprintを実行したいのですが、thre2の終了を待たなければ、thre1は実行されないのです。
これではブラウザがハングアップしてしまうのですが、どのようにしたらよいのでしょうか?
perlのforkやDOSのコマンドstartも試したのですが駄目でした。
***************
use v5.8.0;
use threads;
my $thread1 = threads->new(\&thre1, "1");
my $thread2 = threads->new(\&thre2, "2");
$thread1->join;
$thread2->join;
sub thre1() {
print "$_\n";
threads->yield();
}
sub thre2() {
sleep(30);
threads->yield();
}
***************
よろしくおねがいします!
※マルチポストさせていただいています。
http://www.gac.jp/article/index.php?stats=question&category=10&id=17717&command=msg
0084nobodyさん
2006/05/02(火) 11:06:58ID:???全体のコードが長くなっても、ifを使わないで別処理にしていくのでは、どっちがいいんでしょうか?
前者はコードは短くなりますが、頻繁にifを使うので処理が重くなりそうな気がするんですが・・・
0086nobodyさん
2006/05/02(火) 11:10:02ID:???008885
2006/05/02(火) 11:33:29ID:???0089pel
2006/05/02(火) 11:35:57ID:???86>>
UNIXサーバで動いたforkを使ったソースそのままをWindowsサーバで動かしたら、thread同様printされずです。
0090nobodyさん
2006/05/02(火) 11:39:33ID:???0091pel
2006/05/02(火) 12:09:46ID:???(タスクマネジャ参照)
しかし、ブラウザが拘束されて、printされないことが回避できません。
方法知りませんか?
0092pel
2006/05/02(火) 12:11:19ID:???すいません、今テストしたところ、threadは使えてバックグラウンド処理は行えているようです。
(タスクマネジャ参照)
しかし、ブラウザが拘束されて、sleepが終わらないとprintされないことが回避できません。
方法知りませんか?
0093nobodyさん
2006/05/02(火) 12:18:06ID:???0096nobodyさん
2006/05/02(火) 15:30:13ID:???$net_ftp->rmdir('directory');
だと、空じゃないディレクトリは消えないのですが、これを
rm -rf(unix)
rd /s /q(NTのCMD)
みたいなことってできますか?
先にディレクトリの中を空にしてから、cdup()で上がって消すしかないですか?
あと、これはついでなのですが・・・
rmdir(DIR,[RECURSE])
mkdir(DIR,[RECURSE])
の中に入るRECURSEって何を入れたらいいもんなんでしょう。。
0097nobodyさん
2006/05/02(火) 15:46:28ID:???$net_ftp->rmdir('dir', 1);
みたいにしたらディレクトリの中身ごと消してくれる。
とNet::FTPのドキュメントに書いてある。
0098nobodyさん
2006/05/02(火) 16:33:51ID:???そのあたりはドキュメント見ながらやったのですが、
$net_ftp->rmdir('dir', 1);
をやるとエラーが出ます。
Deep recursion on subroutine "Net::FTP::rmdir" at C:/perl/lib/Net/FTP.pm line 612.
となって、100回以上ループしてるようなんです。
1と文字列の'true'は試してみました・・・
0099nobodyさん
2006/05/02(火) 17:55:48ID:???今CGI掲示板をいじっているのですが
foreachの前に配列や変数を空にする場合
よく@xxx=(); $=0;と見るのですが
undefはあまり使わないのでしょうか?
0100nobodyさん
2006/05/02(火) 19:04:32ID:???初期化とは意味が違います
0102nobodyさん
2006/05/02(火) 20:30:46ID:???use strict;
my($test);
$test=""; #初期化
print $test;
undef $test; #削除
print $test;
結果:Use of uninitialized value in print at a.pl line 11.
まぁお好みでいいんじゃね?
0103nobodyさん
2006/05/02(火) 20:32:50ID:???0105nobodyさん
2006/05/02(火) 20:35:43ID:???いや、strictなソースは素晴らしいけど、warningsはマジで要らなくないか?
空の値をprintするだけでも警告出るんだぞ?
0106nobodyさん
2006/05/02(火) 20:36:41ID:???0107nobodyさん
2006/05/02(火) 20:37:40ID:???0108nobodyさん
2006/05/02(火) 20:47:13ID:???0109nobodyさん
2006/05/02(火) 20:51:56ID:???0110nobodyさん
2006/05/02(火) 21:03:44ID:???0111nobodyさん
2006/05/02(火) 21:46:19ID:???0112nobodyさん
2006/05/02(火) 21:57:52ID:???0113nobodyさん
2006/05/02(火) 22:02:10ID:???perldoc perl
0114nobodyさん
2006/05/02(火) 22:05:57ID:???0116nobodyさん
2006/05/03(水) 14:03:38ID:???warnings は、warnings の存在意義を理解できないプログラマに最適化されたプラグマです。
つまり、あなたのためにこそ存在しているんです。
必要だと感じる *前に* ぜひ使ってください。
0117nobodyさん
2006/05/03(水) 14:44:49ID:???0118nobodyさん
2006/05/03(水) 16:28:30ID:???0120nobodyさん
2006/05/03(水) 17:07:03ID:???0122nobodyさん
2006/05/03(水) 20:12:19ID:???0123nobodyさん
2006/05/03(水) 21:10:16ID:???お前の常識は世間の非常識
っていう煽りは置いといて、
常識は常識だろうけど開発が終われば外すのがいいんでねーの
0124nobodyさん
2006/05/03(水) 21:18:36ID:???そんな面倒なことやってられるかと思ってたけど、
実際コーティングしていくと、必然的に全ての外部データは
チェックするのが当然だしね。
ただ、処理速度が犠牲になるのがネックか。
0125nobodyさん
2006/05/03(水) 22:05:56ID:???はつみみです。
0126nobodyさん
2006/05/03(水) 22:58:28ID:???掲示板をいじっているのですが
(かなり頻繁にログをチェックしたり読み込んだりするタイプです。)
ソースを見ると
openでログを読み込む時に全部読み込んでいるようです
つまり@xxxx = <F>;となっています。
これは必要な部分だけ抜き出すように書き換えた方が良いのでしょうか?
書き方は調べて判ったのですが
いまいち効果があるのか無いのか判りません。
ログの最大容量はまだ決めていないのですが
最大1Mbyteくらいにしようと考えています。
使っているサーバーは共用サーバーで
mod-gzipが自動的に入っているみたいです。
0128nobodyさん
2006/05/03(水) 23:14:22ID:???まぁ一概には何とも言えんが
0130nobodyさん
2006/05/03(水) 23:25:30ID:???ログ = 1ファイルで1MBということなら、掲示板にしてはかなりサイズが大きいかもね。
その1MBをまた別の変数へ格納してるとか。マズイ造りになっているようなら改造するのもありだけど、
そうでないなら別に気にするほど大きいわけでもないよ。
0131126
2006/05/04(木) 00:00:07ID:???100ヶ所くらいあるので迷ってました
>127-130
ありがとうございます。
0133nobodyさん
2006/05/04(木) 00:21:22ID:???0134nobodyさん
2006/05/04(木) 02:48:36ID:???0136nobodyさん
2006/05/04(木) 04:22:02ID:???私は開発から抜けさせていただきます!
こういうことですかぁ
0137nobodyさん
2006/05/04(木) 05:32:15ID:???掲示板のログ読み込みだと、
open(FH,'<',$path) or die "error: $!";
@data = <FH>;
って全部読み込んでから@dataに対して要素数を調べて、最大表示件数で割って・・・
ってな感じでやってたんですが、
直接FHの行数(要素数?)を調べたり、5行目から10行目を読み込むみたいな操作が出来るんでしょうか?
FHは配列と同じように扱えるのかな?
やり方教えてください。
0138nobodyさん
2006/05/04(木) 05:47:04ID:???俺は使った事ないから分からないけど、tieを使えばできると思う。
ただテキストファイルの10MBや20MBくらい屁でもないし(Perl5.8@WinXP)
スクリプトを簡潔に書く意味でもまとめ読みがいいんじゃないかな…
すごくアクセスが多いとかログファイルが膨大とか
掲示板レンタルシステムみたいなのになったらまた話は別だけど。
0139nobodyさん
2006/05/04(木) 08:40:59ID:???そんなに配列で扱いたいのなら、Tie::Fileでもつかうといいさ。
# 使ったことがないから、効率はシラネ。
0140nobodyさん
2006/05/04(木) 10:58:56ID:???0141nobodyさん
2006/05/04(木) 11:40:50ID:???本に現在の行数を表すと書いてあったので、
while(@data = <$fh>){
if($_ =~ /^$num\t/){
$line_num = $. ;
}
}
このように組みました。
ファイルを読み込んでいって、パターンにマッチするデータがあったら
その行数を $line_numに記録しておいて、
あとから@dataにspliceで、記憶していた行にデータを挿入・・・としたいのですが
なんかうまくいきません。
0142nobodyさん
2006/05/04(木) 14:10:19ID:???> なんかうまくいきません。
そういわれても…。まずは >>1 を読んでね。
で、>>141 のコードの 1番目の間違いは、while の条件部にリスト(ここでは配列への代入)を置いていること。
s/while/foreach/ で恐らく動作するようにはなるけれど、改良の余地はあちこちにごっそりありそうなんでがんばれ。
# もちろん 0番目の間違いは use strict と use warnings 乃至 -w スイッチを使っていないことなわけだが。
0143nobodyさん
2006/05/04(木) 16:32:58ID:???> s/while/foreach/ で恐らく動作するようにはなるけれど、
$. が常に最後の行番号になるのは変わらんな。
0144nobodyさん
2006/05/05(金) 11:18:14ID:???複数のファイルにわけたら?
件数でわけるなり、日で分けるなり。
0145142
2006/05/05(金) 15:37:32ID:???> $. が常に最後の行番号になるのは変わらんな。
ツッコミさんきゅ。
仮に「あとから」でなくてよいのであればこんな解法も。
push @data, /^$num\t/ ? ($insert, $_) : $_ while <$fh>;
>>141 を額面どおりに取ればこんな感じか。
while (<$fh>) {
$line_num = $. if /^$num\t/;
push @data, $_;
}
0146nobodyさん
2006/05/05(金) 15:59:02ID:???0147nobodyさん
2006/05/05(金) 16:11:31ID:???例えば1から9まで入力させて、それぞれに対応したhtmlを表示するcgiを作るときは
・それぞれのhtmlを作る関数を作っておいて、ifで入力によって呼ぶ関数を分ける
・それぞれのhtmlを作るcgiを作って、ifで呼ぶcgiを分ける
どっちが一般的ですか?あとヒアドキュメントを使うのは好ましくない場合とかありますか?
0148nobodyさん
2006/05/05(金) 16:25:37ID:???入力者の名前とかを使いたいなら
(1)表示用HTMLをテンプレートとして用意
(2)CGIで適当なテンプレートHTMLを読む
(3)名前とか、そのほか色々を置換して表示
がいいんじゃないかな
HTMLは1つで済むし
0150nobodyさん
2006/05/05(金) 16:40:07ID:???0151nobodyさん
2006/05/06(土) 01:44:53ID:???起動スクリプトは1つの方が管理は楽
#条件処理
my $ACTION = {
1 => \&do_1,
2 => \&do_2,
3 => \&do_3,
}
MAIN:{
# 初期化処理を適当に
$ACTION->{ $cgi->param('action') }->();
# テンプレ表示処理などをする
}
sub do_1{}
sub do_2{}
sub do_3{}
0153nobodyさん
2006/05/06(土) 08:42:44ID:???my $mode = get_mode();
my $action = [undef, \&do_1, \&do_2, \&do_3]->[$mode] or error();
$action->();
>>152
オブジェクト指向以外で、いい書き方ある?
0154nobodyさん
2006/05/06(土) 09:22:34ID:???どんな書き方をオブジェクト指向としたいのか明確にしてよ。
0155nobodyさん
2006/05/06(土) 09:29:06ID:???0156nobodyさん
2006/05/06(土) 09:47:31ID:???KENT 臭い書き方ということ?
0157nobodyさん
2006/05/06(土) 09:52:54ID:???if($mode eq 'write'){ &write; }
0158nobodyさん
2006/05/06(土) 09:59:47ID:???0159nobodyさん
2006/05/06(土) 10:38:27ID:???my $action = 'do_' . $cgi->param('action');
eval {
no strict 'refs';
$action->();
};
0160nobodyさん
2006/05/06(土) 10:46:49ID:???パッケージ作って、blessした変数を使う方法全般。
Perlっぽいとしたら、こんなのとか。
my $mode = get_mode();
my $do = "do_". $mode;
my $obj = Local_table->new();
$obj->$do();
exit;
package Local_table;
sub new { return bless {}, shift }
sub do_1 {}
...
sub AUTOLOAD {
use vars qw($AUTOLOAD);
my $self = shift;
my $name = $AUTOLOAD;
$name =~ s/.*:://;
error("not implemented $name");
}
sub DESTROY {}
# 書いてたら、>>159に似てる…。
0161nobodyさん
2006/05/06(土) 12:36:26ID:???渡された変数名の関数を呼べばKENT風に書かなくてもいいのか。 なるほど。
でも、存在しない関数を呼び出されそうな場合のトラップはどうすればいいだろ?
その関数が存在するか調べてたらKENT風に書くのと対して変わらんし・・
0162nobodyさん
2006/05/06(土) 13:46:28ID:???0163nobodyさん
2006/05/06(土) 14:37:39ID:???evalの中で関数呼び出して、evalを抜けた直後の$@がNULLだったらエラー無しか
なるほど
これはいいかもしんない
0165nobodyさん
2006/05/06(土) 15:13:21ID:???0166nobodyさん
2006/05/06(土) 15:40:56ID:???リファレンスを使うのはポインタでつまずくC言語みたいだし、
evalはうっかりダブルクォートで変数を使ったりするとアレな事があるし。
0167nobodyさん
2006/05/06(土) 15:44:49ID:???なんか不具合でも?
携帯だから調べらんねorz
0168nobodyさん
2006/05/06(土) 16:07:17ID:???このスレ的に糞レス。
上級者気取りのPerlerの腕自慢スレじゃないんだぞ☆
>>162-163
kwsk
0170nobodyさん
2006/05/06(土) 16:12:28ID:???0171nobodyさん
2006/05/06(土) 16:58:36ID:???0172nobodyさん
2006/05/06(土) 17:01:22ID:???0173nobodyさん
2006/05/06(土) 17:07:20ID:???0174nobodyさん
2006/05/06(土) 17:15:25ID:???0175nobodyさん
2006/05/06(土) 17:18:17ID:???0176nobodyさん
2006/05/06(土) 17:27:05ID:???別言語に移植しやすいように書くよう心がけてます
0177nobodyさん
2006/05/06(土) 17:29:31ID:???0178nobodyさん
2006/05/06(土) 17:37:48ID:???elsif ($mode eq 'test2') { &test2; }
elsif ($mode eq 'test3') { &test3;}
&main;
test.cgiにそのままアクセスされたらサブルーチンmainを表示
test.cgi?mode=test1でアクセスされたらサブルーチンtest1を表示したいのですが
実際やってみても全てmainが表示されてしまいます、どうしたらいいんでしょうか。。。
0179nobodyさん
2006/05/06(土) 17:40:22ID:y5pDzvYJ0180nobodyさん
2006/05/06(土) 17:40:52ID:qaiuXg8a&jcode::sjis($value);
とかやって、外から入ってきたデータの文字コードをshiftjisにしてますが、
これを今のEncodeモジュールを使って表現するとどうなるんでしょうか?
0182178
2006/05/06(土) 18:14:42ID:y5pDzvYJif ($mode eq 'test1') { &test1; }
elsif ($mode eq 'test2') { &test2; }
elsif ($mode eq 'test3') { &test3;}
else { &main; }
にしたんですが、、やっぱりmainの内容が表示されてしまいます…
$modeの定義方法が悪いのでしょうか…
test.cgi?test1と書いたらtest1の内容がちゃんと表示されました
むー…
0183nobodyさん
2006/05/06(土) 18:14:56ID:???>test.cgi?mode=test1
これで test1 が $modeに入るわけないけど、そこらへんの理解は大丈夫だよね?
0186178
2006/05/06(土) 18:23:50ID:y5pDzvYJはあ…確かにそうですよねえ
でもKENT氏のCGIとか見てもよくわからない…
そこらへんの理解が大丈夫そうじゃないですorz
0187nobodyさん
2006/05/06(土) 18:23:54ID:???0188178
2006/05/06(土) 18:31:07ID:y5pDzvYJhttp://read.kir.jp/file/read45847.zip
アップしました
表示分岐テスト用に作ってあるだけなので内容は短いです
0189nobodyさん
2006/05/06(土) 18:33:09ID:???いきなり
> #$mode = $ENV{'QUERY_STRING'};
に吹いたw 何でコメントアウトしてあるんだよw
0190nobodyさん
2006/05/06(土) 18:39:43ID:???0191178
2006/05/06(土) 18:41:01ID:y5pDzvYJそれを入れるとtest.cgi?test1になってしまうからですかね…
どうやったら$modeをきちんと認識させられるでしょうか...
0192nobodyさん
2006/05/06(土) 18:44:54ID:???ここでも音読してなさい
あんまいいサイトとは言えないけど
0193nobodyさん
2006/05/06(土) 18:46:06ID:???そしたら = でsplitして後は好きなように料理すればいいじゃん
0194nobodyさん
2006/05/06(土) 18:53:46ID:???my %mode_map = map { $_ => 1 } qw(test1 test2 test3);
my $mode = param('mode') || '';
$mode_map{$mode} ? $mode->() : main();
これでいい気がする。
0195178
2006/05/06(土) 18:59:44ID:???ありがとうございます、参考にしますm(__)m
>>193
ありがとうございます
>>194
ためしにやってみたらできました!
みなさん本当にありがとうございました
これで目的のものを作っていけます
0197nobodyさん
2006/05/06(土) 22:10:22ID:5YeEOpS5$countdat = "count.dat";#カウンターログファイル
$ipdat = "ip.dat";#IPログのファイル
open (IP, "+<$ipdat");
flock(IP, LOCK_SH);
$iplog = <IP>;
$ip = $ENV{ 'REMOTE_ADDR' };
if( $ip eq $iplog ){
seek(IP, 0, 0);
print (IP $ip);
close (IP);
}
else{
open (DATA, "+<$countdat");
flock(DATA, LOCK_SH);
$count = <DATA>;
$count++;
seek (DATA, 0, 0);
print(DATA $count);
close(DATA);
print (IP $ip);
close (IP);
}
exit;
0198nobodyさん
2006/05/06(土) 22:11:24ID:5YeEOpS5作りたくて上記のようにうってみたのですが、エラーが出て
しまい、うまく動作しません。何が間違っているか自分では分からないので
教えてもらえたらと思います。
0202nobodyさん
2006/05/06(土) 23:01:55ID:???0204nobodyさん
2006/05/06(土) 23:20:24ID:5YeEOpS5裏で処理させるだけのものってことでお願いします・・・。
>>200
Internal Server Errorなのか分からないです。
分かることだけ書いてみます。
・パーミッションは実行権限与えてます。【755】
・呼び出してはいるみたいですが、実行できていないため
ファイルも作成されていません・・・・。
0206nobodyさん
2006/05/06(土) 23:32:02ID:???エラーが出るのではなかったの?
CGI Wrap Errorみたいなのに過剰に優しく包まれてしまってるの?
ついでに。
http://pc8.2ch.net/test/read.cgi/php/1104624784/2
0208nobodyさん
2006/05/07(日) 00:25:58ID:???実行できてないのが分かってるなら文法エラー
エラーログにエラーとなる原因の行が書かれてるからその1行を書く
エラーがごっそり出てる場合は、たとえばCGIにアクセスした時間が00:00:50とするなら、
エラーログで00:00:50の時間帯のエラーの最初の1文を貼り付ければいい
念のため2〜3行でもいいし
とにかくエラーログを貼らないとどうにもならないです
0209nobodyさん
2006/05/07(日) 00:36:16ID:NJ/WTSjH2: http://siriasu.s10.xrea.com/cgi/wsrch/wwwsrch.htmのサンプルを設置してみました
3: こんな感じになりました
・フォームに半角カナがあると文字化けを起こして検索できない
・検索がきちんと行われてもヒントとして表示される文が文字化けを起こす
Shift-JISのファイルを検索したいのですがどなたかコーディング&アドバイスお願いします
0210nobodyさん
2006/05/07(日) 00:47:39ID:???改造のお話なので、どっちかのスレに移動してください。
・ヒントをもらいながら自力でがんばる場合はこっち
★三 【 スクリプト改造工房 PART 9 】 ★三
http://pc8.2ch.net/test/read.cgi/php/1143834740/1+3
・何かとよろしくお願いしてしまう場合はこっち
【 スクリプト改造依頼スレ 】(丸投げ) part5
http://pc8.2ch.net/test/read.cgi/php/1141174205/1+3
0211nobodyさん
2006/05/07(日) 00:48:45ID:NJ/WTSjH分かりました
0212nobodyさん
2006/05/07(日) 01:02:55ID:???悪癖をこじらせたまま成長して欲しくないのでざっと目視添削してみます。
1. 特に理由がなければ常に -w スイッチ(あるいは可能なら use warnings)を使いましょう。
# できれば use strict も使いましょう。
2. flock() で文字列定数を使うときには...>>199
3. CGI.pm の利用を検討しましょう。大丈夫、案外怖くないです。
4. or die などを用いて open (と flock, seek)の返り値を確認しましょう。
# サンプル用に省略してたなら失礼。
5. "+<" モードでは存在しないファイルを開けません。前もってファイルを用意しておくか sysopen() を使いましょう。
6. print(FH $output) ではなく print FH ($output) と書きましょう。間接オブジェクトスロットの記法に注意しましょう。
7. サーバにアップロードする前に、最低限 -wc スイッチを用いたチェックをクリアーしましょう。
がんばれ。
0213212
2006/05/07(日) 01:13:44ID:???0214nobodyさん
2006/05/07(日) 01:50:30ID:???参考にさせてもらうよ
0215nobodyさん
2006/05/07(日) 02:12:23ID:uQfuojW8一応本(VBA)とネットの情報で、ローカルで実行して動くものはできました。
ただこれを、同じPCにApache入れてCGIとして動かすと動作が止まってしまいうまくいきません。
Apacheのエラーログには何も残らず、Wordが強制的に中断されたような状態になってしまいます。
行き詰まってしまって全く手がかりがつかめません。
どなたか、ご教授願えませんでしょうか。
# 一応Content-type書いてないとかそういうミスはないと思います。
0216nobodyさん
2006/05/07(日) 02:36:06ID:uQfuojW8すれ違いの質問っぽいので向こうで聞いてきます。。。
0217nobodyさん
2006/05/07(日) 11:10:27ID:YyQiWuCM掲示板を作りたくてperlについて学び始めた者です。
で、そのための学習書に沿って学ぼうとしてるんですけどperlのサンプルファイルがうまく起動しなくて困ってます。
ファイルを立ち上げても、一瞬ウィンドウが開いてすぐに消えてしまうからです。
原因のわかる方、対処法を教えてください。よろしくお願いします。
0218nobodyさん
2006/05/07(日) 11:20:12ID:???その説明ではエスパーでないと原因が分からないと思います。
0220nobodyさん
2006/05/07(日) 11:26:57ID:???なので219さんが言う通りにやってみるとよい
0221217
2006/05/07(日) 11:35:33ID:YyQiWuCM219さん、ありがとうございますm(_ _)m
でも直接立ち上げるにはどうしたらいいかわかります?
やっぱり少し不便なんでアドバイスもらえるとありがたいです。
0222nobodyさん
2006/05/07(日) 11:40:21ID:???2.常にコマンドプロンプトを起動しておく
3.Apache を入れる
0223nobodyさん
2006/05/07(日) 11:41:57ID:???コマンドプロンプトを起動しておいたままってのが一番簡単かな
0224nobodyさん
2006/05/07(日) 11:45:26ID:???練習にはコマンドプロンプト起動よりずっと良いし、CGIじゃなければそのまま使い続けられる。
UTF8のスクリプトに対応していないのが残念だが、練習レベルでは関係ないし。
0225nobodyさん
2006/05/07(日) 11:50:35ID:???197に書かせてもらった本人です。
これを参考にもう一度見直してみます。
エラーの内容が分かったらまた書かせてもらうかもです。
ありがとうございます。
0226nobodyさん
2006/05/07(日) 12:00:24ID:???AnHTTPd・設定
http://penguin.nakayosi.jp/windows/anhttpd.html
AnHTTPdの設定のドキュメントルート欄にsample.plの入っているパスを書く。(例えば、c:\Perl\eg)
ブラウザ(IEとか)のアドレス入力欄に”http://127.0.0.1/sample.pl”と入力してエンター。
0227nobodyさん
2006/05/08(月) 12:15:35ID:???@echo off
perl %*
pause
とかなんかそういう内容のバッチを書いて拡張子 ".pl" に関連付けるがいい。自己責任で。w
ちなみに cmd.exe 限定。command.com な人はちょっと違ってくるので注意な。
0228nobodyさん
2006/05/08(月) 15:30:46ID:SAcZGaHhテンプレートをHTML::Templateを使用して出力しているのですが、
クッキーをヘッダに書きだすにはどうすれば。。。?
use strict;
use CGI;
use HTML::Template;
my $q = new CGI;
my $cookie = $q->cookie(-name=>'TEST', -value=>"cokkietest", -expires=>'+1h');
print $q->header( -type => 'text/html' -charset => 'EUC-JP', -cookie => $cookie);
my $tmpl = HTML::Template->new(filename => 'test.html');
$tmpl->param(TESTNAME => 'クッキー書けない');
print "content-type: text/html\n\n";
print $tmpl->output();
0229nobodyさん
NGNG0230nobodyさん
NGNG0231nobodyさん
2006/05/08(月) 15:56:32ID:???いらなくね?
0233nobodyさん
2006/05/08(月) 20:54:56ID:???原因が分かりました。
標準出力に何も表示させないとエラーが出るみたいです。
なので、
print "Content-Type: text/html\n\n";
print "$count\n";
を付け加えて、CSSでvisibility: hidden;で隠せばエラーが出ず
ファイルをうまく作成してカウントしてくれるみたいです。
最後に、質問に答えてくれてありがとうございます。
0234nobodyさん
2006/05/09(火) 02:28:53ID:sSrkJPdW2: &jcode::convert(\$word, "euc");
3: ひらがなや漢字のみのケースでは変換されましたが
半角カナのみのケースや半角カナだけのケースでは変換されませんでした
0236nobodyさん
2006/05/09(火) 03:56:51ID:sSrkJPdWマジっす。
&jcode::convert(\$word, "euc");
してから再度Shift-JISに変換したら今度は文字化けします。
0237210
2006/05/09(火) 04:44:28ID:???↓別の人?
http://pc8.2ch.net/test/read.cgi/php/1143834740/43 に行ったここの>>209
http://pc8.2ch.net/test/read.cgi/hp/1143690384/253 で俺を召喚してる人
0238nobodyさん
2006/05/09(火) 09:06:41ID:???・厳密にはShift_JISに半角カナは含まれない。
・Shift_JISで使う半角カナのコードはEUC-JPの漢字コードと被ってる。
よってノーマルのjcode.plの自動判別に半角カナは使えない。
入力する文字コードを指定するか、jcode.plを自分でカスタマイズする。
0239nobodyさん
2006/05/09(火) 09:15:01ID:???0241nobodyさん
2006/05/09(火) 12:05:05ID:???0242nobodyさん
2006/05/09(火) 12:20:31ID:???0243nobodyさん
2006/05/09(火) 12:25:16ID:???0244nobodyさん
2006/05/09(火) 18:03:51ID:???#!/usr/bin/perl
#use CGI::Carp qw/fatalsToBrowser/;
use LWP::Simple;
use XML::Simple;
$xml = XMLin(get('http://weather.livedoor.com/forecast/rss/24/42.xml'));
print 'Content-Type: text/html; charset=utf-8', "\n\n";
print $xml->{'channel'}->{'item'}->[1]->{'title'};
1.ローカルで実行した時に
"Wide character in print at〜"と出るのを消したい
2.XREAに置いた時、エラーになって動作しない
2行目のCGI::Carpのコメントアウトを外すと正常に動作します
なぜでしょうか?
お願いします
0245nobodyさん
2006/05/09(火) 18:16:35ID:KHJc4thIhttp://www.yukinko-net.jp/computer/download/downloadlist.htm
0246nobodyさん
2006/05/09(火) 19:28:10ID:???1.はSTDOUTのレイヤを適切に指定してやればいいと思われる。
utf-8で出したいようなので、例えば
binmode STDOUT, ':utf8';
をprintする前に実行。
2はオレにはよくわからん。
0247nobodyさん
2006/05/09(火) 19:34:14ID:???0248244
2006/05/09(火) 19:55:29ID:???ついさっきまでローカルで実行してた時は 1. の表示は出なかったんですよね
急に出たんです。なんででしょう。
>>247
CGI::Carpのコメントアウトを外せばちゃんと正常に表示されるので
モジュールは入ってると思います
0249nobodyさん
2006/05/09(火) 23:39:05ID:???XREA使ってるし、 use CGI::Carp qw(fatalsToBrowser); を
使ったりコメントアウトしたりもしてるけど、それが原因でコケたことはないです。
コードがBOMつきのUTF-8で書かれてるとCGI Wrap Errorが出るかも。
hoge.cgi(例)を hoge.cgid にリネームしてアクセスしたら詳細が出ますよ。
0250244
NGNGありがとうございます
could not find ParserDetails.ini in /usr/local/lib/perl5/site_perl/5.8.3/XML/SAX
って出ました。別のパーサー使えば治りそうなのか…な?
スクリプトファイルの文字コードはASCII文字列だけなので、特にはありません。
バイナリエディタで確認してもBOMは付いてなかったです。
Wide〜のエラーが出るのは何なんでしょうね?
0251244
2006/05/09(火) 23:56:34ID:???XMLパースの時点でutf8フラグが付いてますね
これ無くすオプションみたいなのないんでしょうか
0252nobodyさん
2006/05/10(水) 00:09:53ID:???ttp://www.pure.ne.jp/~learner/program/Perl_unicode.html#widechar
この辺で。
XMLパーサー方面は詳しくないのでよくわからないのですが、
自分が使ってるs73のXML::RSSは機嫌よく動いてくれてます。
0253244
2006/05/10(水) 00:13:17ID:???ありがとうございます
そこは何度も見ています
XML::Simpleは重いとの噂もありますし、
なるべく使わない方がいいのでしょうか?
0254nobodyさん
2006/05/10(水) 04:29:59ID:???0255nobodyさん
2006/05/10(水) 13:57:23ID:???0256nobodyさん
2006/05/10(水) 14:27:15ID:B75NkyiD少しは自分で判断しろや
0257nobodyさん
2006/05/10(水) 14:31:29ID:???1.のエラーが突然現れたのは何故でしょうか?
0259nobodyさん
NGNG自分のレスを読めば分かると思いますが、
皆さんのおかげでXREAの問題は解決しています
ローカルで時間を置いて実行したら急に『Wide〜』の表示が出たので
自分が何かをした、と云うのは無いと思います
0260nobodyさん
2006/05/10(水) 15:15:57ID:???Locationヘッダを最後に書き別のページへ移動するようにした
スクリプトをインラインフレームから実行してもフレームを抜けてくれません。
とある解説書によるとLocationヘッダは動的にアドレス欄を変更することで
どの子フレームも抜けられるはずなんですが・・・。
代替策でもいいのでアドバイスお願いします。
また、ここの掲示板に書き込みすると「書き込みました。しばらくお待ちください。」
と表示されて自動的にページが移動しますが、あれはどうやっているのでしょうか。
0262nobodyさん
2006/05/10(水) 15:24:36ID:???「しばらくお待ちください」からページが変わるのはMETAタグのRefreshで
フレームを解除したいなら、そのフォームのTARGETに_top指定とかは?
0263nobodyさん
2006/05/10(水) 15:31:03ID:???答えた後でなんだが板違いですので続く質問はWeb制作の方でどぞ
Locationに関しての質問は
△▲ WebProg 初心者の質問 Part13 ▼▽
http://pc8.2ch.net/test/read.cgi/php/1139468729/
にてどうぞ
0264nobodyさん
NGNGJavaScriptで
window.open("jump_to.html", "_top");
これでうちの環境はインラインフレーム抜けたけど
0265nobodyさん
NGNGsetTimeout('top.location.href="jump_to.html"',"3000");
とか
0268nobodyさん
NGNG回答者が何を答えようと勝手でしょ
そんな事も分からないのかな…
0269nobodyさん
2006/05/10(水) 16:24:56ID:???0270nobodyさん
NGNG0271nobodyさん
2006/05/10(水) 16:27:21ID:???残念将軍だな
0272nobodyさん
NGNGって書いてあるでしょ
日本語読めるの?
0273nobodyさん
2006/05/10(水) 16:30:15ID:???ここまで丁寧に書かないと駄目ですか・・・
0274nobodyさん
2006/05/10(水) 16:30:41ID:???読み替えてみるところから始めるといいと思うよ。
0275nobodyさん
NGNGこんなコードでも一種のコーディングでしょ
何言ってるんだか
0276nobodyさん
2006/05/10(水) 17:05:20ID:???0277nobodyさん
NGNGもうどうでもいいや
0278nobodyさん
2006/05/10(水) 17:43:37ID:???ここで言うOSとは鯖のOSの事なんですか?
flockchという検査用の配布スクリプトを実行してみたところ正常に動作しましたが、
flockの動作がクライアント側のOSに依存するのであればmkdir方式に変更しようかと考えてます。
良い方法を教えてください
0279nobodyさん
2006/05/10(水) 17:48:33ID:???PHPスレでPerlの質問はスレ違い
だからPerlスレでHTML・Perlはスレ違い
ある質問に対して最初の回答ならまだしも、それ以上の回答はスレ違いだからと誘導があるのにしつこい>>277が悪いな
0280nobodyさん
NGNG0282nobodyさん
NGNGここは君のスレでも君の板でもないの。
0283nobodyさん
2006/05/10(水) 18:23:56ID:dkGjsQPOかわいそうな固定って何処の板にも居るもんですね
0284nobodyさん
NGNG0285nobodyさん
2006/05/10(水) 18:28:07ID:dkGjsQPO0287nobodyさん
NGNG外すのもめんどいし
0288nobodyさん
2006/05/10(水) 18:30:31ID:???0289nobodyさん
2006/05/10(水) 19:15:35ID:???0290nobodyさん
2006/05/10(水) 19:20:53ID:???おいおい、君らほんとに2ちゃんねる使ってるの?
2ちゃんねるではJavaScriptを切っても、書き込み後に自動的に移動するぞ。
確認もせずにまあぬけぬけとJavaScript談義を抜かして何やってんだかorz
だから、perlでどうやって自動的にページを移動するかというのが問題。
だふんperlのalert関数を使ってるんじゃない?
この関数はフリー鯖では使えないけど。
0292nobodyさん
2006/05/10(水) 19:36:09ID:???0294nobodyさん
2006/05/10(水) 19:38:42ID:???C/Sを理解してるか?
0295nobodyさん
NGNG0296278
2006/05/10(水) 19:43:31ID:???>C/S
まったく分かりませんorz
一度flockが動作したら、その後も同じ鯖であればクライアントの環境に影響せずに動作するんでしょうか?
0298nobodyさん
2006/05/10(水) 19:47:17ID:???0299278
2006/05/10(水) 20:10:49ID:???ありがとうございました
0300nobodyさん
2006/05/10(水) 20:36:05ID:???.く /:::!::::i:::!:::ヽ:::ヽ::::::ヽ::ヽ、::::::::::\:::ヽ:::::::ヽヽ::::::', 目
な. /:l::::!::::ヽ!::ヽ:::::::ヽ:::::::\:::ヽ、::::::::ヽ:::ヽ::::::::!::i:::::::! だ
ん ハ:::l:::::、::::ヽ::::\:::::\:::::::\:::`ヽ、:::ヽ::ヽ:::::!:::!:::::l
と /:::::::l::::::!ヽ:ヽ::::、:::::ヽ:::、:\::::: \::::::\::::!::::ヽ:!:::i:::l:l こ
か !:/!:::::!::::::!::ヽ:ヽ{:::\:::ヽ::::\:::\::ヽ:::::::ヽ!:::::::}!::::l::li| い
し j/:::l:::::!:、:::!::ト、:、:ヽ:::::`ヽ{、::::::\::::\{、::::::::::::::::i::!::l:l ! つ
な l:i:l::::i::i:、:l::lテ=-、:ヽ、_、::\_,≧ェュ、_、\:::::::::i::li::!::リ :
い !ハト:{:!:i:トN{、ヒ_ラヘ、{ >、{ 'イ ヒ_ラ 》\::l::!:ト!!:l::l! :
と ヽ i、ヽ:ト{、ヾ ̄"´ l!\ `" ̄"´ |::!:l::! j:ll:!
: !::、::::i l u |:::/lj/l:!リ
: ヾト、:!u j!/ j|:::リ
ヾ! ヽ ‐ u /イ´lハ/
}ト.、 -、ー-- 、__ /' !:://
リl::l゛、 `二¨´ / |/:/
rー''"´ト!::i{\ / / !:/
/ ^ヽ ヾ! ヽ _,,、'´ / j/
0301nobodyさん
2006/05/10(水) 21:59:13ID:???具体的には、30分ごとに指定されたURLをGETリクエストするという処理です。
完全にサーバー側で処理させて、クライアントからのアクセス無しに定期的に処理したいのですがやはり不可能でしょうか?
0302nobodyさん
NGNG0304301
2006/05/10(水) 22:27:12ID:???すいません、書き忘れていましたがcronは使いたくないのです。
cronを使わずに一定間隔ごとにクライアントからの要求無しに処理をするのは不可能でしょうか?
0305nobodyさん
NGNG0306nobodyさん
2006/05/10(水) 22:30:18ID:???なんだ、今日は「スレ違い祭」なのか?
0310nobodyさん
NGNGもう少し的確なアドバイスが出来るかも
0311301
2006/05/10(水) 22:51:09ID:???>>301に書いたように一定間隔で指定されたURLをGETリクエストして保存するスクリプトです。
ほかにどのように詳しく書けばいいのかよくわかりませんのでとりあえずこれだけできればいいんでこれだけ書きます。
0312nobodyさん
2006/05/10(水) 22:57:30ID:???っ【無限ループ】
元々CGIともPerlのコーディングとも関係ないけど
cronが使えるのに使いたくない理由が知りたい。
0313301
2006/05/10(水) 23:05:02ID:???無限ループをどのように使ったらいいのでしょうか?1回アクセスしたら無限ループにすることはできますがブラウザを閉じてしまったら
その要求は破棄されてそのスクリプト(CGI)はとまってしまうのでは無いのですか?
>cronが使えるのに使いたくない理由が知りたい。
自鯖だけで動かす予定じゃなかったんで、cronが使えない鯖でも動いたらいいなってことです。
0314nobodyさん
2006/05/10(水) 23:16:19ID:???> ブラウザを閉じてしまったらその要求は破棄されてそのスクリプト(CGI)はとまってしまう
こうなってるし、よくわかんないので酒飲んで寝ます。
無限ループは忘れてくだちい。
0315nobodyさん
2006/05/11(木) 00:51:08ID:???0316nobodyさん
2006/05/11(木) 00:54:46ID:???0317nobodyさん
2006/05/11(木) 01:06:51ID:???0318nobodyさん
2006/05/11(木) 01:19:25ID:???これはすなわち延々とRefreshし続けろということなんだよ!
0319nobodyさん
2006/05/11(木) 08:45:22ID:???0320nobodyさん
2006/05/11(木) 12:33:49ID:???下記の文字列を正規表現を使い$a$、$b$、$c$と
それぞれ置き換えるのにはどうしらたらいいのでしょうか、いまのままだとうまく置き換えられません
$a$$b$$c$
0321320
2006/05/11(木) 12:36:50ID:O4GQ7qfs$a$-$b$-$c$などと文字を挟むと置き換えられます
0323320
2006/05/11(木) 13:43:30ID:O4GQ7qfsしかし下記のような場合はどうしたらいいのでしょうか
$tmpl='$a$$b$$c$';
$tmpl =~ s/\$$_\$/$in{$_}/g;
0324nobodyさん
2006/05/11(木) 13:50:43ID:???$_にa,b,cが入ってて、foreachで回すならそれで動くんじゃないの?
じゃないなら(何したいかよく分からんけど)
$tmpl =~ s/¥$(.)¥$/$in{$1}/g;
0325nobodyさん
2006/05/11(木) 13:57:18ID:mIPF1ZNx・@dataは空っぽの場合もあれば、数千行の場合もある
・@dataの「空行ではない最終行」を$lineに取得したい
これらの条件の場合、Perlらしい素敵な記述はどのようになりますでしょうか?
ちなみに下記はショボい例。
@data = reverse @data;
foreach (@data) {
if ($_) {
$line = $_;
last;
}
}
0326320
2006/05/11(木) 14:14:43ID:O4GQ7qfsこんな感じなのですが、連続しているとマッチして置き換えられないんです
仮に$str='$a$-$b$-$c$'といった違う文字が挟んである場合は大丈夫です。;
$str='$a$$b$$c$';
foreach (%in) {
$str =~ s/\$$_\$/$in{$_}/g;
}
0328nobodyさん
2006/05/11(木) 14:45:48ID:mIPF1ZNxありがとうございます。なるほど、pop使えばreverseは要りませんね。
ワンライナーでキレイではないでしょうか?
ちょっと後でベンチマーク取って試してみようと思います。
0329325
2006/05/11(木) 15:14:29ID:mIPF1ZNxBenchmark: timing 1000 iterations of foreach, until...
foreach: 1 wallclock secs ( 0.86 usr + 0.08 sys = 0.94 CPU) @ 1067.24/s (n=1000)
until: 1 wallclock secs ( 0.64 usr + 0.06 sys = 0.70 CPU) @ 1422.48/s (n=1000)
70KBくらいのファイルで試してみたところ差が縮まりました。
0330nobodyさん
2006/05/11(木) 17:11:40ID:???for($i=$#data; !$data[$i]; $i--){}
$line = $data[$i];
0332nobodyさん
2006/05/11(木) 17:14:10ID:???初歩的間違い >> 331
0333325
2006/05/11(木) 17:33:07ID:mIPF1ZNxイテレーションを5000回に増やして試してみました。
なお、>>332さんの方はreverseが必要になると思うので、追加しています。
Benchmark: timing 5000 iterations of No.330, No.332, foreach, until...
No.330: 3 wallclock secs ( 3.31 usr + 0.39 sys = 3.70 CPU) @ 1350.26/s (n=5000)
No.332: 5 wallclock secs ( 3.94 usr + 0.23 sys = 4.17 CPU) @ 1198.75/s (n=5000)
foreach: 4 wallclock secs ( 3.89 usr + 0.19 sys = 4.08 CPU) @ 1226.09/s (n=5000)
until: 3 wallclock secs ( 3.42 usr + 0.14 sys = 3.56 CPU) @ 1403.31/s (n=5000)
0334325
2006/05/11(木) 17:35:50ID:mIPF1ZNxBenchmark: timing 5000 iterations of No.330, No.332, foreach, until...
No.330: 4 wallclock secs ( 3.30 usr + 0.36 sys = 3.65 CPU) @ 1367.99/s (n=5000)
No.332: 4 wallclock secs ( 3.42 usr + 0.28 sys = 3.70 CPU) @ 1350.26/s (n=5000)
foreach: 4 wallclock secs ( 3.83 usr + 0.28 sys = 4.11 CPU) @ 1216.84/s (n=5000)
until: 4 wallclock secs ( 3.23 usr + 0.38 sys = 3.61 CPU) @ 1385.04/s (n=5000)
0335nobodyさん
NGNG読みやすいコードでいいんじゃないかな?
0336nobodyさん
2006/05/11(木) 17:38:51ID:???0337nobodyさん
2006/05/11(木) 17:40:42ID:???>>332の方式は、先頭から空行でなければ$lineへ代入を末尾まで行う方式のためreverseすると間違いです。
@dataがオンメモリという前提だとあまり効率的でないかも?ですが、
ファイルからの読み込み時にそのまま適応できる、ということですね。
0338325
2006/05/11(木) 17:40:59ID:mIPF1ZNx>>325に書いたスクリプト、reverseの位置を変えただけで処理速度がかなり上がります。
foreach (reverse @data) {
if ($_) {
$line = $_;
last;
}
}
結果:
Benchmark: timing 5000 iterations of No.330, No.332, foreach, until...
No.330: 4 wallclock secs ( 3.42 usr + 0.33 sys = 3.75 CPU) @ 1333.69/s (n=5000)
No.332: 3 wallclock secs ( 3.47 usr + 0.30 sys = 3.77 CPU) @ 1328.02/s (n=5000)
foreach: 4 wallclock secs ( 3.25 usr + 0.34 sys = 3.59 CPU) @ 1391.21/s (n=5000)
until: 4 wallclock secs ( 3.27 usr + 0.39 sys = 3.66 CPU) @ 1367.24/s (n=5000)
ここまで来ると誤差の範囲ですね…。ではまた。
0339nobodyさん
2006/05/11(木) 17:46:37ID:???0340nobodyさん
2006/05/11(木) 17:56:23ID:???こうか。
0341nobodyさん
2006/05/11(木) 17:57:32ID:???0342325
2006/05/11(木) 17:58:35ID:???なるほど、勘違いして失礼しました。
結果は貼りませんが、reverseを追加しなければ僅差でNo.332が最速でした。
まあどれもほとんど同じ、お好みでって事になりますね。
>>339
No.332以外は最下行からループするアルゴリズムになっていると思います。
ただNo.332は上から全部見て行っても遅くありませんでした。
0343nobodyさん
2006/05/11(木) 18:07:20ID:???添え字付けアクセスは結構遅いということか。
0344nobodyさん
2006/05/11(木) 18:23:21ID:???do {
$line = pop @data;
} while($line eq "");
0345nobodyさん
2006/05/11(木) 19:19:12ID:???$_ ne '' and $line = $_, last for @data;
until で書くと
1 until ($line = pop @data) ne '';
0346nobodyさん
2006/05/11(木) 19:20:50ID:???$_ ne '' and $line = $_, last for reverse @data;
短いのは until のやつかな。
0347nobodyさん
2006/05/11(木) 20:50:54ID:V8lYCtov$maximum = 99999;#カウンターの最大値(最大値を超えると0に戻ります。)
$value = "%05d";#カウンターの桁数( %04d, %05d, %06d ←このように桁数を変更して下さい。)
$countfile = "count.txt";#ログファイル(カウンター)
$ipfile = "ip.txt";#ログファイル(IP)
open (COUNT, "<$countfile");
flock(COUNT, LOCK_SH);
chomp($count = <COUNT>);
$iplog = <COUNT>;
close(COUNT);
$ip = $ENV{ 'REMOTE_ADDR' };
$maximum = sprintf("$value", $maximum);
if( $ip ne $iplog ){ $count++; }
if( $maximum < $count){ $count = 0; }
open (IP, ">$countfile");
flock(IP, LOCK_EX);
print IP ($count."\n");
print IP ($ip);
close(IP);
0348nobodyさん
2006/05/11(木) 20:53:04ID:V8lYCtov($sec, $min, $hour, $day, $mon, $year) = localtime(time);
$year = $year + 1900;
$mon++;
$sec = sprintf("%02d", $sec);
open (LOG, ">>$ipfile");
flock(LOG, LOCK_EX);
print LOG ($ip."\n");
print LOG ($year."/".$mon."/".$day."\t".$hour.":".$min.":".$sec."\t".$ENV{ 'HTTP_USER_AGENT' }."\n\n");
close(LOG);
$count = sprintf("$value", $count);
print "Content-Type: text/html\n\n";
print "document.write('$count')";
exit;
0349nobodyさん
2006/05/11(木) 20:55:54ID:???これをもっと高速化するにはどうしたらいいですか?
SSIのexecとincludeが使用できないので、Javascriptで
呼び出しています。
他にもっといい呼び出し方などあったら是非教えてください。
0350nobodyさん
NGNG突っ込みどころは沢山あるけど
0351nobodyさん
2006/05/11(木) 20:58:34ID:V8lYCtovその突込みをお願いします。
0352nobodyさん
2006/05/11(木) 20:58:55ID:???この行必要?
0353nobodyさん
2006/05/11(木) 21:11:01ID:???・ファイルのオープンには絶対エラーチェックを入れる
・ファイルを二回にわけてオープンしてたら、ロックの意味が無い
最低この二点を勉強して。
0354nobodyさん
2006/05/11(木) 21:12:04ID:???あえて一つ突っ込むなら、$countfileを一旦閉じて開きなおしてるのはいかん。
これじゃアクセスが重なると空回りするぞ
+<モードで開いておいて、読み終わったら頭にseekして書き込み、
そして閉じる前にtruncateするのが最適解かと。
0355nobodyさん
2006/05/11(木) 21:22:32ID:???でいいと思う。
行にゼロは無いと仮定しているレスばかりだが、いいのか?
0357nobodyさん
2006/05/11(木) 21:56:16ID:???0358nobodyさん
NGNG0359nobodyさん
2006/05/11(木) 22:13:02ID:???スコープの範囲によって変数の値が変わる場合があるから。
グローバル変数にするとスコープの範囲がグローバルになるから、範囲を気にする必要なくなる。
>グローバル変数だけのプログラムは何故だめなの?
規模が大きくなると破綻するらしいけど、自分で管理できるならグローバル変数でOKなんじゃない?
>引数なしの関数は何故悪いの?
暗黙のうちにグローバル変数を使うことになるから。
0360nobodyさん
2006/05/11(木) 22:22:38ID:???my()宣言するのがとても大変です。
またグローバルで使う場合もある処理の場合、そのままコピペできればと思うのですが
よろしくお願いします
0362nobodyさん
2006/05/11(木) 22:38:48ID:???+<でopen
read
seek
truncateで0バイト化
って手順てこと?
truncateで0バイト化するならseekは要らない気もするけどどうなんでしょ?
言葉が足りなくて上げ足取りみたいな感じたらスマソ
それとも桁が減った場合を考えてのtruncateを使用ってことでしょうか?
0363nobodyさん
2006/05/11(木) 22:40:33ID:???$lineが拾えないのですが…。(undefになっているようです)
>>361
ファイルの最終行が空行かも知れません。
その前の行も空行かも知れません。
0364nobodyさん
2006/05/11(木) 22:46:51ID:???my($linecnt) = $#data;
my($lastline);
if($linecnt){ $lastline = @data[$linecnt]; }
0366nobodyさん
2006/05/11(木) 22:53:24ID:???そうゆうことがあるなら・・・
$linecnt = $#data;
for $i ($linecnt..0){
$lastline = chomp($data[$i]);
if($lastline){
last;
}
}
もしループを抜けて$lastlineが空なら、@dataは空か、改行だけしかないデータとなる
0367nobodyさん
2006/05/11(木) 22:58:30ID:???スマソ、少し説明が足りなかった。桁が減った場合を考えて、だね。
truncateとprintが逆で、書き込んだ後に、tellしてその長さにそろえるの。
read
seek
truncateで現在位置(tell)まで切り詰め
truncateは位置が頭に戻ることを保障されてないから、その場合でもseekを消すとまずいかも。
susv3のftruncate仕様より
> The value of the seek pointer shall not be modified by a call to ftruncate().
0368nobodyさん
2006/05/11(木) 23:13:43ID:???書き込み後のファイル位置まで削るってことか。
書き込み後のファイル位置は気にしたこと無かったから想像できなかったわ
0369nobodyさん
2006/05/11(木) 23:16:04ID:???本物のプログラマはローカル変数を使わない
・本物のプログラマは全てのグローバル変数を混乱せずに管理出来る。
・本物のプログラマはサブルーチンを作るときに引数を使わない。
・本物のプログラマは不要になった変数空間が解法されずに残ることを恐れない。
本物のプログラマなら誰でも知っている通り、有用な変数のスコープはグローバル変数しかないのだ。
さまざまな関数の一時変数や再帰、さらにはクロージャの変数管理はすべてグローバル変数で実装可能であり、わざわざ複雑な構造を取り入れてプログラミング言語をごちゃごちゃにせずとも、ただの特殊な場合として扱うことが可能なのである。
このような手の込んだ構造の最悪な点は、それらを使うときにいちいち宣言しなければならないと言うことにある。
0370nobodyさん
2006/05/11(木) 23:22:13ID:???0372nobodyさん
2006/05/12(金) 00:21:46ID:???0373nobodyさん
2006/05/12(金) 00:40:59ID:???$data = "\0\0\0\x0a";
$data =~ s/([\x00-\xff]{$n})$/ func($1) /e;
データ末尾 nバイトを置き換えようとしてるんですが
なぜか 0x0A にマッチしてくれません。
これは一体どうゆうことでしょうか?
そしてこれはどう書くべきなのでしょうか?
お願いします
0374nobodyさん
2006/05/12(金) 00:55:45ID:???s/(.{$n})\z/ func($1) /se
ttp://www.kt.rim.or.jp/~kbk/perl5.005/perlre.html
| s 文字列を単一行(single line)として扱います。つまり、``.''が通常はマ ッチしないような改行を含めた、全てのキャラクターにマッチするようにします。
| $ 行の終端(もしくは行末の改行の直前)にマッチします
| \z 文字列の終端にのみマッチします
0375nobodyさん
2006/05/12(金) 01:07:50ID:???ありがとです。
スッキリしました。
0376nobodyさん
2006/05/12(金) 01:36:29ID:???$_が項で主張してるとPerlっぽくない。
というかもし、最終行以外捨てるならそこが一番重いところになる。
$line = grep /./, @data;
0377nobodyさん
2006/05/12(金) 02:33:59ID:???$line = (grep /./, @data)[-1];
それもよさそうだね。
>>377 >>345 >>346あたりが最小限の走査ですむように
工夫されてるのでよさそう。
0379nobodyさん
2006/05/12(金) 03:55:19ID:???0381325
2006/05/12(金) 09:22:53ID:???Benchmark: timing 50000 iterations of No.330, No.332, No.344, No.345, No.346, No.366, foreach(338), grep(377), until(327)...
No.330: 3 wallclock secs ( 2.98 usr + 0.06 sys = 3.05 CPU) @ 16409.58/s (n=50000)
No.332: 4 wallclock secs ( 4.06 usr + 0.08 sys = 4.14 CPU) @ 12074.38/s (n=50000)
No.344: 3 wallclock secs ( 2.92 usr + 0.02 sys = 2.94 CPU) @ 17018.38/s (n=50000)
No.345: 3 wallclock secs ( 2.91 usr + 0.00 sys = 2.91 CPU) @ 17205.78/s (n=50000)
No.346: 3 wallclock secs ( 2.88 usr + 0.13 sys = 3.00 CPU) @ 16666.67/s (n=50000)
No.366: 3 wallclock secs ( 2.75 usr + 0.03 sys = 2.78 CPU) @ 17979.14/s (n=50000)
foreach(338): 3 wallclock secs ( 2.73 usr + 0.03 sys = 2.77 CPU) @ 18076.64/s (n=50000)
grep(377): 3 wallclock secs ( 3.08 usr + 0.05 sys = 3.12 CPU) @ 16005.12/s (n=50000)
until(327): 3 wallclock secs ( 2.84 usr + 0.03 sys = 2.87 CPU) @ 17391.30/s (n=50000)
個人的には>>376-377さんのgrepを使ったアルゴリズムが好きです。
注)
@dataが壊れる(壊れても構わないのですが)場合、結果がおかしくなるので
公平を期すため、全てのテストルーチンには@data = @backup;を入れています。
それが不要なアルゴリズムは、省けばさらに速くなります。
(昨日出したベンチマーク結果は毎回ファイル開いて読んでました…無駄すぎですね)
また、@dataにはchompが掛かっているので>>366さんからはそれを省いています。
0383325
2006/05/12(金) 10:03:29ID:???backup: 3 wallclock secs ( 2.72 usr + 0.02 sys = 2.74 CPU) @ 18281.54/s (n=50000)
謎です、これじゃ引き算出来ません。
benchmarkの測り方を間違えていたなんていう強力なオチがありそうで怖いですが…。
どこかにスクリプト自体をアップした方が良いですかね?
0384325
2006/05/12(金) 10:16:16ID:???何となくパス付き:perl
テストデータは同梱していません。
そこそこ大きいテキスト+末尾に4〜5空行を入れてtest.datとして保存して下さい。
0385nobodyさん
2006/05/12(金) 10:21:57ID:???>>327 >>344 >>345
popで配列の後ろから取り出して調べる
>>330 >>366
配列の後ろから添え字アクセスで調べる
>>338 >>346
配列を一旦reverseして、先頭から調べる
>>332
配列の先頭から調べる
>>377
grepで空要素を排除してから、最後の要素を取り出す
0386nobodyさん
2006/05/12(金) 10:43:29ID:???もちろんそのまま引き算できるわけでなく、たとえば 回数/s の逆数をとって一回あたりの
秒数をだして引き算するわけよ。
0387325
2006/05/12(金) 11:03:32ID:???まとめ、大変分かりやすいです。どうもありがとうございます。
>>386
なるほど、あの結果はあれでおかしくはないんですね。
とりあえずスクリプトは>>384でアップしましたので、お好きな方にカスタマイズは
お任せするつもりです。
0388nobodyさん
NGNG0389nobodyさん
2006/05/12(金) 13:08:04ID:???それは自分への言葉ですか?
分かってるなら消えろよカスwww
0390nobodyさん
NGNG0391nobodyさん
2006/05/12(金) 14:15:44ID:DNrRJ4oV0392nobodyさん
NGNGBe全体をあぼーんでもしてるのだろうか(笑)
0393nobodyさん
2006/05/12(金) 14:35:17ID:???0394nobodyさん
NGNG0395nobodyさん
NGNGファイル掲示板のcgiで、ファイルのDLカウンターを付けたい
編集対象個所
<a href=\"$i_Url/$ico\" target=_blank>
$i_Url ファイルの置き場所のパス
$ico ファイル名
置換したいcgi呼び出し
./downcon.cgi?down=http://ohayou.com/test.zip&name=test.zipファイル&hp=http://ohayou.com
私の書き換えたコード
./downcon.cgi?down=$i_Url/$ico&name=$icoファイル&hp=hp=http://ohayou.com
結果
CGI呼び出しエラーのページが表示されてしまう
何がいけないのでしょうか?
教えてくださいませ。
0396nobodyさん
NGNG改造スレ池
0397395
NGNGめげずに頑張ってみるものですね!
0398nobodyさん
2006/05/12(金) 17:25:50ID:???煮沸消毒しる!
0400nobodyさん
2006/05/13(土) 00:50:41ID:RdM+BVxRprint "Content-type: text/html\n\n";
print "こんにちは!\n";
↑これだとInternalServerErrorが出るんですが、
#!/usr/bin/perl -w
に書き換えると正常に『こんにちは!』と表示されるのですが、どうしてでしょうか?
-wはエラーがあったら表示、みたいに思いこんでたんですが…
0401nobodyさん
2006/05/13(土) 00:57:56ID:???-wはwarningオプションなのでエラーとはまた違います。
(こういう書き方はイカンとか、間違ってるかも知れないとかの警告)
それで、ぱっと見た感じ間違いは無さそう。
正常に表示されるスクリプトから、「 -w」の3バイトを丁寧に削ってまた試してみては?
0402nobodyさん
2006/05/13(土) 01:04:20ID:RdM+BVxRなるほど、Warningの略だったんですね。
アドバイス通りに『 -w』を削ってみました。
1バイトあたり1分ぐらいかけて慎重に削り、パーミッションも744にしたのですが、
やはり『 -w』が無いと動かないようです。
というか、MovableTypeを見ていて『-w』と書いてあるのを見てマネしたら動いちゃった、
って感じなのですが、『-w』をつけないと動かないってことはあり得るんでしょうか?
0404nobodyさん
2006/05/13(土) 01:12:21ID:RdM+BVxRなるほど、それが原因なんですか…
これも既出もいいとこかもしれませんが、仕事中なのでコッソリ教えてもらえるとうれしいです。
IEでFTP接続しているんですが、AsciiモードやBinaryモードを切り替えることはできるのでしょうか?
よろしくお願いします。
0405nobodyさん
2006/05/13(土) 01:14:24ID:???0406nobodyさん
2006/05/13(土) 01:29:23ID:RdM+BVxR普段はFFFTPを使ってるんですが、今使ってるサーバーはFFFTPだと
ファイル一覧が取得できないんですよね…
しかし、MovableTypeはIEでアップロードして動いたのに、不思議なものです…
スレ違いになってしまったので、このあたりで失礼します。
親切にありがとうございました。
0407nobodyさん
2006/05/13(土) 01:41:49ID:???スレ違いで難だけど一応ここまで聞いちゃったら…
ホストの設定の"NLST -Rを使って高速に再帰取得"を切ってみれ。
それで駄目なら"LISTコマンドでファイル一覧を取得"にチェックを入れてみれ。
#!/usr/bin/perl[CR][LF] だとOSは"/usr/bin/perl[CR]"というコマンドを起動しようとする。
よってそんなインタプリタは見つからないのでエラー。
#!/usr/bin/perl -w[CR][LF] だとOSは"/usr/bin/perl"に"-w[CR]"を渡そうとする。
perlはCRを無視して無事起動。そういや、どこかの入門サイトでエラーになることがあるから、
shebang行には#!/usr/bin/perl -と書けと言っている迷サイトもあったと聞いたな。
0408nobodyさん
2006/05/13(土) 01:56:30ID:RdM+BVxRありがとうございます。
おかげさまでFFFTPでファイル一覧が取得できてしまいました。
今までの苦労は何だったんだ、と怒りに震えるほど感謝しています。
今までの23年間の人生で初めて涙を流して感謝しました。
0409nobodyさん
2006/05/13(土) 10:11:20ID:???0410nobodyさん
2006/05/13(土) 19:48:15ID:???foreach $line (@list_hoge) {
my ($key, $value) = split ":", $line;
$hash_ref_hoge->{$key} = $value;
で、my がループ毎に実行されるのが気分的によくないです。
繰り返しブロック中の一時的な変数って、ブロックの中/外、どちらで
宣言するのが一般的なんでしょうか?中で宣言するとループ毎に別変数に
なってしまう(と思う)し、外で宣言すると my の意味が無い気がする。
0411nobodyさん
2006/05/13(土) 20:55:01ID:???{ my $hoge;
for(@fuga) {
}
}
0412nobodyさん
2006/05/13(土) 20:56:24ID:???そういう事じゃなかったらごめん
0413nobodyさん
2006/05/13(土) 21:28:32ID:???0414nobodyさん
2006/05/13(土) 21:49:46ID:???0415nobodyさん
2006/05/13(土) 21:56:02ID:vvOrsJnf#ちなみに、'chop'と'chomp'が混在してるスクリプトの場合です
0416nobodyさん
2006/05/13(土) 22:04:22ID:???chopとchompは意味が違うので、無条件に置き換えられるかどうかは不明
わざわざ混在してるとなると、置き換えられないかも
作者に聞いてくれ
0418nobodyさん
2006/05/13(土) 22:15:50ID:???それでいいんだよ。
その1周分のループの中でしか使わないし、その明言でもある。
違和感あると言うけど、ひょっとして「my付けろって言われたからつけてる」って程度の認識だったりしない?
0420410
2006/05/13(土) 22:33:22ID:???自分は >>414 と同じ考え方で質問に書いた書き方をしてるんだけど
「普通こう書くだろう」っていうのがあれば、と思い質問した次第です
(412 が「普通こう書く」なのかな?)
#あまり気にしないことにします。
0421410
2006/05/13(土) 22:52:39ID:???>>418 違和感は、
自分は「$key、$value はこの foreach ブロック(!=ループ)でワーク変数として使う」
つもりで宣言しているのに、ループ毎に別変数が生成されると、何か
変数入れるメモリがもったいないんじゃない?とか思ってしまう
からなわけです(貧乏性)。もしかしてループ毎に前のループの変数は
開放されるのかな? であれば問題ないな。
0422nobodyさん
2006/05/13(土) 22:58:00ID:???0423nobodyさん
2006/05/13(土) 22:58:15ID:???ループ中のmy宣言されてるものはその都度新しく生まれ変わってる別物です
0424nobodyさん
2006/05/13(土) 23:02:54ID:???その場合は、同じ変数を使い回す事になる。
split後の$key, $valueの文字列長が、ループ内でだいたい同じ程度なら
Cレベルでのreallocもあまり気にしなくて良くなる。
一方、ループ内に入れた場合は、変数のメモリはループ毎にヒープに返される。
最適化がどうなってるか分からないけど、
もしかしたら同じスカラを使い回しているかも知れない。
微妙な違い。多分、ループ外に置いた方が速い。
0425nobodyさん
2006/05/14(日) 01:28:41ID:???内側が基本。
外側で宣言しちゃったら値の局所化、名前の局所化どちらも意味なくなっちゃうじゃん。
このPart48スレで何回か話題なったから読み返してみ。
もちろん、ループの進行と共に変化していく系の変数なら外のスコープで宣言するしかない。
0426nobodyさん
2006/05/14(日) 02:15:49ID:EM3+kg+P$message =~ s/<a href="\.\.\/test\/read\.cgi\/$FORM{'bbs'}\/$FORM{'key'}\/n?\d+-?\d*" target="_blank">(>>\d+-?\d*)<\/a>/$1/g;
$message =~ s/<r>>>(\d+)-(\d+)<\/r>/<a href="..\/test\/read.cgi\/$FORM{'bbs'}\/$FORM{'key'}\/n$1-$2" target="_blank">>>$1-$2<\/a>/g;
$message =~ s/<r>>>(\d+)-<\/r>/<a href="..\/test\/read.cgi\/$FORM{'bbs'}\/$FORM{'key'}\/n$1-" target="_blank">>>$1-<\/a>/g;
$message =~ s/<r>>>(\d+)<\/r>/<a href="..\/test\/read.cgi\/$FORM{'bbs'}\/$FORM{'key'}\/n$1" target="_blank">>>$1<\/a>/g;
これの一部分から“n”を抜いても問題はないですか?
具体的には、次の部分を右のように変更しました。
一行目:n?\d+-?\d → \d+-?\d
二行目:n$1-$2 → n$1-$2
三行目:n$1- → $1-
四行目:n$1 → $1
これで動作異常とか出ることないですか?
0428nobodyさん
2006/05/14(日) 02:26:46ID:???抜いて問題があるかないかと言えば、抜いたら問題があるから入っているんでしょうとしか言えないです。
そもそも、何でnを抜きたいのでしょう?
見た限り、パラメータとして掲示板の投稿No.をn1〜n10みたいに示すためのnのようですが、
受ける側の処理もそれに合わせて書き直せばnを抜こうが何だろうが大概動きますよ。
0430nobodyさん
2006/05/14(日) 02:31:40ID:???>>427
なぜかn抜いても1見えますです。
>>428
抜かなかったら、ソース見たとき変な現象がおきるです。
たとえばこんな感じに。
<a href="../test/read.cgi/php/1146042050/n2-10" target="_blank"><a href="../test/read.cgi/php/1146042050/2-10" target="_blank">>>2-10</a>
<a href="..">が二個連続で表示されて、その片方にnを含むのが出ますです。
ちなみに、n消したら二個連続の表示ではなくなりますた。
0432nobodyさん
NGNG0434nobodyさん
2006/05/14(日) 02:48:47ID:???$message =~ s|<r>>>(\d+)-(\d+)</r>|<a href="\.\./test/read.cgi/$FORM{'bbs'}/$FORM{'key'}/n$1-$2" target="_blank">>>$1-$2</a>|g;
$message =~ s|<r>>>(\d+)-</r>|<a href="\.\./test/read.cgi/$FORM{'bbs'}/$FORM{'key'}/n$1-" target="_blank">>>$1-</a>|g;
$message =~ s|<r>>>(\d+)</r>|<a href="\.\./test/read.cgi/$FORM{'bbs'}/$FORM{'key'}/n$1" target="_blank">>>$1</a>|g;
nは関係ないけど2行目以降はピリオドの前に\が付いていなかったのでとりあえずエスケープしてみました。
0435nobodyさん
2006/05/14(日) 02:51:43ID:???$message =~ s|<a href="\.\./test/read\.cgi/$FORM{'bbs'}/$FORM{'key'}/n?\d+-?\d*" target="_blank">(>>\d+-?\d*)</a>|$1|g;
$message =~ s|<r>>>(\d+)-(\d+)</r>|<a href="\.\./test/read\.cgi/$FORM{'bbs'}/$FORM{'key'}/n$1-$2" target="_blank">>>$1-$2</a>|g;
$message =~ s|<r>>>(\d+)-</r>|<a href="\.\./test/read\.cgi/$FORM{'bbs'}/$FORM{'key'}/n$1-" target="_blank">>>$1-</a>|g;
$message =~ s|<r>>>(\d+)</r>|<a href="\.\./test/read\.cgi/$FORM{'bbs'}/$FORM{'key'}/n$1" target="_blank">>>$1</a>|g;
まあ、追加で直した部分も関係ないでしょうけど。
0436nobodyさん
2006/05/14(日) 04:09:54ID:???0437nobodyさん
2006/05/14(日) 12:36:02ID:AA1LZHiiブラウザのオートコンプリート機能を一時的にOFFにするか、オートコンプリートのデータから特定のキャッシュを削除する事って
できるんでしょうか?
HTTPヘッダー・・では無いと思うんですが。
0438nobodyさん
2006/05/14(日) 12:52:19ID:???0439nobodyさん
2006/05/14(日) 13:12:35ID:???オートコンプリートをONにしているバカだから
マルチポストがどれだけ嫌われているかもわかんないみたいだな
しかも、糞IE専用機能でセキュリティもOFFにしていないと
危ういとの話なのに
サーバサイドでは無く、クライアントサイドしかもIEに特化
もうね、バカかとアホかと。もう白雉はネットに繋ぐべきではないとか。
| <input/form autocomplete="off">
`──────────┐ ┌───
, '´l, ..| ./
, -─-'- 、i_ |/
__, '´ ヽ、
',ー-- ● ヽ、
`"'ゝ、_ ',
〈`'ー;==ヽ、〈ー- 、 !
`ー´ ヽi`ヽ iノ
! /
r'´、ヽ
`´ヽノ
0440nobodyさん
2006/05/14(日) 14:15:59ID:???具体的には、30分ごとに指定されたURLをGETリクエストするという処理です。
完全にサーバー側で処理させて、クライアントからのアクセス無しに定期的に処理したいのですがやはり不可能でしょうか?
0442nobodyさん
2006/05/14(日) 14:18:12ID:???0443nobodyさん
2006/05/14(日) 14:21:02ID:???定期かよ・・・
cron or タスク(Winならだけど) or 定期的にURLアクセスするクライアントソフト
ハイ次
0444nobodyさん
2006/05/14(日) 14:23:58ID:???0446nobodyさん
2006/05/14(日) 14:28:44ID:???cronを使わずに一定間隔ごとにクライアントからの要求無しに処理をするのは不可能でしょうか?
0448nobodyさん
NGNG0450nobodyさん
2006/05/14(日) 14:56:04ID:???0453nobodyさん
2006/05/14(日) 15:46:38ID:???例をあげるとこんな感じです。
http://sports.livedoor.com/baseball/pro/players?o=d&p=b&q=1&s=3&t=1
打率や安打数などでそれぞれソート出来るようになっています。
方法があれば教えてください。
0454nobodyさん
2006/05/14(日) 15:57:03ID:???@sorted = sort{ $a[3] <=> $b[3]} split(/\t/, $data);
・・・おそらく間違ってるだろうな(;´Д`)
0456違うスレからきました
2006/05/14(日) 21:38:49ID:n3OZH3Uz$greeting = "こんばんは";
$name = "三島";
&prt_message2($greeting,$name);
sub prt_message2{
print "$_[0]、$_[1]さん","\n";
}
はコマンドプロンプトがでてきません
違いはフォルダが違うだけなんですが
どう対処したらいいでしょうか??
ダブルクリックで起動させようとしました
いつもperl command line interpreterで開いてます
物凄い速さでウィンドウが とじることまではわかりました
それをとめる方法はどうしたらいいでしょうか??
調べたらプロパティをいじくると書いてあったんですが
みても書いてありませんでした
CMDですよね??
よろしくおねがいします
0457456
2006/05/14(日) 21:40:34ID:VsACWTan0461nobodyさん
2006/05/14(日) 21:54:05ID:VsACWTanバッチがわからないけど調べるよ
0462458
2006/05/14(日) 21:54:53ID:???Perlについての質問箱 24箱目
http://pc8.2ch.net/test/read.cgi/tech/1146022352/346
0463nobodyさん
2006/05/14(日) 22:00:05ID:VsACWTanそれでもマルチになるの?
それならごめん
0464nobodyさん
2006/05/14(日) 22:01:20ID:VsACWTan0465nobodyさん
2006/05/14(日) 22:58:28ID:???0466nobodyさん
2006/05/14(日) 23:05:40ID:???0467nobodyさん
2006/05/14(日) 23:09:50ID:VsACWTan一応ぐぐったんですが
よろしくお願いします
0468nobodyさん
2006/05/14(日) 23:10:56ID:VsACWTanあの速さでは…
0469nobodyさん
NGNG0471nobodyさん
2006/05/15(月) 02:44:34ID:???コマンドプロンプトは開きっぱなしにしれ
でなきゃ実行結果を表示してくれるIDE(統合環境)を導入してください
0472nobodyさん
2006/05/15(月) 02:49:43ID:???HDDはSerial ATAなどではなくてIDE接続ですが、このことでしょうか?
0473nobodyさん
2006/05/15(月) 02:53:19ID:???0474nobodyさん
2006/05/15(月) 03:30:43ID:lq2mogk+俺の掲示板に組み込みたいんで、Rock54のスクリプト記述教えてくださいよ。
焼き部隊に所属してるあなたなら知ってますよね?
0475nobodyさん
2006/05/15(月) 03:31:40ID:???○石焼き部隊
0476nobodyさん
2006/05/15(月) 03:36:55ID:???0477nobodyさん
2006/05/15(月) 04:08:20ID:???0478nobodyさん
2006/05/15(月) 11:03:36ID:???http://e-words.jp/w/IDE-2.html
Perlに関係ないからね。
0480nobodyさん
2006/05/15(月) 23:27:09ID:FBQXjrwN2: それで↓こんな風にやってみたが・・・
if ($ENV{REQUEST_METHOD} ne 'POST'
|| read(STDIN, $post, $ENV{CONTENT_LENGTH}) != $ENV{CONTENT_LENGTH})
{ $postdata = $ENV{QUERY_STRING};}
・
・
のようなソースを別ファイルに書き込もうと(拡張子はcgiもしくはpl)、
$file = "$urltrip\x5F$mon$mday$hour$min$sec.cgi";
open OUT,">$file";
print OUT "#!/usr/local/bin/perl\n\n# トリップテスト\n\n";
print OUT "if ($ENV{REQUEST_METHOD} ne 'POST'\n || read(STDIN, $post, $ENV{CONTENT_LENGTH})\n";
↑こうやったら
3: $ENV{REQUEST_METHOD}などが書き込み元の値に代入されてしまう・・・。
ご教授おねがいします
0481nobodyさん
2006/05/15(月) 23:30:50ID:???0483nobodyさん
2006/05/15(月) 23:39:28ID:???0484nobodyさん
2006/05/15(月) 23:47:07ID:???KENT レベルのスクリプトっていいかげん消えてくれないかなぁ。
KENTWEB
0486480
2006/05/15(月) 23:51:56ID:FBQXjrwNprint OUT 'if ($ENV{REQUEST_METHOD} ne 'POST'\n || read(STDIN, $post, $ENV{CONTENT_LENGTH})\n';
↑これでもダメですけど?
0487nobodyさん
2006/05/15(月) 23:54:51ID:???で、何のためにうんこコードを保存してるの?
0488nobodyさん
2006/05/15(月) 23:55:17ID:???0489480
2006/05/15(月) 23:56:32ID:FBQXjrwNすんません、ちょっとだけバカなんです
でも体育と社会は得意なんです
0490nobodyさん
NGNG0491nobodyさん
2006/05/16(火) 00:29:36ID:???0492483
2006/05/16(火) 00:29:55ID:???人の話をキケー!
print OUT <<'EOF';
if ($ENV{REQUEST_METHOD} ne 'POST'
|| read(STDIN, $post, $ENV{CONTENT_LENGTH}) != $ENV{CONTENT_LENGTH})
{ $postdata = $ENV{QUERY_STRING};}
EOF
# もう来ないでね。
0494480
2006/05/16(火) 00:39:36ID:Neqg1YJy'EOF'でオッケーなんですね!
たとえば $baka という元ファイルの変数を別ファイルに代入させたい場合は
print OUT <<'EOF';
if ($ENV{REQUEST_METHOD} ne 'POST'
|| read(STDIN, $post, $ENV{CONTENT_LENGTH}) != $ENV{CONTENT_LENGTH})
{ $postdata = $ENV{QUERY_STRING};}
<りゃく>
$aho = $1;
EOF
print OUT "$baka";
print OUT <<'EOF';
$unko = $chinko;
EOF
# { とかってやればいいっすか?; }
0495nobodyさん
2006/05/16(火) 00:45:42ID:???0496480
2006/05/16(火) 03:11:36ID:Neqg1YJyうーん、、、途中までいい漢字だったんですけどなぜか途中から上手くいきません
print が絡んでるところで、
$manko = "まんこ";
<略>
print "$manko"; ←これを$manko=まんこのまま新しいファイルに持ち越すのは
print OUT <<'AHAN';
print "$manko";
AHAN
じゃだめですよね
それでこの部分だけ
print OUT \"print \"$manko\";
にしてもだめでした><;
えーん><;
0497nobodyさん
2006/05/16(火) 05:41:07ID:???0498nobodyさん
2006/05/16(火) 06:08:14ID:???たいへん参考になりました。
感謝とともにご報告申し上げます。
0500nobodyさん
2006/05/16(火) 12:59:36ID:???英語だけの投稿はエラーにしたいのですが
・全部半角英数字
または
・全角文字が1文字でも入っている
でマッチさせるには、どう記述すれば良いでしょうか?
よろしくお願いします。
0501500
2006/05/16(火) 13:01:43ID:???「または」ってのは OR でって事じゃないです。
どっちかの記述の方法が分かれば、判断できるかな
という意味で書きました。
0502nobodyさん
NGNG後者の方がええんとちゃう
文字コードによって違うから詳しくは
http://www.kanzaki.com/docs/jcode.html
http://euc.jp/i18n/charcode.ja.html
ここら辺見いや
0504nobodyさん
2006/05/16(火) 13:34:13ID:???0505nobodyさん
2006/05/16(火) 13:37:40ID:???0507nobodyさん
2006/05/16(火) 14:04:03ID:???0508nobodyさん
NGNGWin32-DriveInfoでも使ってろアホ
0509nobodyさん
2006/05/16(火) 14:05:50ID:???もっと簡単な方法をよろしく。
0510nobodyさん
NGNG0511nobodyさん
2006/05/16(火) 14:10:21ID:???0513nobodyさん
NGNG0514nobodyさん
2006/05/16(火) 15:07:09ID:???笑いすぎて腹が痛くなった
0515nobodyさん
2006/05/16(火) 17:14:03ID:???0516nobodyさん
2006/05/16(火) 19:06:53ID:???超わろたw
0517nobodyさん
2006/05/16(火) 19:20:36ID:???『鬼畜米英』
『妥当チャーチル』
『欲しがりません勝つまでは』
この3つをスローガンに掲げて掲示板トップに掲載しとく。
効果てきめん。
0519nobodyさん
NGNG0520500
2006/05/16(火) 19:52:21ID:???0521nobodyさん
NGNGif($comment =~ /[\x81-\x9f\xe0-\xfc][\x40-\x7e\x80-\xfc]/s){ print "Japanese"; }
else{ print "Not Japanese"; }
0522nobodyさん
2006/05/16(火) 20:11:57ID:???その計算機によると、うちは東京なのにアクセスポイントは愛知らしいwww
すごいな、うちって専用線だったんだ(*´д`)
0524nobodyさん
2006/05/16(火) 20:32:02ID:???0526nobodyさん
2006/05/16(火) 20:54:37ID:???>・全部半角英数字
$comment =~ /^[ -~]+$/s; # 全部半角英数字と記号
$comment =~ /[^ -~]/s; # 半角英数字以外がある(日本語かも)
0527nobodyさん
2006/05/17(水) 02:57:00ID:???0529nobodyさん
2006/05/17(水) 06:50:54ID:???ありがとうございますと言いながら、それ全然お礼じゃないよな。
慇懃無礼な物言いを直さないと、今後誰もあなたの質問に答えてくれなくなるかもよ。
0530nobodyさん
2006/05/17(水) 07:39:40ID:???0535nobodyさん
2006/05/17(水) 12:47:45ID:???MD5…ID
0537nobodyさん
2006/05/17(水) 17:02:26ID:YyZihD9scat /etc/passwdの結果をperlのプログラムに取り込むにはどのようにしたらよいでしょうか?
どなたか教えてください。
0540nobodyさん
2006/05/17(水) 18:01:01ID:???なんだそのへたれ回答は・・・
0541nobodyさん
2006/05/17(水) 19:33:26ID:???0542nobodyさん
2006/05/17(水) 20:00:51ID:???0543nobodyさん
2006/05/18(木) 01:16:03ID:fJu7t3bWhtmlからPOSTでデータを送信すると、
$ENV{'REQUEST_METHOD'} の中には POSTが入るでしょ?
んで、
htmlからGETでデータを送信すると、
$ENV{'REQUEST_METHOD'} の中には GETが入るでしょ?
それじゃ、
htmlからデータを送信しなかった場合(cgiを呼び出しただけ)は何が入るのですか??
0544nobodyさん
2006/05/18(木) 01:17:38ID:???0547nobodyさん
2006/05/18(木) 09:37:43ID:???クライアントがGETでリクエストすればGETだし、
POSTをリクエストすればPOST。
HTTPを学んでください。
0550nobodyさん
2006/05/18(木) 11:48:23ID:???このスレに書かれてるから勘違いしてた。
0551nobodyさん
2006/05/18(木) 12:35:32ID:???(実際にGET動作でも指定がなければ環境変数に入らない)
0552nobodyさん
2006/05/18(木) 13:12:00ID:???#!/usr/bin/perl
print "Content-type: text/html\n\n";
print $ENV{'REQUEST_METHOD'};
>>551はうそ
0553nobodyさん
2006/05/18(木) 14:39:45ID:???RFC1616
5.1 Request-Line
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
Methodは必須、省略はできない。
0555nobodyさん
NGNGhttp://etc3.2ch.net/denpa/
0556nobodyさん
2006/05/18(木) 15:02:57ID:???> 普通ディフォルトはGET
ディフォルト
ディフォルト
ディフォルト
ディフォルト
ディフォルト
ディフォルト
ディフォルト
ディフォルト
ディフォルト
ディフォルト
ディフォルト
ディフォルト
0557nobodyさん
2006/05/18(木) 15:10:10ID:tdyLNCZHどのような作り方をすればよいですか?
0559nobodyさん
NGNG既存のDLカウンタのコードを読んでみるとか
http://www.studyinghttp.net/
ここも参考にしてみるとか
0561nobodyさん
2006/05/18(木) 15:35:23ID:???英語の発音だとディフォルトなんだけど。
っつーかこういうどうでもいいやつ多いなおれみたいな。
0562557
2006/05/18(木) 15:51:28ID:tdyLNCZH具体的には、
<a href="list.csv">DownLoad</a>
と書いているのですが、list.csvのpermissionを777にしてもInternal Server Errorが出てしまいます。
このエラーの回避をし、ダウンロードを可能にするにはどうしたらよいのでしょう
0563nobodyさん
2006/05/18(木) 16:25:09ID:???日本語の外来語表記では、「ディフォルト」は「デフォルト」の表記のゆれとして扱われる。
だからどちらも間違いではないが、一般的には「デフォルト」と書く。
0565nobodyさん
2006/05/18(木) 16:58:36ID:???- デフォルト
- ディフォルト
のどちらでもないよね。
http://dictionary.goo.ne.jp/search.php?MT=default&kind=ej&mode=0&base=1&row=0
0567nobodyさん
2006/05/18(木) 17:20:41ID:???そのページにおもいっきり
>【コンピュータ】デフォルト, (デフォルト値を)採用する.
と書いてあるんだが…。
しかし、webをウェブじゃない!ウェッブだ!!とか
ホームページじゃない!ウェブサイトだ!!とか言う
香具師って、年逝ってるのが多いよね。
どーでも良いんだよ意味が伝われば(w
0568nobodyさん
2006/05/18(木) 17:33:40ID:???デフォでOK
0569nobodyさん
2006/05/18(木) 18:24:57ID:???0570nobodyさん
2006/05/18(木) 19:19:37ID:C+uZ+IY0<SELECT NAME="color">
<OPTION value="1">1</OPTION>
<OPTION value="2">2</OPTION>
<OPTION value="3">3</OPTION>
<OPTION value="4">4</OPTION>
<OPTION value="5">5</OPTION>
<OPTION value="6">6</OPTION>
<OPTION value="7">7</OPTION>
<OPTION value="8">8</OPTION>
<OPTION value="9">9</OPTION>
<OPTION value="10">10</OPTION>
</SELECT>
を10個ほど連続で記述しているのですが、正直、長くなりすぎて困っています。
シンプルにできないでしょうか?
0571nobodyさん
NGNG0572nobodyさん
2006/05/18(木) 19:35:57ID:???0573nobodyさん
2006/05/18(木) 19:38:11ID:???0574nobodyさん
2006/05/18(木) 19:38:26ID:C+uZ+IY0本当に申し訳ない
Perl初めて一週間のオイラにはなんのこっちゃか・・・
0575nobodyさん
2006/05/18(木) 19:49:51ID:???0576nobodyさん
2006/05/18(木) 19:51:57ID:???0577nobodyさん
2006/05/18(木) 19:54:08ID:???0578nobodyさん
2006/05/18(木) 20:45:47ID:???さぼってんじゃねーぞ
0579nobodyさん
2006/05/18(木) 20:54:20ID:???_匕∠ニ≡=E─天¬冖卞广了 ̄_匕∠ニ≡=E─天¬冖卞广了 ̄
_匕∠ニ≡=E─天¬冖卞广了 ̄_匕∠ニ≡=E─天¬冖卞广了 ̄
 ̄了广卞冖¬天─E=≡ニン、匕_  ̄了广卞冖¬天─E=≡ニン、匕_
 ̄了广卞冖¬天─E=≡ニン、匕_ ̄了广卞冖¬天─E=≡ニン、匕_
 ̄了广卞冖¬天─E=≡ニン、匕_ ̄了广卞冖¬天─E=≡ニン、匕_
_匕∠ニ≡=E─天¬冖卞广了 ̄ _匕∠ニ≡=E─天¬冖卞广了 ̄
_匕∠ニ≡=E─天¬冖卞广了 ̄_匕∠ニ≡=E─天¬冖卞广了 ̄
_匕∠ニ≡=E─天¬冖卞广了 ̄_匕∠ニ≡=E─天¬冖卞广了 ̄
0582nobodyさん
2006/05/18(木) 21:32:59ID:???print '<SELECT NAME="color">',"\n";
$i=0;
while(1) {
$i=$i+1;
print '<OPTION value="',$i,'">',$i,'</OPTION>',"\n";
if($i==10) { goto DERU; }
}
DERU:
print '</SELECT>',"\n";
0583nobodyさん
2006/05/18(木) 21:40:24ID:???0584nobodyさん
2006/05/18(木) 21:45:10ID:???map {print qq|<OPTION value="$_">$_</OPTION>\n|} (1..10);
print '</SELECT>',"\n";
0585nobodyさん
2006/05/18(木) 21:49:32ID:???>>573さんのようにPerlだからでこその記述の仕方ではないけど・・・
print "<select name=\"color\">\n";
for(1..10){
print "<option value=\"$_\">$_</option>\n";
}
print "</select>\n";
>>579
普通に感動
すごいなそれ
0586nobodyさん
2006/05/18(木) 21:55:03ID:???0587nobodyさん
2006/05/18(木) 22:13:29ID:???Perlで他のサイトを取得して表示したいと思っています。
(著作権侵害とかそういうことをしたいのではないです)
お時間のある方にお願いしますが、次のコードで@niftyのトップページを取得してみたら
どうなるか教えていただけませんでしょうか?
print "Content-Type: text/html\n";
print "\n";
use LWP::Simple;
print get( 'http://www.nifty.com/' );
私のところだと、ブラウザ上での表示がぐちゃぐちゃになるんですが…。
0588nobodyさん
2006/05/18(木) 22:33:05ID:???こいつ他のスレ荒らした奴だから構わないでね。
http://pc8.2ch.net/test/read.cgi/tech/1146022352/
0590nobodyさん
2006/05/18(木) 22:50:45ID:???応接するメンツはそれほど変わらんと思うけど。w
>>587
その質問に対する答えなら、「試しちゃいないけど、たぶん僕んとこでも同じです」だね。
でな、ひとつ提案なんだけれど、「やりたいこと」、「試したこと」、「その結果」をそれぞれ正しく伝わるように書いてみませんか。
「どうなるはずだと思ったか」を書かずに、単に「どうなるか」と問われても、「書いた(コード)なり」、としか答えられませんし、
また「ぐちゃぐちゃ」が実際にどういった現象を指しているのか、そしてそれはあなたの狙いとどう食い違っているのか、そのあたりは最低限明記しなくては有益な議論になりません。
0591nobodyさん
2006/05/18(木) 22:50:56ID:???0592nobodyさん
2006/05/18(木) 22:52:19ID:???http://oshiete1.goo.ne.jp/kotaeru.php3?q=2143752
0593nobodyさん
2006/05/18(木) 22:58:57ID:???マルチしてる池沼は以後放置
0594587
2006/05/18(木) 23:02:26ID:???ありがとうございます。
■やりたいこと:
Perlスクリプトから任意のページを取得する
(丸ごとゲットしたいわけではなく、ブラウザで表示するだけ)
■試したこと:
>>587のようなコード(socket関係、LWPモジュール関係)
■結果:
指定したページは取得できているけれど、相対パス指定の画像や外部ファイルが
読み込めていないため、スタイルシートに依存しているページなどでは
表示がぐちゃぐちゃになる
■「ぐちゃぐちゃ」とは:
スタイルシートに依存しているページなどをオフラインで見た時のようなイメージ
■私の狙いとどう食い違っているのか:
私は、スクリプトにアクセスすると、スクリプトが指定したページを取得してきて
それをブラウザに返し、そこからブラウザがリンクを解析して画像などを読み込んでくると
思っていました。
でも、絶対パスの画像などは読み込まれてきますが、相対パスのものが
全く読み込まれません。
これって普通なんでしょうか?
0598nobodyさん
2006/05/18(木) 23:05:59ID:???0599nobodyさん
NGNG0600587 ◆AOxf8.Tmck
2006/05/18(木) 23:06:32ID:???つけてないのは偽者です。
0601nobodyさん
2006/05/18(木) 23:07:16ID:???>これって普通なんでしょうか?
それで正しい動作。あまりに普通。
ソース解析して中身まで持って来たりはしない。
0602nobodyさん
2006/05/18(木) 23:07:40ID:???呆れたってよりも可哀想だ…
0605587 ◆AOxf8.Tmck
2006/05/18(木) 23:09:21ID:???そうなんですか…。どうもありがとうございます。
それでは、相対パスの画像なども読み込まれるようにするには、
どうコーディングすればいいんでしょうか?
0607nobodyさん
2006/05/18(木) 23:10:35ID:???>ググっても解決しませんでしたが。
何て検索したか言ってみろ
俺のディスプレイには解答への検索結果が出てるが
0608nobodyさん
2006/05/18(木) 23:10:48ID:???丸ごと以上にゲットしなきゃだと思う。。。@HTMLを解釈して必要な物を再度取得する。
ブラウザってば、普通の人にはなんの変哲もない事をやっているように見えるけれども、
中の人はほんと大変なんだけどなぁ。。。
0610587 ◆AOxf8.Tmck
2006/05/18(木) 23:14:01ID:???すいません忘れました。
>>608
エスパー機能でなくても、例えばニフティのトップだったら
ブラウザに「http://www.nifty.com/」というURLを与えてやれば、
そこから相対パスをブラウザ内部で絶対パスに変換することはできると思います。
0611nobodyさん
2006/05/18(木) 23:15:17ID:???0612587 ◆AOxf8.Tmck
2006/05/18(木) 23:15:46ID:???「@HTML」って何ですか?
ググっても「@」という記号が無視されるようで、検索できませんでした。
0613nobodyさん
2006/05/18(木) 23:15:49ID:???該当するページのソースを丸ごと取得してから、ソースを解釈して<img src="uri">などの"uri"からリソースを再度取得し、
ローカル内に再配置する。それからそれから(長いので省略)
という意味です。
0617nobodyさん
2006/05/18(木) 23:20:50ID:???0619587 ◆AOxf8.Tmck
2006/05/18(木) 23:22:25ID:???…ということは、ブラウザと同じようなものを作るしかないということなんですね。
どうもありがとうございました。
0622nobodyさん
2006/05/18(木) 23:32:08ID:???0623nobodyさん
2006/05/18(木) 23:34:44ID:???0626nobodyさん
2006/05/18(木) 23:57:46ID:???早 /::::l:::l::、:::::、:::::ヽ::、::::::::::::\:::\::::::::ヽヽ::::::ヽ 駄
.く /:::!::::i:::!:::ヽ:::ヽ::::::ヽ::ヽ、::::::::::\:::ヽ:::::::ヽヽ::::::', 目
な. /:l::::!::::ヽ!::ヽ:::::::ヽ:::::::\:::ヽ、::::::::ヽ:::ヽ::::::::!::i:::::::! だ
ん ハ:::l:::::、::::ヽ::::\:::::\:::::::\:::`ヽ、:::ヽ::ヽ:::::!:::!:::::l
と /:::::::l::::::!ヽ:ヽ::::、:::::ヽ:::、:\::::: \::::::\::::!::::ヽ:!:::i:::l:l こ
か !:/!:::::!::::::!::ヽ:ヽ{:::\:::ヽ::::\:::\::ヽ:::::::ヽ!:::::::}!::::l::li| い
し j/:::l:::::!:、:::!::ト、:、:ヽ:::::`ヽ{、::::::\::::\{、::::::::::::::::i::!::l:l ! つ
な l:i:l::::i::i:、:l::lテ=-、:ヽ、_、::\_,≧ェュ、_、\:::::::::i::li::!::リ :
い !ハト:{:!:i:トN{、ヒ_ラヘ、{ >、{ 'イ ヒ_ラ 》\::l::!:ト!!:l::l! :
と ヽ i、ヽ:ト{、ヾ ̄"´ l!\ `" ̄"´ |::!:l::! j:ll:!
: !::、::::i l u |:::/lj/l:!リ
: ヾト、:!u j!/ j|:::リ
ヾ! ヽ ‐ u /イ´lハ/
}ト.、 -、ー-- 、__ /' !:://
リl::l゛、 `二¨´ / |/:/
rー''"´ト!::i{\ / / !:/
/ ^ヽ ヾ! ヽ _,,、'´ / j/
EOF
0627nobodyさん
2006/05/18(木) 23:59:24ID:???誰か教えてくださいよ〜。
0628nobodyさん
2006/05/19(金) 00:27:46ID:???意地悪で言うんじゃないからちゃんと読んでね。
お前さんがそこそこ腕の立つ医者だったとしようや。
患者がやってきて、
「病院に通ってるのに病気が治らないんですけど」
って言うんだ。
僕たちは商売でもないのに、毎度基礎的な事実関係を優しく問診してあげるところからスタートしなくちゃいけないかい?
問題解決に興味があっても(だから僕たちはここにいるんだけど)、問題が何なのかわからなくちゃどうしようもないんだ。
0629543です
2006/05/19(金) 00:27:52ID:1sSf/5KFhtmlからデータを送信しなかった場合(cgiを呼び出しただけ)ではGETが入っていました。
>>544 試してみたら簡単でした
>>547 日本語を学んでください
>>548 ありがとうございました
>>551 GETでした
>>552 わざわざソースまでありがとうございました
>>553 意味がわからなかったです・・・
>>554 正解でした
>>556 病院に行ってください
さんきゅーみんな!さんきゅーな!!
0631nobodyさん
2006/05/19(金) 09:16:12ID:???漢字を含むファイルの読み書きをする決定的な方法はないでしょうか?
どうもパスやファイル名だけがUTF-8になってしまう妙な不具合(仕様)が
あるようなので困っています。
0633nobodyさん
2006/05/19(金) 09:40:07ID:???読み書き以外の操作に関しては入出力レイヤのような便利(?)な仕掛けはないので
自分でencodeしないとだめだという仕様。
0635nobodyさん
2006/05/19(金) 10:51:24ID:???0636nobodyさん
2006/05/19(金) 11:23:42ID:???0637574
2006/05/19(金) 12:14:00ID:???ちょっくら真剣に勉強してきます orz
0638nobodyさん
2006/05/19(金) 14:58:40ID:JIoPGZWV・・・ or error("×××失敗: $!");
のようになっているのですが、サーバー(Linux)の設定が
eucのため $! もeucになり、文字化けしてしまいます。
$! を使った箇所はたくさんあるため、1つ1つ
・・・ or error("×××失敗: " . decode("euc-jp", $!));
のように変更するのは避けたいのですが、簡単に
解決する方法はあるでしょうか。
※スクリプトの文字コードやサーバーの設定は変えられません。
何かいい方法がありましたらご教授下さい。
よろしくお願いします。
0639nobodyさん
2006/05/19(金) 15:51:40ID:???仕事で IT 土方やってるなら、地面を掘るほうの土方に転職する。
0640nobodyさん
2006/05/19(金) 16:07:23ID:???普通はスクリプトで全て設定できる。
0641nobodyさん
2006/05/19(金) 16:10:56ID:4aaheppT0642nobodyさん
2006/05/19(金) 16:16:43ID:???通常ユニコード文字列とバイト文字列をつなげるときにバイト文字列はlatin-1としてdecodeされるが、
これはencodingプラグマで変更することができる。
したがってバイト文字列な$!をeuc-jpとしてdecodeするように
use encoding "euc-jp";
としてやればいけるはずだ。ただ他の部分にも影響するから注意。
一応動作確認:
use utf8;
use encoding 'euc-jp';
open F, "</hogehoge" or die "ほげほげ: $!";
というプログラムをutf8でセーブして
% LANG=ja_JP.eucJP perl foo.pl 2>&1 | hex
0x00000000: e3 81 bb e3 81 92 e3 81 - bb e3 81 92 3a 20 e3 81 ..祉....祉..: ..
0x00000010: 9d e3 81 ae e3 82 88 e3 - 81 86 e3 81 aa e3 83 95 ............
0x00000020: e3 82 a1 e3 82 a4 e3 83 - ab e3 82 84 e3 83 87 e3 ..<.ゃ.......
0x00000030: 82 a3 e3 83 ac e3 82 af - e3 83 88 e3 83 aa e3 81 .c.......
0x00000040: af e3 81 82 e3 82 8a e3 - 81 be e3 81 9b e3 82 93 .......障.....
0x00000050: 20 61 74 20 66 6f 6f 2e - 70 6c 20 6c 69 6e 65 20 at foo.pl line
0x00000060: 34 2e 0a - 4.J
0644643
2006/05/19(金) 17:02:27ID:???そゆことなら error() の定義を書き換えるか、オーバーライドしてしまえば最小限の修正で済むんでないかな、と。
0645nobodyさん
2006/05/19(金) 17:08:17ID:???どんな状況でどんな理由なのだろうか
0646638
2006/05/19(金) 18:34:56ID:???>>640
TeraTermというソフトでサーバーにアクセスすると文字コードがeucとなっているので、
そのことを伝えたくて書きました。私自身が分かっていないまま書いてしまい申し訳ありません。
>>642
頂いたテストコードでうまく行くのは確認できました。しかし、いろいろテストしてみましたところ、
use utf8;
use encoding 'euc-jp';
eval { open FH, "hoge" or die $! };
if ($@) {
print "エラー: $@";
}
のような感じにすると、なぜか文字列全体がeucになってしまいました。
また、
> 他の部分にも影響するから注意
の「影響」も分かっていない状態で使うのは、何か問題が起きた際にどうしようもなくなって
しまうため、せっかくのところ申し訳ないのですが別の方法を探そうと思います。
>>644
error("utf8文字列 eucの$!") という具合なので、error に渡った時にはもう文字コード混在
状態なのです。それを判断して変換できればその方法が一番よいように思うのですが、
$! の組み込まれ方も様々でして、私ではどうにもできませんでした。
>>645
既に稼動状態にあるものを引き継いだため、大きな影響が出そうなことはできないのです。
0647nobodyさん
2006/05/19(金) 18:39:44ID:???oioi
0648nobodyさん
2006/05/19(金) 18:56:31ID:???英語になるので文字化けからは解放される。
0649nobodyさん
2006/05/19(金) 19:27:02ID:???いくつか質問。
1.それはCGIの類なのか、ただのスクリプトなのか、何なのか
2.見るのに使うソフトウェアはブラウザなのか端末ソフトなのか何なのか
3.見たいものはログファイルなのか、スクリプトの出力なのか、何なのか
0652nobodyさん
2006/05/19(金) 19:46:29ID:???無くても平気?
無くても平気だけれども、正確に日本時刻を取得したいのならば(locale依存)
$ENV{TZ}を待避させてから'JST-9'を入れてあげるといいと思うそ。
0655638
2006/05/19(金) 21:06:17ID:???ログが英語になるのはまったく問題ないのですが、
それはどこの設定を変えればよいのでしょうか。
>>649
1.CGIやバッチ処理を行うスクリプトなど様々です。
2.ログは端末ソフト上で見たり、ダウンロードして秀丸で見たりします。
3.エラーは通常ログファイルに出力されますが、ちょっとした確認は標準出力したりしています。
>>650
$ENV{LANG} = 'euc-jp'; を追加してみても直りませんでした。
あ、そうか。。。
だったら、>639かな♪
0657nobodyさん
2006/05/19(金) 21:37:00ID:???起動する前にあらかじめ環境変数LC_MESSAGESにCを設定しておくか、perlの中だけでやりたければ
POSIX::setlocaleを使う。後者の例はperldoc perllocale参照。
0658638
2006/05/19(金) 23:07:44ID:???ありがとうございます。スクリプトの先頭で
use POSIX;
POSIX::setlocale(LC_MESSAGES, "C");
とすることで、エラーメッセージが英文になりました。
大変勉強になりました。
0659nobodyさん
2006/05/19(金) 23:50:07ID:???0660nobodyさん
2006/05/20(土) 01:08:01ID:???自前のスクリプトが吐く文字コードがUTF8で、
ターミナルの文字コードをUTF8にしておくで解決したのかな。
0662nobodyさん
2006/05/20(土) 17:53:08ID:???if ( $url =~ /\.html$/ or $url =~ /\.html\#/ )
これをもっと簡単に書くことはできませんか?
0663nobodyさん
2006/05/20(土) 17:58:29ID:???0664nobodyさん
2006/05/20(土) 18:57:30ID:???0665nobodyさん
2006/05/20(土) 19:00:35ID:???$wday = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday') [$wday];
という箇所があったのですが、この配列(?)のケツに付いている「[$wday];」って何でしょうか?
調べてもまったく出てこなくて・・・・・・
0666nobodyさん
2006/05/20(土) 19:04:52ID:???@aho = (3,4,3); $aho[1] eq 4 みたいに配列の要素へアクセスするときはブラケットの中に数字を入れる。
0667nobodyさん
2006/05/20(土) 19:18:42ID:???失礼。もう1ついいですか。
配列は「@wday」と書くものだとずっと思っていたのですが、ここでは「$wday」となっています。
これはどういった意味があるのでしょうか?
また、>>665はどういった処理をしているのでしょうか?
何度も申し訳ないです。。。。 よろしくお願いします。
0669nobodyさん
2006/05/20(土) 19:52:35ID:???それの$wday番目の要素を$wdayに代入
0671nobodyさん
2006/05/20(土) 20:10:52ID:???0672nobodyさん
2006/05/20(土) 21:04:01ID:???これ↓はリストを配列に代入。
@wday = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
個々の配列要素にアクセスするときは、@ → $にする。なぜなら個々の要素は普通の値(もしくは文字)だから。
@だと配列全体を表すことになる。
$a = $wday[2]; # (0から数えて)2番目の要素である Tuesday を $a に代入
print $a; # Tuesday と表示
これ↓だと先述したリストを一旦、配列に入れるというのをぶっとばして、いきなりリストの2番目の要素に
アクセスしている。
('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday')[2]
すなわち、その値は、Tuesday という文字。
下の代入は、まず$wdayには数字が入っていて、リストの何番目の要素を取り出すかを決めている。
例えば、$wdayに2が入っていれば、Tuesday が選ばれたことになる。そしてその Tuesday を$wdayに代入している。
$wdayは最初、数字だったのがこれにより文字列になるわけですね。
$wday = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday') [$wday];
# Exchange_Date(mode, unixtime)
# mode が 'jp' の時には日本語で返す。
# unixtime time(3)の値。
sub Exchange_Date{
my $mode = shift;
my @date = localtime shift;
@date = (
$date[5] + 1900,
('01' .. '12')[$date[4]],
$date[3],
qw(Sun Mon Tue Wed Thu Fri Sat 日 月 火 水 木 金 土)[$date[6] + ($mode eq 'jp' ? 7 : 0)],
$date[2],
$date[1],
$date[0]
);
return $mode eq 'jp'
? sprintf qq|%04d年%02d月%02d日(%s) %02d時%02d分%02d秒|, @date
: sprintf qq|%04d/%02d/%02d(%s) %02d:%02d:%02d|, @date
;
}
みたいな♪
0674nobodyさん
2006/05/20(土) 22:29:16ID:???こんなの(いくら初心者っつったって)前後の流れを見れば分かることだし
分からないようならPerlに限らずどんな言語だって身に付かないと思うよ。
甘やかすのと手助けするのは全然違う。
0675nobodyさん
2006/05/20(土) 22:34:23ID:???$wday = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday') [$wday];
すら分からない初心者に、自分はこんなにすごいんだYOと自慢しているようにしか見えない。
0676nobodyさん
2006/05/20(土) 22:44:06ID:???0677nobodyさん
2006/05/20(土) 22:45:03ID:???0678nobodyさん
2006/05/20(土) 22:53:39ID:???相手のレヴェルも考えましょうってことサ
>>677
リアルで聞かれたら親切に教えるんで、俺もやっぱりお人好しかなw
0679nobodyさん
2006/05/20(土) 23:10:55ID:???0681nobodyさん
2006/05/21(日) 00:40:52ID:???0682nobodyさん
2006/05/21(日) 01:34:49ID:???0683nobodyさん
2006/05/21(日) 03:26:23ID:MNSamSTB現在チャットを作っているのですが
在室者・閲覧者の表示方法がわかりません
どういう感じにすれば表示できるかご教授してくださるとうれしいです
0684nobodyさん
2006/05/21(日) 03:48:50ID:???在室者は、ログインしてから退室するまでのメンバーを表示すればいいだけだし
閲覧者は、1分に1回くらい画面をリフレッシュして、その時にIPを拾えばいい
大雑把に言えばこんな感じだけど、どういうチャットを作りたいのかはあなたしか
知らないんだから、自分の理解出来る範囲で仕様を決めればいいんでないかい
0685nobodyさん
2006/05/21(日) 03:56:10ID:???例えば
・IP
・ユーザ名
・名前の色コード
・リロード時間(個人個人で設定が違ってくるから)
・現在の状況(在室中か閲覧中か)
等を構造体に持たせるとか。
0686683
2006/05/21(日) 04:13:12ID:MNSamSTB深夜にも関わらずレスありがとうございます
つまりログインしたときその人の名前とIPを拾い別ファイルに記録
(ログアウト時には削除する)
閲覧はログイン手前画面のIPを監視して記録と…
とりあえずこういう感じに自分で書いてみようと思います^^
またわからなくなったときよろしくおねがいしますm(__)m
0687nobodyさん
2006/05/21(日) 13:00:23ID:???ネ申KENT様のスクリプト以外は全て糞ですウンコです。
0688nobodyさん
2006/05/21(日) 13:03:06ID:???use strict;とかつかうやつは馬鹿しかいないし、
オブジェクト指向とか、設計時間の無駄ですよね。
目の前の納期に間に合えばいいもんね!
0689nobodyさん
2006/05/21(日) 13:22:33ID:???書いて配布できない環境下の俺が来ましたよ?
古くからやっていると、そこら辺が難しい
perl4のものはバクと最適化とセキュリティ関係以外は打ち止めにして
頭の弱い利用者を配慮してperl5のは別鯖で配布していたりする
それ以前に「ネ申KENT様」と書けば反面教師としてですね
0690nobodyさん
2006/05/21(日) 13:25:24ID:???0691nobodyさん
2006/05/21(日) 18:44:21ID:0cIEHbzA$str='01234567890abcdef';
で、
〜/[0-9]*/と正規表現させた場合、
マッチした部分(この場合、マッチした'01234567890')を取り出す場合、どうすればよいのでしょうか?
0692nobodyさん
2006/05/21(日) 18:51:18ID:???0693nobodyさん
2006/05/21(日) 19:37:41ID:???0695nobodyさん
NGNG0699nobodyさん
2006/05/21(日) 20:02:10ID:???0700nobodyさん
2006/05/21(日) 20:03:18ID:???0701nobodyさん
2006/05/21(日) 20:03:39ID:???0702nobodyさん
2006/05/21(日) 20:05:35ID:???>>696
おまいのやりたいことは>>693で合ってるか?
ならそれでいいんだけどなw
698 名前:nobodyさん[sage] 投稿日:2006/05/21(日) 20:00:53 ID:???
>>696
え、>>693は思いっきり間違ってるけどこれでいいの?w
700 名前:nobodyさん[sage] 投稿日:2006/05/21(日) 20:03:18 ID:???
バロスwwwwwwwwwwwwww
701 名前:nobodyさん[sage] 投稿日:2006/05/21(日) 20:03:39 ID:???
ワロタ
気持悪りぃ…
0703nobodyさん
2006/05/21(日) 20:05:53ID:???0704nobodyさん
2006/05/21(日) 20:06:20ID:???perldoc perlrequick
を隅から隅まで 3回読んで理解してから、また同じ質問をしに来てみて。
まだその気が残ってればね。
0705nobodyさん
2006/05/21(日) 20:07:32ID:???0706nobodyさん
2006/05/21(日) 20:09:14ID:???そういう返しは嫌いだなボクチン
>>705
>>704にむかついたので教えてあげようと思ったがやめた。
perlの正規表現を扱っているページならほぼ確実に載ってると思うんで自分で調べろ
0708693
2006/05/21(日) 20:15:20ID:???まさかここまで釣れるとは思わんかったよ。
>>696
>>697
>>698
>>700
>>702
マジで馬鹿なんだなお前ら。
0709nobodyさん
2006/05/21(日) 20:16:08ID:???0712nobodyさん
2006/05/21(日) 20:26:58ID:???wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
w
臭ぇんだよカス
0713nobodyさん
2006/05/21(日) 20:40:46ID:???0714nobodyさん
2006/05/21(日) 20:49:19ID:???0715nobodyさん
2006/05/21(日) 20:51:27ID:???0716nobodyさん
NGNG0717nobodyさん
2006/05/22(月) 00:07:23ID:???0718nobodyさん
2006/05/22(月) 00:55:07ID:???0719nobodyさん
2006/05/22(月) 01:03:12ID:???>ワロタ
日本語以外を話されても困ります
この言葉を日本語に翻訳してくれるプログラムを教えて下さい
0721nobodyさん
2006/05/22(月) 02:26:31ID:8/L06kwrCGIスクリプトのHTML部分でUTF-8のコードを使いたいのですが
スクリプト本体をUTF-8で書いても500Errorがでてしまいます
どうしたらいいんでしょうか?
< META http-equiv="Content-Type" content="text/html; charset=UTF-8" >
このタグだけUTF-8にしてみたりしたんですが、元のコードが違うため化けてしまってだめです
どうか教えてください
0724721
2006/05/22(月) 03:05:46ID:???723さんのとおりUTF-8Nで保存したら表示されました!
ありがとうございます^−^
0725nobodyさん
2006/05/22(月) 03:40:59ID:???0727nobodyさん
NGNG0728nobodyさん
2006/05/22(月) 11:40:06ID:p6aDul8l例えば設定ファイルに「$bgcolor=red」などと書いたものを
そのまま1行ずつ読み込んだとします
これをスクリプト内でそのまま使って
機能させることはできますか?
0729nobodyさん
2006/05/22(月) 11:49:52ID:???0730nobodyさん
2006/05/22(月) 11:55:28ID:???- 終了 -
0732nobodyさん
2006/05/22(月) 13:10:16ID:???- 終了 -
0734nobodyさん
2006/05/22(月) 13:15:37ID:???0735nobodyさん
2006/05/22(月) 13:17:23ID:???>>732
オマエはバカか?よく見ろ。
あ?おい
0736nobodyさん
2006/05/22(月) 13:20:41ID:???あ行の勉強中ですか?
お疲れさまです。
0737nobodyさん
2006/05/22(月) 13:22:11ID:???0738nobodyさん
2006/05/22(月) 17:21:46ID:???print $bgcolor,"\n", $color, "\n";
exit;
__END__
$bgcolor=red
$color=blue
>>728 こういうこと?
0739nobodyさん
2006/05/22(月) 18:31:34ID:???PHPでの print_rのようなものはありませんか?
googleで検索したところ Dumperというのを見つけたのですが、
配列を入れても配列の構造を返さないようです。
ちなみに以下のようにしました。
$dumper = new Data::Dumper(\@array);
print $dumper->Dump();
0740nobodyさん
NGNGじゃだめなん
0741nobodyさん
2006/05/22(月) 19:19:11ID:???だめなんですよねぇ。
ちょっと調べているんですが、以下のようなコードで配列に連想配列を
突っ込むというようになっているからかもしれません。
@array = ('a','b','c');
foreach(@hoge) {
$array{$_}{$fuga} = 'hogehoge';
}
print Dumper(\@array);
-> a,b,cがでてくる
print Dumper(\$array);
-> undefがでてくる
0742nobodyさん
NGNG0743nobodyさん
2006/05/22(月) 19:39:48ID:ZM446lpMperlの変数値を複数行にする事は可能でしょうか?
例えば、htmlソースを変数に入れる際改行を消して一行にするしかないのでしょうか?
例)以下のソースを$wordという変数に代入するには・・・
<table>
</tr>
<td>
hello
</td>
</tr>
</table>
↓
$word = "<table><tr><td>hello</td></tr></table>";
とするしかないのでしょうか?
0744nobodyさん
NGNG$word = << '_END_';
<table>
</tr>
<td>
hello
</td>
</tr>
</table>
_END_
0745VIPPER
2006/05/22(月) 19:46:53ID:???ぐぐれかす
0746nobodyさん
2006/05/22(月) 19:47:44ID:???改行文字入れるだけ。訊く前に自分で試してみては。
"<table>¥n<tr>¥n<td>¥nhello¥n</td>¥n</tr>¥n</table>¥n"
0748nobodyさん
2006/05/22(月) 19:58:54ID:???> \%array じゃないのか…
その通りでした...
ぐぐって出てきたページには \$hash って書いてあったと思ったのに orz
ありがとさんくす
0749nobodyさん
2006/05/22(月) 20:52:52ID:???0750VIPPER
2006/05/22(月) 20:57:38ID:???アンカーの記号に全角使うヤツってプログラムを手に付ける人だとは思えない
バロスwwwwwwwwwwwww
突撃させて荒らしてやろっかこのスレww
0751nobodyさん
2006/05/22(月) 21:01:38ID:???むしろ低脳集団か^〜^
0752VIPPER
2006/05/22(月) 21:07:36ID:???VIPPER舐めんなw
0753nobodyさん
2006/05/22(月) 21:10:04ID:HprcJTxW0754nobodyさん
2006/05/22(月) 21:11:26ID:/ImCeCNjでいいのかな?
0755nobodyさん
2006/05/22(月) 21:14:09ID:???クソ人生終了
でいいのかな?
0756nobodyさん
NGNG0757nobodyさん
2006/05/22(月) 21:20:14ID:BVU2xPKh0758nobodyさん
2006/05/22(月) 21:21:16ID:???0759nobodyさん
2006/05/22(月) 21:22:06ID:Lsku8mlu/ _ ヽ /::/ / ̄:::::::::::::::::::::::\
/  ̄ ̄ j /::::l/:::::::::::::::::::::::::::::::::::::::::l
l _ィニニア二二二ニヽ、j._ ,l:::::::::::/l/lノノ/_イ:::::::::::::l
| 0Lj/ヽ /・l,`ヽ l::::/ /ヽ /・l, l::::::|
レ:r、/i・ ノ く、ノ| |::l i・ ノ く、ノ !:;:::/
{, ニ , .|ヽ {, ニ , .|:::/
レ} 人 ノヽ | } 人 ノヽ |ノ/
l:T`'''i, `ー" \__,/ノ T`'''i, `ー" \__,/
ヽ}, `ー--ー'''" /' レ}, `ー--ー'''" //
x, _,,.x=" `x, _,,.x="
_,r┴‐-`v´-‐j-、__ , -‐-、_r┴─'ー‐チト
/ ̄/:.:.:.:| ̄ ̄`T ̄´|:.:.:.:l´ `ヽ / ヽ ̄`ー-‐'´`''''⌒ヽ 「バルス!」
/ ,':.:.:.:.:.l l l:.:.:.l \ _r‐、-、-、r, 、 ',
|:.:.:.:.:.:.! ! !:.:.l ,. -‐ゝ/// 〉 〉 〉 〉 〉 ! ',
l:.:.:.:.:.:.l | l:.:.:l / 人〈〈〈〈 ' ' ' /っ l l
l:.:.:.:.:.:.! ! l:.:.:.ト/ / ```´-ァ‐'''" / l
、__/:.:.:.:.:.:l | |:.:.:ヽヘ l // / _ ィノ
/:.:.:.:.:.:.:! l |:.:.:.:.:l `ーヽ、_ノ´l、______/lニ二」
____l:.:.:.:.:.:.:.| l |:.:.:.:.:! |_ ( ( ) )_〕| l
l`ー‐‐'匸二l ̄ ̄l二フーイ /  ̄ `‐‐'´ ヽ |
0760nobodyさん
2006/05/22(月) 21:22:37ID:???0761nobodyさん
2006/05/22(月) 21:24:22ID:???0762nobodyさん
2006/05/22(月) 21:28:43ID:acwyxWDg0763nobodyさん
2006/05/22(月) 21:31:00ID:xLp91Sew0765nobodyさん
2006/05/22(月) 21:36:32ID:aQon5hVc0766nobodyさん
2006/05/22(月) 21:38:15ID:jSkZd7uq/|/| 〜∞
臭い?>/ ^ω^ | プーン
| ー /
て つ
| /
し´し´
〜∞
〜∞
0767nobodyさん
2006/05/22(月) 21:46:13ID:EyXuXU5p/ ̄`''''"'x、
,-=''"`i, ,x'''''''v'" ̄`x,__,,,_
__,,/ i! i, ̄\ ` 、
__x-='" | /ヽ /・l, l, \ ヽ
( \ /( _ 1 i・ ノ く、ノ | _ i i, / )
\ \ _ _ |_i, / ) {, ニ , .| ( \ i, _ _ _ / /
\ \( | | |)/ / } 人 ノヽ | \ \( | |. | )/ /
) |_|_|_|| / T`'''i, `ー" \__,/ .| | |_ |_ | _| (
| \__\___\__) ) }, `ー--ー'''" / ( (__/___/__/ |
| / | `x, _,,.x=" .| \ |
| / / `ー'" | \ /
\ ( / \ ) /
0768nobodyさん
2006/05/22(月) 21:48:05ID:9+sFjQV+0769申し訳ない。
2006/05/22(月) 21:53:09ID:ca5AJboc0770nobodyさん
2006/05/22(月) 21:54:06ID:???勘違いでしないでもらいたいが、VIPPERはこんなDQNばかりではない。
少なくとも本当のVIPPERは名前欄に「VIPPER」などと入れない。
2ちゃんねらには真面目な議論を好みジョークがわかる奴もいれば、
やっていい事といけない事の区別も付かないような奴もいるのは、ご存知だと思う。
これと同じように、VIPPERの一部(主に妹とかおっぱいとか言ってる層)が暴走しているだけである。
他の板にまでVIPの空気を持ち込むのは、このような輩だけである事をご理解いただきたい。
自分に不利になると召集をかけるサマは、そこらでたむろっているDQNと同じで、ただ醜い。
長文失礼しました。
0771nobodyさん
NGNGレベル低すぎw
0772VIPPER
2006/05/22(月) 21:59:30ID:???0773nobodyさん
2006/05/22(月) 22:25:31ID:Hm6mUF9z勘違いでしないでもらいたいが、VIPPERはこんなDQNばかりではない。
少なくとも本当のVIPPERは名前欄に「VIPPER」などと入れない。
2ちゃんねらには真面目な議論を好みジョークがわかる奴もいれば、
やっていい事といけない事の区別も付かないような奴もいるのは、ご存知だと思う。
これと同じように、VIPPERの一部(主に妹とかおっぱいとか言ってる層)が暴走しているだけである。
他の板にまでVIPの空気を持ち込むのは、このような輩だけである事をご理解いただきたい。
自分に不利になると召集をかけるサマは、そこらでたむろっているDQNと同じで、ただ醜い。
長文失礼しました。
0774nobodyさん
2006/05/22(月) 23:50:03ID:???長文失礼しました。
0775nobodyさん
2006/05/22(月) 23:54:37ID:???0776nobodyさん
2006/05/23(火) 00:26:26ID:???少なく←
0777nobodyさん
2006/05/23(火) 03:25:15ID:???入力された文字列をソートするcgiを作りたいのですが
入力フォームから$in{'text'}これにソートしたい文字列を入れて
ソートしたいんですが
配列への代入ができません
@texts = $in{'text'};
@sortd_texts = sort { $a <=> $b } @texts;
print <<"EOM";
〜〜〜〜HTML〜〜〜〜
EOM
foreach $texts ( @sortd_texts ) {
print ( $texts );
}
これだと入力した文字列がそのまま表示されるだけです。。。
この処理はどういじったらできるようになりますでしょうか?
0778nobodyさん
2006/05/23(火) 03:25:58ID:CTr6dA2u0779nobodyさん
2006/05/23(火) 03:32:45ID:???$in{'text'} に改行区切りの文字列が入るって事でいいのかな?
@texts = split /\n/, $in{'text'};
で改行で区切って配列に代入できるよ。
あと、文字列をソートするなら <=> 演算子じゃなくて cmp 演算子じゃないかな。
0780777
2006/05/23(火) 04:15:33ID:CTr6dA2uできました、が…
それだと改行を入れないとソートされないですよね
普通に文字を入れて、ソートできたら便利なんですが
ただ1文字1文字を区別するような方法は…
あればぜひ教えてくださいm(__)m
無理そうであれば諦めます
0781nobodyさん
2006/05/23(火) 04:19:37ID:???それか特殊変数に\nを入れておいて、配列をそのまんまprintする方法もあります
0782nobodyさん
2006/05/23(火) 04:44:03ID:???>>777は「配列に1文字(1byte?)ずつ叩き込みたい」だったのか…
0783777
2006/05/23(火) 04:57:06ID:CTr6dA2u↓がフォームだとして
a
b
a
b
a
b
@texts = split /\n/, $in{'text'};でやると
こういう風にしないとソートされないと言いたかったんです
それと丁度作りたい感じのがありました
tp://compact.s56.xrea.com/defrag.html
こういうのです
0784nobodyさん
2006/05/23(火) 05:04:31ID:???と、後から新しい情報を出すのは「情報の小出し/後出し」と言われていて嫌われる行為です。
質問する時には、なるべく詳しい状況を書く事をオススメします。
@texts = split //, $in{'text'};
で1文字ずつ区切って配列に入れられます。詳しくは split 関数のマニュアルを参照。
0785777
2006/05/23(火) 05:12:57ID:???最初はそうなると考えてなかったのです、すいませんでした。。
次回書き込むことがあった場合気をつけます
無事にできました
こんな初心者にレスしていただいたみなさまありがとうございますm(_ _)m
0786nobodyさん
2006/05/23(火) 10:31:46ID:???0787nobodyさん
2006/05/23(火) 15:57:06ID:Mf/1DNRkcで書けばこういう事です。
char data[1000]="";
memcpy(data,"aiueo",5);
memcpy(&data[100],"kakikukeko",10);
memcpy(&data[200],"sasisuseso",10);
memcpy(&data[300],999,4);
よろしくお願いします。
0788nobodyさん
2006/05/23(火) 16:11:18ID:???文字単位なら substr
http://search.cpan.org/~nwclark/perl-5.8.8/pod/perlfunc.pod#substr
ビット単位なら vec
http://search.cpan.org/~nwclark/perl-5.8.8/pod/perlfunc.pod#vec
0789787
2006/05/23(火) 16:20:26ID:Mf/1DNRkレスありがとうございます。
一定バイトのメモリを確保するにはどう書けば良いのでしょうか?
それとも、
my $data="";
と宣言すれば、
substr($data,100,10)="kakikukeko";
などとした時に自動的に1〜99バイト目にはヌルが入って
100〜109にはkakikukekoが入るのでしょうか?
簡単なテストをしてみたところうまくいきませんでした。
0790nobodyさん
2006/05/23(火) 16:56:25ID:???全部書いてあるじゃないか
0791nobodyさん
2006/05/23(火) 16:58:17ID:???my $data = pack('a5@100a10@200a10@300a4',"aiueo","kakikukeko","sasisuseso",999);
0792nobodyさん
2006/05/23(火) 17:03:55ID:???0793nobodyさん
2006/05/23(火) 17:29:41ID:Bg5mY8j2のように、SHIFT-JISで正規表現内に「ー」(文字コード81 5C?)等の
文字を使う場合、Internal Server Errorを回避するにはどのようにすれば良いでしょうか?
EUCで保存する以外に方法はないでしょうか?
0794nobodyさん
NGNG0795793
2006/05/23(火) 17:51:14ID:???即レスありがとうございます!正常に動作しました。
なるほど、「\Qと\Eに挟まれてる部分は、メタキャラクタを無視する」
ということのようですね。
勉強になりました。ありがとうございました。
0796nobodyさん
2006/05/23(火) 18:17:05ID:???上手く作れないのだが・・・・。
0797nobodyさん
NGNG0798nobodyさん
2006/05/23(火) 20:20:14ID:???PHPのhtmlspecialchars()に相当する関数です。
自作するのでもいいのですが、なるべく一般的な作法に従いたいと思い、聞いてみました。
テンプレートエンジンを使えというのはなしでお願いします。
0799nobodyさん
NGNGCGI::Util::simple_escape
CGI::escapeHTML
あるにはあるね。
全然一般的じゃないけど
0800nobodyさん
2006/05/23(火) 23:18:35ID:???Name_Not_Found<>mail<>2005/09/25 03:44:39<>text
↓
あぼーん<>あぼーん<>2005/09/25 03:44:39<>あぼーん
datをこうすりゃいいだけじゃないのか?
日付の部分はどうなってたか覚えてないが
0801nobodyさん
2006/05/23(火) 23:24:48ID:???あぼーん
0803nobodyさん
2006/05/24(水) 05:17:49ID:NTQf+ORl( $hashkey ) = split( ":", $data );
$hashkey = substr( $hashkey, 1 );
↑という文があるのですが、左辺の変数を()で括ったり、括らなかったり。
意味が違ってくるのでしょうか?
0804nobodyさん
2006/05/24(水) 06:44:10ID:???と同じ意味で、split の返りに括弧で括らないと要素の総数が入るんじゃない?
試してないから憶測だけど。
0805nobodyさん
2006/05/24(水) 06:48:27ID:???196:define_alias( qr/\bkoi8[\s-_]*([ru])$/i => '"koi8-$1"' );
\s-_ の範囲指定が不正だよんとエラーが出るのですが、これを同じ動作をする構文で書き換えた場合どうなるでしょうか?
それともここは
[\s\-_] でいいんでしょか・・・
0806ヽ(´ー`)ノ ◆.ogCuANUcE
2006/05/24(水) 07:00:47ID:???Encode 2.14, Encode::Alias 2.04 だと、
/usr/lib/perl/5.8.8/Encode/Alias.pm:190: define_alias( qr/\bkoi8[\s\-_]*([ru])$/i => '"koi8-$1"' );
になってる。
0807nobodyさん
2006/05/24(水) 08:03:21ID:???早朝レスどもです
使うモジュールはアップデートしるか・・・
0808nobodyさん
2006/05/24(水) 09:45:36ID:???ありがとう。そうなのかもしれないです。
試してみます。
0810nobodyさん
2006/05/24(水) 10:49:06ID:???わかりましたよ。
split関数の値を代入する先には、基本的には配列全体を表す「@○○」を
するけど、もし最初の区切りまでの部分だけ必要であれば、()で括った
変数を指定してやればいいみたい。()で括られた変数は、配列として扱える。
もし()で括らなかったら、配列をスカラ変数として扱ってしまう為
その配列の数が返ってくるみたい。
実際に試してもそういう結果になりました。
ありがとう。
0811nobodyさん
2006/05/24(水) 15:16:42ID:???もう少し正確に覚えといた方がいいよ。
http://www.kt.rim.or.jp/~kbk/perl5.005/perldata.html#List_value_constructors
<q cite="http://search.cpan.org/~nwclark/perl-5.8.8/pod/perlfunc.pod#split">
In scalar context, returns the number of fields found and
splits into the @_ array. Use of split in scalar context is deprecated,
however, because it clobbers your subroutine arguments.
</q>
0812nobodyさん
2006/05/24(水) 16:21:59ID:???まずは、このページから熟読します。
ありがとうございます。
0813nobodyさん
2006/05/24(水) 18:06:59ID:RkOZr6U0例えば、
@array = (a,b,c,d,e,f);
という配列があったとして、
$Aに「a,b,c,d,e,f」(コンマ区切り付き)という値を入れる場合、
$A = ($array[0],$array[1],$array[2],$array[3],$array[4],$array[5]);
とするのが一番手っ取り早い方法なんでしょうか?
0814nobodyさん
2006/05/24(水) 18:10:59ID:???join をどぞ
0815nobodyさん
2006/05/24(水) 18:21:06ID:???できました。ありがとうございました。
超初歩的な愚問で恥ずかしい限りです。
一応、他にも同じようなおバカさんが居た場合のために(さすがに居ないか…)
812の例ならば、
$A = join(',', @array);
でできました。
0817nobodyさん
2006/05/24(水) 18:29:39ID:???0818nobodyさん
2006/05/24(水) 18:33:08ID:???0819nobodyさん
2006/05/24(水) 18:50:19ID:???0820nobodyさん
NGNG$A = "@array";
遅いけど
0822nobodyさん
2006/05/24(水) 20:19:12ID:Cp3G4SBWスクリプト中にcookieを入れるのですが、なかなか上手く行きません
print "Set-Cookie: というのがそのまま表示されたり、
HTMLのprintと絡んで誤動作します
注意点はありますか?
0823nobodyさん
2006/05/24(水) 20:39:01ID:???0824nobodyさん
2006/05/24(水) 21:38:08ID:Cp3G4SBW認証のパスワードを記憶させたいのです
他の(自分で組み込んだ)cgiで作ったクッキーは読み込めていますが
スクリプトに組み込んだものだと動作しません
書き込んではいるのですが、表示させてみると変な記号になっています
厳しいなぁ
0825nobodyさん
2006/05/24(水) 21:47:24ID:???>>1の2.と3.に当たる部分をどうぞ。
> 表示させてみると変な記号になっています
URIエスケープしたものがきちんと書き込めていても、人によっては「変な記号」ですし。
0826nobodyさん
2006/05/24(水) 22:54:13ID:Cp3G4SBW頭冷やして明日出直します、失礼しました
0827nobodyさん
2006/05/25(木) 00:39:01ID:???0828nobodyさん
2006/05/25(木) 02:14:26ID:???別に問題ないんでね?
0829nobodyさん
2006/05/25(木) 11:49:58ID:KsPQY1Yo@A = (0,0,0,0,0,0,0,0,0,0,
,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,0);
@B = ("0","0","0","0","0","0","0","0","0","0",
,"0","0","0","0","0","0","0","0","0","0"
,"0","0","0","0","0","0","0","0","0","0"
,"0","0","0","0","0","0","0","0","0","0"
,"0","0","0","0","0","0","0","0","0","0");
という2つの配列を設定して、
@A,@Bを表示すると両方とも
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
という風になって最後に半角スペースがついてしまいます。
そのせいかわかりませんが、
おかげで $A[1]+=1; みたいな代入しても反応ないし、
$As = join(',', @A); で連結しても反応しません。
何が悪いのでしょうか?
0830nobodyさん
2006/05/25(木) 11:55:32ID:???print "@A";
or...
local $, = ',';
print @A;
0831nobodyさん
2006/05/25(木) 12:08:13ID:KsPQY1Yoありがとうございます!
そのように試してみたら
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,
のようになりました・・・
>>828
今 $As = join("<>", @A); で連結を試してみたら
0 0 0 0 0 0 0 0 0 0 0 0<>
な風に最後の所だけつきます・・・
0832nobodyさん
2006/05/25(木) 12:22:44ID:KsPQY1Yoちなみに
@A = (0,0,0,0,0,0,0,0,0,0,
,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,0);
設定直後に表示すると最後に半角スペースはついてないようです
push(@A.log,"$aa,$ab,$ac,$ad,$ae,@A,\n");
でA.logにセーブして
foreach $Al(@A.log) { ($aa,$ab,$ac,$ad,$ae,@A,$dm)= split(/,/, $Al); }
で取り出した後@Aを表示すると0 0 0 0 0 0 0 0 というように
最後に半角スペースがついてしまうようです。
0833nobodyさん
NGNG0834nobodyさん
2006/05/25(木) 13:08:50ID:???@Aに正しく配列が入ってない
0835nobodyさん
2006/05/25(木) 13:24:29ID:???これでやってみろ
0836nobodyさん
2006/05/25(木) 13:43:47ID:KsPQY1Yoでprint "@A";表示すると0 0 0de
一回ログに書き込んでから呼び出して
push(@A.log,"$aa,$ab,$ac,@A,\n");
foreach $Al(@A.log) { ($aa,$ab,$ac,@A,$dm)= split(/,/, $Al); }
print "@A";表示すると0 0 0 niなります
もしかしてログに変数と配列の両方を入れてしまうからおかしくなるのでしょうか?
ログの形は
$aa,$ab,$ac,0 0 0,
$aa,$ab,$ac,0 0 0,
$aa,$ab,$ac,0 0 0,
1行ずつ下に書き込んでいく感じです。
0837nobodyさん
2006/05/25(木) 13:50:37ID:???配列についての理解ができてない。
0838nobodyさん
NGNG>print "@A";表示すると0 0 0 niなります
お前がそうなるコード
>($aa,$ab,$ac,@A,$dm)= split(/,/, $Al);
を書いてるんだから当たり前じゃん
0839nobodyさん
2006/05/25(木) 13:59:47ID:???0841nobodyさん
2006/05/25(木) 17:04:48ID:???0842nobodyさん
2006/05/25(木) 17:20:48ID:???なぜか誤動作してしまいます
$name = '相川|山本|岡田|下柳';
30名ほどでどの漢字で起こるのかわかりません
全てにエスケープ入れてみてもだめです
どこかに誤動作を起こす文字の記載がありますか?
0843nobodyさん
NGNG山本 = 8e 52 96 7b
7b = {
とか
0844nobodyさん
2006/05/25(木) 17:59:57ID:???「\」以外にも、正規表現内では、「(@$/[]{}」を2バイト目に含む文字も予期せぬ動作を起こす可能性がある。
エスケープするには、これらの前に「\」を入れらければならないので無理。
(2バイト目が「\」の場合は、後ろに入れても結果として同じになる)
一部のものは、正規表現を\Q〜\Eで囲って回避できるが、@などはこれでも無理。
山本 → \x8e\x52\x96\x7b
のように文字コード形式で表すようにするか、EUC-JPに変換してから検査する。
0845nobodyさん
2006/05/25(木) 18:07:27ID:???文字コードを調べてみます
有り難うございます
0847nobodyさん
2006/05/25(木) 23:49:41ID:???じゃあ僕は Encode.pm でも勧めておくか。
面倒に感じるかも知らんけど、この手のソリューションとしては本線ということで。
0848nobodyさん
2006/05/26(金) 03:35:33ID:???> なるほど、変換は私にはムリなので
たとえあなたには無理でも、
それを代わりにやってくれるモジュールがあります。
0849nobodyさん
2006/05/26(金) 03:49:29ID:???アップローダを設置しました
それでアップしたファイルが1週間後には自動で削除するにはどうすればいいでしょうか?
つまりファイルの有効期限の設定です
0850nobodyさん
2006/05/26(金) 03:58:36ID:VJllj5+qで
print '<form method="post" action="' . $reload . '">' . "\n";
の
="' . $reload . '"> の.はなぜ必要なんでしょうか??
0853850
2006/05/26(金) 04:05:03ID:VJllj5+q実行したら動かないし
0854nobodyさん
2006/05/26(金) 04:06:44ID:???有効期限機能のあるアプロダを使う
>>850
別に必要ではないよ。 , (カンマ)でもOKだし他にも方法あり。
' と " の対応に注目すると吉。
0856nobodyさん
2006/05/26(金) 04:32:32ID:???print '<form method="post" action="' . $reload . '">' . "\n";
「<form method="post" action="」という文字列
「$reload」というスカラ変数
「">」という文字列
「\n」という文字列
を結合した結果を print している。
0858850
2006/05/26(金) 05:40:00ID:VJllj5+qありがとうございます
結合っての確か見た記憶があります
0859nobodyさん
2006/05/26(金) 09:18:33ID:???0860nobodyさん
2006/05/26(金) 14:26:31ID:???0861nobodyさん
2006/05/26(金) 15:03:21ID:???0864nobodyさん
2006/05/26(金) 23:55:16ID:???0865nobodyさん
2006/05/27(土) 00:17:15ID:Ea6+r9JBhttp://www6.ocn.ne.jp/~katoyuu/
ニュースの部分を切り出して(<!--テンプレ-->でかこまれているところ)
かつ、リンクとコメントを抽出したいのですが、どのようにすればできるでしょうか?
0866nobodyさん
2006/05/27(土) 00:26:19ID:???0867nobodyさん
2006/05/27(土) 02:16:48ID:???大雑把に。
foreach(split(/\n/, $data)){
push(@news, $_."\n") if (/<!--テンプレ-->/.../<!--テンプレ-->/);
}
それと、一応個人サイトへのリンクは、h抜いて書いて。
0868nobodyさん
2006/05/27(土) 03:19:39ID:???なんで?
0869nobodyさん
2006/05/27(土) 03:46:52ID:???自分のサイトのアクセス解析で2chから大量に来てたら、
ちょっとヒくんじゃね?
0870nobodyさん
2006/05/27(土) 03:50:24ID:???と喜んでました。
で、プロバイダ(ぷらら)に上げたら動きませんでした。
ググって見ると「nifty plala biglobeなどは他サーバへのアクセスができないようになってるので無理」
なる情報を見つけました。
これはあきらめるしかないのでしょうか?
0873nobodyさん
2006/05/27(土) 04:29:51ID:???そうですね。モジュールの調べ方は知らないので明日調べてみます。
plalaのサイトにはPerlのバージョンは5.8と書いてありました。(Perlに関してはそれだけ)
私が自分のWinにインストールしたのはActivePerlの5.8xxxです。
Jcode.pmがデフォで入ってないのにびっくりしました。jcode.plを使ってます。
LWPは、動かなかったのでプロバイダにモジュールがないのかな?
と思いsite/libのLWPディレクトリをUPしてみましたが駄目でした。
LWPとは別にHTTP::Liteなるものもあるようなので明日試してみます。
もし、plalaで(LWP||HTTP::Lite)を(使えてる||使えてない)な人がいらっしゃいましたら
情報くださると助かりますです。
#「push @a, $b」と「push(@a, $b)」はどっちにすべきですか?
0874nobodyさん
2006/05/27(土) 04:49:10ID:???本題とはそれるけど、
5.8なら Jcode.pm っていうか Encode.pm が入ってるから、そっち使えばいいと思うよ。
jcode.pl じゃユニコのデコエンコできないからねえ。
push () は自分で見やすいほうを。
あとniftyは、今はどうか知らないけど、標準モジュールとか何も入ってなかったとオモタ。
0875nobodyさん
2006/05/27(土) 04:49:52ID:???plalaはデフォでJcode入ってるよ。
サーバー間通信がそもそも出来ないように設定してあるのでどうやってもLWPは使えない
それと、普段は前者だが引数が二つ以上なら
push @a, ( $b, $c );
とかやるかも。
0876nobodyさん
2006/05/27(土) 04:58:19ID:???> 自分のサイトのアクセス解析で2chから大量に来てたら、
> ちょっとヒくんじゃね?
そもそもマナーとは何かだよね。
でさ、何で「ヒく」んだろう。
0877nobodyさん
2006/05/27(土) 04:59:20ID:???恐らく、デーモン的な使われ方を阻止する為でしょう。
つまり、セキュリティ上の仕様ではないでしょうか。
pushについては私は前者の方が簡潔で好きですけど、
カッコを付けないと、優先順位の問題が置きやすいので、一長一短です。
Perlのコードは十人十色(TMTOWTDI)なのでお好きにどうぞ。
優先順位の問題は例えば print ($a + $b), " is answer"; と書くと
" is answer" が無視されてしまいます。これを防ぐには
print (($a + $b), " is answer"); のようにカッコをつける必要がります。
または print +($a + $b), " is answer"; のように前に「+」をつけてもいいですけど。
0878nobodyさん
2006/05/27(土) 05:06:49ID:???#!/usr/bin/perl
use File::Find;
print "Content-type: text/html;\n\n";
find(\&wanted, @INC);
sub wanted {
if(/\.pm$/i){print "$File::Find::name<br>\n";}
}
0879nobodyさん
2006/05/27(土) 05:09:04ID:???こちらへどうぞ。
初心者の質問
http://etc3.2ch.net/qa/
0880873
2006/05/27(土) 17:45:38ID:???ありがとうございました。
モジュールの取得も参考になりました。
2chでこんなに丁寧に回答してもらったのは初めてです。
無駄にHTTP::Liteとかも試してみましたが当然だめでした。
あきらめることにします。
0881nobodyさん
2006/05/27(土) 20:52:04ID:/9Ndz8t/で$noname=名無しさんって感じになってるんだけどコレだとクッキー保存されちゃって
次回からはこの名前を一回消して自分のHNに変える必要がある。
だからこの名無しの時だけ次回からは名前欄が空欄とか名無しじゃないときのHNにしておくみたいな事出来る?
説明下手だがこんな事をしたい。
0882nobodyさん
2006/05/27(土) 21:06:43ID:???クッキーの情報を使いたくない時には、そうなるように書けばいいだけ。
0883nobodyさん
2006/05/27(土) 21:15:40ID:/9Ndz8t/0884nobodyさん
2006/05/27(土) 21:27:21ID:???みたいのを用意すれば、if ($name eq "") { $name = $noname; } しても
$in{'name'} に $noname が代入されませんよ、とか。
別に必ず $in{'name'} をそのままクッキーに保存しなきゃいけないわけじゃないし
クッキーから読み出した前回投稿時の名前を仕舞っておく変数ぐらい
あってもいいよね、とか。
方法はいろいろ。
0886nobodyさん
2006/05/28(日) 06:25:30ID:LqLk4cEL$jump_url=~s/(\W)/'%' . unpack('H2',$1)/eg;
という構文の解読の仕方が分からないのですが、この説明をお願いできませんか?
どういうことをしている構文なのでしょうか?
0888nobodyさん
2006/05/28(日) 06:56:06ID:LqLk4cEL朝早くから答えて頂きましてどうもありがとうございました!
教えて頂いたキーワードで只今ググって来ました。
エンコードをしているのは分かるのですが
この構文の流れを説明していただけないかと思いまして。
お願いします!教えてください!
まず分からないのは、
=~s/(\W)/'%' と unpack('H2',$1)/eg の間にある "." なのですが
正規表現の結果を足しているという事なのでしょうか?
何の為に???????(x_x)?
と思って全く発想が浮かびません。。。
ヒントだけでも頂けないでしょうか?
ちなみに、perlの辞書を片手に頑張ってはいるのですが
自分の未熟さに頭が上がりません。。。
よろしくお願いします!!
0889nobodyさん
2006/05/28(日) 08:55:15ID:???s///が正規表現による置換。オプション'e'と'g'。
(\W)
マッチさせる正規表現。
'%' . unpack('H2',$1)
本来置き換える文字列だけど、'e'がついてるから実行する文。
あとは辞書で。
0890nobodyさん
2006/05/28(日) 10:59:02ID:???1,あいうえお,142
2,かきくけこ,127
3,さしすせそ,139
というファイルがある時、この3列目が多い順に行をsortし表示するには
どうすればよいですか?
0891nobodyさん
2006/05/28(日) 11:01:39ID:???この3列目が多い順に行をsortし2列目を表示するには
どうすればよいですか?
でした。よろしくお願いします。
0892nobodyさん
2006/05/28(日) 11:32:27ID:LqLk4cELありがとうございました。
期待していた回答とは違いましたが、この辞書とネットを使いながらいろいろ試してみます。
0894nobodyさん
2006/05/28(日) 11:48:40ID:???open(F, 'file.txt');
while (<F>) {
chomp();
push(@data, [split(/,/)]);
}
close(F);
@data = sort {$b->[2] <=> $a->[2]} @data;
foreach (@data) {
print $_->[1], "\n";
}
0895nobodyさん
2006/05/28(日) 14:52:39ID:???「perl test.pl」で以下のコードを実行したのですがファイルを開けません。
何か書き方が悪いんでしょうか。
test.plの内容:
my @buf, $line;
if(! open(IN, "<file.txt")){
@buf = <IN>;
foreach $line (@buf){
print $line;
}
close(IN);
}
* if( -e "file.txt"){}でチェックしたところファイルは存在していました。
* 環境はWinXPHomeSP2 + ActivePerl v5.8.6 です。
0897895
2006/05/28(日) 15:00:28ID:???0898nobodyさん
2006/05/28(日) 16:20:50ID:LqLk4cELすみません。教えて頂いたその方法でやってみたのですが
何度やってもエラーになってしまいます。何故でしょうか?
0899nobodyさん
2006/05/28(日) 16:32:42ID:???なんてエラーでてるのか書きなよ。
ブラウザで print "Content-type: text/html\n\n"; 忘れてるとかだったらはたかれるよ。
0902nobodyさん
2006/05/28(日) 22:29:52ID:???0903nobodyさん
NGNG0904nobodyさん
2006/05/28(日) 23:07:43ID:???に、10ガバス
0905nobodyさん
2006/05/29(月) 08:12:56ID:???はらたいらに100点並
0906nobodyさん
2006/05/29(月) 09:30:26ID:???0907bc
2006/05/29(月) 14:43:29ID:BOZTb2Dkでラジオボタンって作れるんですか??
HTMLのフォームと違うんですけど
これだとただの表示されるだけじゃないんでしょうか??
0908nobodyさん
2006/05/29(月) 15:03:55ID:???> でラジオボタンって作れるんですか??
作れません。
> これだとただの表示されるだけじゃないんでしょうか??
その通りです。で、何か問題でも?
0909nobodyさん
2006/05/29(月) 15:58:10ID:???ここから○○を抜き出すことはできます
これを数字として扱って比較したいのですが、どうしたらいいですか?
時間や分は「09時05分」などと必ず二桁で保存されています
0910nobodyさん
2006/05/29(月) 16:00:00ID:???0911nobodyさん
2006/05/29(月) 16:04:23ID:???<=> を使え。
「必ず二桁」なら文字列比較でも結果は変わらないはずだけど。
SEE ALSO
perldoc -f sort
0912909
2006/05/29(月) 16:08:04ID:???有り難うございます
0913907
2006/05/29(月) 17:23:20ID:BOZTb2Dkこのサイトのラジオボタンのうけ渡し方で
HTMLのソースと書いてあるんですが
それはHTMLのソースが間違っているということですか??
0914nobodyさん
2006/05/29(月) 17:47:57ID:???0915nobodyさん
2006/05/29(月) 17:48:21ID:???> それはHTMLのソースが間違っているということですか??
いいえ。
そのページの言う HTML ソースというのは
http://www.kumagaya.or.jp/~chichibu/form_rb.html
の「ページのソース」のことだと思います。
だとしたら特に間違ってはいません。
http://www.kumagaya.or.jp/~chichibu/cgi-prog/form_rb.txt
は上記ページのフォームから値を受け取り、結果表示を行うスクリプトのソースです。
ですからそこにラジオボタンを表示するコードが含まれていなくても別段問題ありません。
正直、あなたが何を問題とされているのか良く分かりません。失礼ですが基礎的な理解が不足しているように見受けられます。
このまま質問を続けられると、あなた宛にあまりフレンドリーでないレスが殺到する可能性があり、それは我々としては大変迷惑なので、WWW、HTML 等の基礎を学んでから出直されることをお勧めします。
0916nobodyさん
2006/05/29(月) 17:49:47ID:???0918nobodyさん
2006/05/29(月) 20:12:07ID:???0919nobodyさん
2006/05/29(月) 20:31:40ID:???君の質問の仕方が下手なのと、>>915さんって親切だなって思った。
そして、その参考にしてるサイトは駄目駄目なので他所を探すことをおすすめします。
サンプル動かして、表示されたページが文字化け万歳とか哀しかったです orz
0920907
2006/05/30(火) 00:06:24ID:B/4ya/Hvすげー勘違いしてました
>>919
でもサンプルが詳しいサイトはあんまりないんですよ
探したんですが
0921nobodyさん
2006/05/30(火) 00:18:38ID:D128RUeT>890さんじゃないけど
file.txt
1,あいうえお,0-1-8
2,かきくけこ,1-3-2
3,さしすせそ,1-9-4
この3列目の ○-△-□ の △ の数が多い順に行をsortして、その行の2列目を表示するための方法を教えてください
0922nobodyさん
2006/05/30(火) 00:29:16ID:???open(F, 'file.txt');
while (<F>) {
chomp();
($num, $name, $value) = split(/,/);
$value = (split(/-/, $value))[1];
push(@data, {name => $name, value => $value});
}
close(F);
@data = sort {$b->{value} <=> $a->{value}} @data;
foreach (@data) {
print $_->{name}, "\n";
}
0923nobodyさん
2006/05/30(火) 01:11:36ID:D128RUeT>922さん
ありがとうございます
早速試してみます
0924nobodyさん
2006/05/30(火) 01:20:49ID:D128RUeT質問してもいいですか
6行目の push(@data, {name => $name, value => $value}); の部分なのですが
右から2番目の value は $value じゃなくても良いのですよね?
他にも{}の中にあるもので $ が付いていない箇所があるのですがこれで正しいのですよね!
わたしには初めてで読めなかったので、参考に6行目の説明をお願いできませんかm(*u_u)m
0925nobodyさん
2006/05/30(火) 01:32:02ID:D128RUeT今アップしてみたのですが正しく表示できました!
出来たものの、>922さんが書かれた文の意味は分かりません。。。
どうか教えてもらえませんか?
0926nobodyさん
2006/05/30(火) 01:33:17ID:???ええと、ハッシュは知ってるかな。
%hoge = ("name" => $name, "value" => $value);
みたいなやつね。
このキーの部分のダブルクオーテーションは、省略できることになってる。
%hoge = (name => $name, value => $value);
みたいにね。
で、右辺を()でなくて{}で囲うと、ハッシュのリファレンスになる。
リファレンスが分からなかったら、ネットか書籍で調べて。
それが6行目の{name => $name, value => $value}
ハッシュはスカラーなので、
$hoge = {"name" => $name, "value" => $value};
と代入できる。
この$nameを取り出すのが、$hoge->{"name"}なんだけど、
このダブルクオーテーションも省略できるので、9行目の
$a->{value}みたいな書き方になる。
詳しくは、「ハッシュ リファレンス」でググってね。
0927nobodyさん
2006/05/30(火) 01:37:27ID:???0928nobodyさん
2006/05/30(火) 01:41:26ID:D128RUeTわぁ♪ありがとうございます!早速ググってきますっ
0930nobodyさん
2006/05/30(火) 04:36:25ID:???正直 CSV ソートの質問は秋田(;´Д`)
0931nobodyさん
2006/05/30(火) 05:26:45ID:D128RUeTsyntax error at ./sub.cgi line 67, at EOF
./sub.cgi had compilation errors.
というエラー文が出ているのは、どんな意味なのでしょうか?
0932nobodyさん
2006/05/30(火) 06:07:15ID:???「EOFまで行っても } が足りないですよ。はい、コンパイルエラー」
閉じ忘れたカッコを頑張って探してください。
エラーメッセージの意味がわかんないと毎回同じように困るわけで、
Excite翻訳を利用したりして、慣れるようにしてください。
>>930
随分前(テンプレが桂三枝で始まってた頃)に、FAQ・いい回答を
載せるCGIを提供してくれた人がいたような…どうなったか覚えてないんだけどね。
0933nobodyさん
2006/05/30(火) 06:53:05ID:D128RUeTありがとうございました!地道に探してたら括弧をエスケープしているのに気が付きました。
それでまたエラーが出てきたので、Exite翻訳を利用して解決しようとしたところ
[baby.html:?:warn] Malformed UTF-8 character (2 bytes, need 1) in array dereference.
というエラーなのですが
[baby.html:、:、警告、]、アレイ反参照の奇形のUTF-8キャラクタ(2バイト、必要性1)。
という結果になって意味が分かりません(P口`q。)".
これはどういう意味なのでしょうか?
0934nobodyさん
2006/05/30(火) 07:01:17ID:D128RUeTログにあるデータを数ページ分吐き出すようにしているのですが
一部のページのみにこのエラー文出てしまいます。
サーバのスペックが低いからでしょうか。。。?
0935nobodyさん
2006/05/30(火) 08:49:24ID:???恐らくログにWindowsの外字とか、UTF-8で扱えない文字が入っているはず。
根本的解決には本人にそれなりの知識とそれなりの技術が必要。
文字コードがらみの処理はややこしいので、改造レベルの人はあきらめるのが吉。
# というかデフォでwarning入ってんのか?
0936nobodyさん
2006/05/30(火) 09:39:52ID:???その行晒せや。
0937nobodyさん
2006/05/30(火) 11:01:23ID:???ログの何行目というエラーの出方ではないので「その行晒せ」は無理だろう。
(質問者に、そこを調べて提出せよというのは難しそう)
0938nobodyさん
2006/05/30(火) 12:28:11ID:RehvEaNHとエラーになりファイルオープンできません。権限で怒られているのはなんとなく分かるのですが
対処法を教えてください。よろしくお願いします。
※aaaaa.txtというファイルは存在しません。
※cgiファイルのパーミッションは777です。
1 open(OUT, '>aaaaa.txt') or die "$!";
2 print OUT "abcde";
3 close(OUT);
0939nobodyさん
2006/05/30(火) 12:34:02ID:???0940938
2006/05/30(火) 12:38:16ID:???影響の無いディレクトリではオープンできました。
お騒がせしました。
0941nobodyさん
2006/05/30(火) 21:18:16ID:???それじゃああんま面白くないし、2〜3行に渡ってやってみたいんだけど、そういうのってなんかある?
なんか知ってたり面白いの思いついたら教えてください。(´▽`)ノ
0942nobodyさん
2006/05/30(火) 21:27:57ID:???0943nobodyさん
2006/05/30(火) 21:48:36ID:???0944nobodyさん
2006/05/30(火) 21:56:09ID:???print 'Hello World !!';
はいいけど、
print <<__EOT__;
Hello World !!
__EOT__
とか、なんか味気ないし1行じゃ意味ない感じでさあ。
0945nobodyさん
2006/05/30(火) 22:20:42ID:???>>943みたいなのとか、環境変数を全部吐くのとか、
「とりあえず動くことの確認」みたいなサンプルだったら、そういうのでいいのでは?
「いや、そうじゃなくて、こう、なんていうか、アレだよアレ」な場合(?)は
「エラストテネスのふるい」でぐぐるなり何なり。
0946nobodyさん
2006/05/31(水) 01:06:18ID:8kzUocWY昨日の質問の続きなんですけど、ずっとわたしひとりで考えても分からなかったので教えてください(P口`q。)".
昨日聞いたものをsub readとして、下のどこかで&readしてHTMLに表示させたいんですけどどうしてもできません・゚・(PД`q)・゚
sub print{
local($jump_url);
if($EST{rank_fl}){
$jump_url=$Slog[2];
$jump_url=~s/(\W)/'%' . unpack('H2',$1)/eg;
$jump_url="$EST{cgi_path_url}$EST{rank}?mode=link&id=$Slog[0]&url=$jump_url";
}
else{$jump_url=$Slog[2];}
print<<"<!--HTML-->";
<!-- ログ\表\示 -->
<hr size=1 color=black>
<strong>[IN $in_pt][OUT $out_pt]</strong><br>
<a href="$jump_url"><b>$Slog[1]</b></a>
<br>
<!--HTML-->
print<<"<!--HTML-->";
$Slog[6]<br>
<!--HTML-->
}
foreach $line(@log_lines){
@Slog=split(/<>/,$line);
&print;
}
訪問ランキングスクリプトです。意味が分からなかったらファイルをお渡しします。 よろしくお願いしますm(*u_u)m
0947nobodyさん
2006/05/31(水) 01:19:05ID:???「@log_lines」 がファイルの中身なら、
「foreach $line (@log_lines) {」
の前で 「&read」 ?でソートさせにいけばいいんじゃない?
それでもできないなら、上で答えてくれたソースをその 「&read」 でどう改造して使ってるかによるな。
0948nobodyさん
2006/05/31(水) 01:21:31ID:8kzUocWYsub read の中で、file.txt というファイルを読み込んで
1,あいうえお,0-1-8
2,かきくけこ,1-3-2
3,さしすせそ,1-9-4
この3列目の ○-△-□ の △ の数が多い順に行をsortして、
その行の2列目を@log_lines に格納する準備をしておいて
その後のsub print の中で@log_lines を利用してHTMLに吐き出すという事がしたいのですが
見ての通りsub print はテンプレート化したもので、sub read はcgiファイルなので別々のものを
うまく組み合わせるのに困っています(u_`u。)
sub read はlocal関数を使って、後々問題にならないようにしてみたりしたのですが
実際に起動させて見るとどれもうまくいきませんでした。....ρ(。 。、 )
ちからを貸していただけませんか?(*u_u)☆
0949nobodyさん
2006/05/31(水) 01:43:02ID:8kzUocWYお返事ありがとうございます゚+.(・∀・)゚+.゚+.゚
いろいろ試してみてたのでめちゃくちゃになってるんですが貼ってみます。
sub read{
$file="file.txt";
@log_lines=(); #表示データリスト
%Clog=(); #各カテゴリの登録数
local(@temp_lines,%temp_ref,$line,@kt,$kt,@Slog,$st_no,$end_no,$i=0,$j=0,@data,$IN_count);
$end_no=$EST{hyouji}*$LC_page -1;
$st_no=$end_no - $EST{hyouji} +1;
open(IN,"$file");
while($line=<IN>){
chomp();
@Slog=split(/<>/,$line);## $Slog[13] = 0_0_0_0, $Slog[2] = URL
@IN_count=(split(/_/,$Slog[13]))[2];
push(@data,{url => $Slog[2], IN_count => $IN_count});
$Clog++;
}
close(IN);
@data = sort{$b -> {IN_count} <=> $a ->{IN_count}} @data;
#foreach $kt(@kt){
#if($LC_kt eq $kt){
#$temp_ref{$Slog[0]}=$i;
#push(@temp_lines,$line);
#$i++;
#}
#$Clog{$kt}++;
#}
close(IN);
0950nobodyさん
2006/05/31(水) 01:44:30ID:8kzUocWY#foreach $line(sort{$b <=> $a}(keys %temp_ref)){
foreach(@data){
if($st_no<=$j && $j<=$end_no){
#push(@log_lines,$temp_lines[$temp_ref{$line}]);
push(@log_lines,$data[$j]});
}
$j++;
#}
#undef(@temp_lines); undef(%temp_ref);
}
お兄ちゃんみたいで頼りにしてます(ο^v^ο)
よろしくお願いしますo(*u_u)o
0951nobodyさん
2006/05/31(水) 01:48:45ID:???0952nobodyさん
2006/05/31(水) 02:05:27ID:8kzUocWYまとめてうpしるって、まとめてアップしろってことですか?
良く分からなくてすみません!(>_<)
0953nobodyさん
2006/05/31(水) 02:09:40ID:???ここが理解できないのはうちだけ?
テンプレート化って何 テンプレート化って。
どういう流れなのかいまいちわからないなあw
0954nobodyさん
2006/05/31(水) 02:20:28ID:8kzUocWYアップローダーを見つけてアップしてきました。
http://tool-ya.ddo.jp/webfs/~enigma
の中にあります。コメントによろしくお願いしますと書いてます
0955nobodyさん
2006/05/31(水) 02:22:01ID:8kzUocWYsub print の方は、HTMLファイルになってるんです。
sub read の方は、CGIファイルです!
0956nobodyさん
2006/05/31(水) 02:28:01ID:8kzUocWYのDLパスは1234です!
0957nobodyさん
2006/05/31(水) 02:48:53ID:???>>955 は拡張子はHTMLファイルだけど、require できる普通のperl形式だったね。
かなりルーズに書いてるから、別ファイルだから受け渡しできない〜、とかそういうことはないと思うぞ。
件とは関係ないかもだけど 178行目
push(@log_lines,$data[$j]});
なってエラーでる。
push(@log_lines,$data[$j]);
こうじゃね。
しかもこれ直してもまだカッコ閉じられてない風なエラーでて しかもどこだかわからないw
動くファイルあげてw
0958nobodyさん
2006/05/31(水) 02:51:27ID:???181行目
#}
↓
}
もっとがんがれー ( ´Д`)
0959nobodyさん
2006/05/31(水) 03:02:45ID:8kzUocWY落として見てくれたんですね(*^_^*)♪
ありがとうございます!
なんでそんなに早く分かるんですか!?
しかも、書いてもらってるのに
>件とは関係ないかもだけど 178行目
>push(@log_lines,$data[$j]});
>なってエラーでる。
>push(@log_lines,$data[$j]);
の2行目と4行目の区別がわかりません。....ρ(。 。、 ) 全く同じに見えます。。。
でもほんとにほんとに、なんで見ただけですぐ分かっちゃうんですか??!!
0960nobodyさん
2006/05/31(水) 03:07:08ID:8kzUocWYわかっちゃいましたぁ☆
} が付いてたのが余計だったんですね!
ホントに何でそんなに早く分かるんですか???
0961nobodyさん
2006/05/31(水) 03:27:09ID:8kzUocWYできましたぁ〜☆+゚ヽ(^◇^◎)/
って言ってもエラーが取れただけでランキングは、正しく表示されていませんでした^^;
ファイルの中身を読んで、昨日言われたとおりに書いたつもりなんですけど
CGIの方のファイルを見てると、該当するカテ用のログを読んで、
その中のデータを「IN」が多い順にソートして、それから
1ページ分に表示させる分だけ@log_lines に入れてますよね? 解釈も記述も合ってますよね?^^;
HTMLの方では、@log_lines から <> を除いて@Slog に入れてから&print をしてますよね?
そこでは、1ページ分だけのデータが入ってる@Slog のURL部分をいじっておしまいなのに
画面で確認すると、INの降順じゃないんです。。。
しかも、@Slogを直接表示させるとやっぱりINの降順にそーとされてないデータが出てくるんです。 ( ´Д`)なんでー
0962nobodyさん
2006/05/31(水) 03:37:25ID:???エラーはエラー文に行数でてればすぐわかるんだけどw
っていうかスクリプトはルートわからんかぎり見当つかないな。確かめられないのでなんとも。
@log_lines より先に、ソートする open_in_new (?) を呼べばいいとしか答えられないや。
>>948で言ってた sub print が sub PRlog に当たってるんだろうか?
その中で local(@log_lines); こうやってるけど、これはいいんだっけ? 消したほうが・・・。
・・・
あー、もしかして、
@IN_count=(split(/_/,$Slog[13]))[2];
↓
$IN_count=(split(/_/,$Slog[13]))[2];
こうじゃね?w
0963nobodyさん
2006/05/31(水) 03:42:39ID:???0964nobodyさん
2006/05/31(水) 03:51:05ID:8kzUocWY誉めるっていうより、絶賛ですょ〜w(*・o・*)w オォォ
最近PC買ったんでついつい面白くていろんなことやり出したら止まらなくて^^;
けど掲示板って思ったより時間が掛かるから、すぐ聞けてわたしもすぐ答えられるようなものあったらいいのになぁ♪
>@log_lines より先に、ソートする open_in_new(?) を呼べばいいとしか答えられないや。
早速実践してみます!
>sub print が sub PRlog に当たってるんだろうか?
そうです^^
>local(@log_lines); こうやってるけど、これはいいんだっけ? 消したほうが・・・。
消しましたぁ☆
>@IN_count=(split(/_/,$Slog[13]))[2];
>↓
>$IN_count=(split(/_/,$Slog[13]))[2];
>こうじゃね?w
やってみましたが、結果は同じでした。。。(。_。*)
プログラムって難しいですねぇ^^;
先生に少し習ったくらいだから、わたし全然だめですよne...
0965nobodyさん
2006/05/31(水) 03:52:24ID:8kzUocWYこんばんゎぁぁ 猫(゚ロ゚L)
遅くまで起きてるんですねぇ^^♪
0966nobodyさん
2006/05/31(水) 03:55:14ID:???0967nobodyさん
2006/05/31(水) 03:58:55ID:8kzUocWY今書いたスクリプト見て
>@log_lines より先に、ソートする open_in_new(?) を呼べばいいとしか答えられないや。
のところをやろうとしたら、
#&open_in_new;
foreach $line(@log_lines){
@Slog=split(/<>/,$line);
&PRlog;
}
って、なってました^^; なるわけ無いですよね。。。
そこで、# を外してみたら。。。!!!
。。。やっぱり正確に表示されませんでしたToT
それどころか、登録してある部分が消えてました(оД〇;)マヂ?!
open_in_new の方で、ちゃんとlocal を使ったりしてないのがまずかったんですかねぇ。。。??
0968nobodyさん
2006/05/31(水) 04:01:21ID:???0969nobodyさん
2006/05/31(水) 04:07:43ID:???orz
でも一度答えると責任ってのが発生してなかなか逃れられない罠。
>>964
いや、変わらないのはありえないなw
元が、157行目の、
@Slog=split(/<>/,$line);## $Slog[13] = 0_0_0_0, $Slog[2] = URL
@IN_count=(split(/_/,$Slog[13]))[2];
push(@data,{url => $Slog[2], IN_count => $IN_count});
だったので、 $IN_count は未定義で、IN_count => $IN_count には undef が設定されてたので、いままでソートがされていなかったはず。
それが、
$IN_count=(split(/_/,$Slog[13]))[2];
に直すことで $IN_count は定義されて、ソートができるようになったはず。
>>961 でソートされてない、っていってたけど、まだされてない?
もしソートできてないなら、 $IN_count の値が怪しいなw
本当に (split(/_/,$Slog[13]))[2]; で正しいのか確認してみて。
print $IN_count, $Slog[13], "\n"; とかやるなりして。
$array[2] は 「123-456-789」 でいえば 456 じゃなくて 789 だぞ?
0970nobodyさん
2006/05/31(水) 04:09:58ID:???0971nobodyさん
NGNG0972nobodyさん
2006/05/31(水) 04:11:20ID:???0973nobodyさん
2006/05/31(水) 04:13:14ID:???ニヤニヤしながら生温かい目で見守ることにする。
>>971
なんだか急に「お客さん」向けのスレに変わったなぁとは思う。
0974nobodyさん
2006/05/31(水) 04:18:09ID:???改造は改造スレでどぞ。
と、自治厨ぶるつもりはなく、むしろ「親切な人も居るんだなぁ」とROMってたんけどな。
この調子で続けられると荒れそうな気がしないでもなく。
で、他のROMは落としたスクリプトの著作権のとこ見てニヤニヤしてるんだろ?な?w
0975nobodyさん
2006/05/31(水) 04:21:37ID:8kzUocWY迷惑ですよね。。すみません。
遅くまで付き合っていただいてありがとうございました!
とても親切な方でしたので、つい調子に乗ってしまいました。
ごめんなさいm(__)m
0976nobodyさん
2006/05/31(水) 04:22:33ID:???0977nobodyさん
2006/05/31(水) 04:23:09ID:???あと、178行目
push(@log_lines,$data[$j]);
↓
push(@log_lines,$data[$j]->{url});
で、
print $_->{url}, "<hr>\n"; html 165行目
↓
print $_, "<hr>\n";
にした方がいいような気がする。
0978976
2006/05/31(水) 04:26:11ID:???生IPもISP串もこうなったので、ほかの方お願いします...orz
0979nobodyさん
2006/05/31(水) 04:29:58ID:???よろ〜
>>975
いや、迷惑っていうか、なんていうか。
まぁ、動かして確認できるようにファイル一式同梱でもしてくれたら1レスで済んだんだけどね。
プログラムは、、、ほんと勉強するとしないとで雲泥の差だねw
勉強しないでやるとkentくらいで終わる気がする。
まぁがんばってちょ。
>>978
最近建てられたことないけどやってみるーw
0980nobodyさん
2006/05/31(水) 04:34:00ID:???まぁ、なんだ、著作権とかうるさく言う方じゃないけど、
ttp://yomi.pekori.to/yomi-search.shtml
の作者にも謝っとけ。
しかし、変なやつが1人でも居たら即効で晒されてただろうに
このスレは本当に生温かいw
>>979
よろ
0981nobodyさん
2006/05/31(水) 04:34:44ID:???Perlコーディング初心者質問スレ Part 49
http://pc8.2ch.net/test/read.cgi/php/1149017548/
テンプレ貼り終わるまで待ってt
0982976
2006/05/31(水) 04:39:05ID:???乙。IPレンジかぶってなくてよかった。
連投規制値知らないので(全部貼ってもだいじょぶ?)、無駄な投稿をここに投げてみる。
0983976
2006/05/31(水) 04:45:01ID:???0984nobodyさん
2006/05/31(水) 04:45:05ID:???もしかして過去ログって省略して倉庫だけでよかった?(;´Д`)
誰か後2個だけよろしく orz
0989nobodyさん
NGNG二度と来んな
0991nobodyさん
2006/05/31(水) 05:38:29ID:???0992nobodyさん
2006/05/31(水) 06:06:41ID:???Content-Type: application/x-www-form-urlencodedで送らなければいけない場合に文字化けが発生します
具体的には日本語と書いてエスケープして渡した値が??{??になったりするものです
$str =~ s/([^\w ])/'%' . unpack('H2', $1)/eg;
$str=~ tr/ /+/;
ではだめなのでしょうか?
0993nobodyさん
NGNG0994nobodyさん
2006/05/31(水) 06:10:37ID:???文字コードはどれかに決め打ちされてるの?
どっかでEncode.pmなり何なりを使わなきゃいけない仕組みになってない?
0995nobodyさん
2006/05/31(水) 06:14:14ID:???いま、POST先のページを見てきたら charset=euc-jpとなっていました。プログラム側の文字コードは決めてないです。
POST先のページがeuc-jpだとEncode.pmを使わなければいけないのでしょうか?
0996nobodyさん
2006/05/31(水) 06:20:16ID:???「日本語」が
・%C6%FC%CB%DC%B8%EC
・%93%FA%96%7B%8C%EA
・%E6%97%A5%E6%9C%AC%E8%AA%9E
どれになってるのかも、そこからどうしたいのかもわからんので何とも言えません。
0997nobodyさん
2006/05/31(水) 06:23:03ID:???%93%fa%96%7b%8c%eaとなっています。情報が小出しですいませんでした。どの情報を書けばいいのかすらわからなかったもので…
0998nobodyさん
2006/05/31(水) 06:27:29ID:???どこまで小出しが続くのかもわからんので、
それ(>>996の2つめ)はShift_JISですよー、とだけ言い残して落ちよう。
がんばれ。
0999nobodyさん
NGNG1000nobodyさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。