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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん04/08/22 01:41ID:???
Perlのコーディングで困ってる人のスレです。
誰もが最初は初心者。
だからって、初心者に甘んじた質問の仕方は意味がないよ。

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

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

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

過去ログやお勧めサイトは >>2-10
0002104/08/22 01:43ID:???
前スレ989さん、ありがとう!

関連スレ
【Perl上級者コーナーPart01】
http://pc2.2ch.net/test/read.cgi/php/1024741312/
CGI: Common Gateway Interface part 11
http://pc2.2ch.net/test/read.cgi/php/1055597189/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
★三 【 スクリプト改造工房 PART 8 】 ★三
http://pc2.2ch.net/test/read.cgi/php/1077525387/
【 スクリプト改造依頼スレ 】(丸投げ) part2
http://pc5.2ch.net/test/read.cgi/php/1092304968/
△▲ WebProg 初心者の質問 Part9 ▼▽
http://pc5.2ch.net/test/read.cgi/php/1086715675/
【Perl】ファイルロック(排他処理)について語ろう
http://pc2.2ch.net/test/read.cgi/php/1024795138/
★負荷軽減対策委員会(Perl、PHP)★
http://pc2.2ch.net/test/read.cgi/php/1034645635/
【Perl】掲示板を使ろう!
http://pc2.2ch.net/test/read.cgi/php/988890976/
Perlモジュールについて
http://pc2.2ch.net/test/read.cgi/php/997829243/
CGIに依存しないPerlの話題一般/Part2
http://pc2.2ch.net/test/read.cgi/php/1030548610/
0003104/08/22 01:43ID:???
[過去ログ] 1 of 2

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
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
0004104/08/22 01:44ID:???
[過去ログ] 2 of 2

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と誤記)
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/
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/(前スレ)
0005104/08/22 01:45ID:???
ム板Perlスレより

[プログラミング自体の経験が無い奴はまずココを読め]
Perlプログラミング講座: http://www5a.biglobe.ne.jp/~n_rieko/perl/

[本]
リャマ: http://www.oreilly.co.jp/BOOK/lperl3/
駱駝: http://www.oreilly.co.jp/BOOK/pperl3v1/
Effective Perl: http://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html
クックブック: http://www.oreilly.co.jp/BOOK/pcook/

[オンラインマニュアル]
Perldoc.com: http://www.perldoc.com/
perldoc.jp: http://www.perldoc.jp/
perl5.005_03 のドキュメント: http://www.kt.rim.or.jp/%7ekbk/perl5.005/

[モジュール]
CPAN.com: http://search.cpan.org/
河馬屋二千年堂: http://member.nifty.ne.jp/hippo2000/

[テクニック]
Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: http://homepage1.nifty.com/nomenclator/perl/

0006104/08/22 01:45ID:???
補足

コーディング 【coding】

プログラミング言語を使ってソフトウェアの設計図にあたるソースコードを作成すること。
「プログラミング」とほぼ同義だが、仕様書やフローチャートなど抽象的な設計文書の内容を、
プログラミング言語を使って具体的なコードに変換していく、という意味合いが強い。
(e-Wordsより)

自分の質問がPerlに関することなのか、
それともPerlではなくCGIやHTMLについてなのかを切り分けした上で、
質問して下さい。
0007104/08/22 01:47ID:???
これは漏れの考えではあるけれど、
http://www.geocities.co.jp/SiliconValley/5656/
とか
http://www.hyuki.com/writing/techask.html
なんかを参考にするといい。

ここでは匿名で書き込むことが出来るけど、
その他のマナーなんかの点は実名公開のMLなんかと一緒。

マターリ行きましょ。
0008nobodyさん04/08/22 01:51ID:???
>>1
氏ねよマヌケ野郎が!
テンプレはてめーの日記じゃねーぞ!
0009nobodyさん04/08/22 02:06ID:???
このスレは糞が勝手に>>1を書き換えたので次スレを立てる時は注意してください。


いらっしゃーい、Perlのコーディングで困ってる人のスレです。

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

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

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

過去ログやお勧めサイトは >>2-10
0010前スレ989ですが04/08/22 02:09ID:???
すいません、前スレの 5 もお願いできますか?
さっきから貼ろうとしてるんだけど Time out が出るばかりで貼れないんです...orz
0011nobodyさん04/08/22 02:21ID:???
テンプレも満足に貼れないやつが立てちまったか・・・
グダグダなスレになっちまったな。
0012nobodyさん04/08/22 03:05ID:???
[ひまぢん氏のミラー]
Part1 http://www.angelfire.com/ak5/2ch-web-program/kako/957208980.html
Part2 http://www.angelfire.com/ak5/2ch-web-program/kako/971817087.html
Part3 http://www.angelfire.com/ak5/2ch-web-program/kako/979894521.html
Part4 http://www.angelfire.com/ak5/2ch-web-program/kako/984430156.html
Part5 http://www.angelfire.com/ak5/2ch-web-program/kako/988728069.html
0013nobodyさん04/08/22 03:05ID:???
「漏れ」って何?
0014nobodyさん04/08/22 03:06ID:???
[総合]
 ・http://www.excite.co.jp/world/ # 英文のページ多いから一応
 ・Perl Com: http://www.perl.com/
 ・CPAN.com: http://search.cpan.org/
 ・ActivePerl: http://www.activestate.com/
 ・CGI-ML:http://forest.ne.jp/cgi-ml/

[お薦め]
 ・Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm ★読んどけ
 ・Perl Recipes: http://www.effectiveperl.com/recipes/ # 死んでるか?
 ・Randal's WebTechniques columns: http://www.stonehenge.com/merlyn/WebTechniques/
 ・Perlの部屋: http://www.cc.rim.or.jp/~midorin/mad-p/perl/index.html
 ・Perl初心者の部屋:http://www.harukaze.net/~mishima/perl/
 ・Perlリファレンス:http://www.big.or.jp/~mio/ga/pl/plref/pl_ref.htm
 ・Perlのページ:http://homepage1.nifty.com/nomenclator/perl/
0015nobodyさん04/08/22 08:46ID:???
漏れって漏れのことさ 厨はカエレー
001696604/08/22 13:14ID:???
前スレの996だけどとりあえずブロックの返り血ってのは最後の行で。
ブロックないではreturnは使えないからそれようのルーチンでも作る。

ってことでok?
0017nobodyさん04/08/22 13:27ID:???
>>16
ブロックはifと同じだよ。
0018nobodyさん04/08/22 14:02ID:???
>>16
> 前スレの996だけどとりあえずブロックの返り血ってのは最後の行で。
わかってるだろうけど、最後に実行した行。
で、おk
0019104/08/22 14:11ID:???
正直、すまんかった。

################
#ここから言い訳#
################
#いや、5の張り忘れに気づいて張ろうと思ったら
#連続投稿規制に引っかかっちゃったのよ。ゴメソ
#
#たださ、聞きたいんだけど>>1って書き換えちゃいけないもんなの?
#過去にも何度か変わってきてるから、概要があってりゃいいと思ったんだけど。
#無意味な中傷はキニシ(・∀・)ナーイ
0020nobodyさん04/08/22 14:51ID:???
>>19
内容に納得いかないとスレ乱立になるときがある。
だから書き変えるときは前スレでちゃんと同意をとれ。

とりあえずスレ立てご苦労様。
0021nobodyさん04/08/22 14:52ID:???
>>19
> 誰もが最初は初心者。
こんなこと書くなよタコ。
「誰もが最初は初心者」=「回答者は質問者に尽くすべし」っていう脳内変換が起きるんだから。
次の行で何か書いてるけど意味ねぇよ。一度↑こうなったら何を言っても無駄。
0022nobodyさん04/08/22 15:10ID:???
>>21
>>1を弁護するわけじゃないが、そういう脳内変換する奴はそもそも>>1を読まないので影響ない。
書く必要性は全くないが。
00231004/08/22 15:40ID:???
何はさておき
Perl コーディング初心者質問コーナー Part37
http://pc5.2ch.net/test/read.cgi/php/1093134840/
↑これ立てて 2 で挫折した人は早急に削除依頼へゴー。

>>19
とりあえずスレ立て乙。自分は立てられなかったし。

テンプレ部の改定は当然可だけど、他の人の意見もあるからね。
Part35→36のときは
「改定点は?」「スレ違いのお客さんが多いよね」みたいな話があったうえで
>>6の補足が入ったから、もめたりしなかったわけですよ。

個人的には >>1 は構わないけど >>2 を見たときに「お礼はうれしいけど、そこに書いたらあかん!」と
思ったのと、あと >>7 が余分かな。

# 初心者さんは見に行かないし、回答者はURL見ただけで「あー、はいはい」だからね。

とりあえず、この状況が続くと質問者さんが来づらいだろから、事態の収拾を考えましょ。
0024104/08/22 16:01ID:???
>>20-23
やっぱり、このスレの人たちは教えるのに向いてるよ。色々ありがとう。

こんな状態でアレなんだけど、2つ目の中途半端なスレの方が上にあると、
どうしようもないだろうから一応ageとくことにする。
0025nobodyさん04/08/22 16:09ID:???
age
0026nobodyさん04/08/22 16:28ID:???
Perlについての質問箱 11箱目
http://pc5.2ch.net/test/read.cgi/tech/1090889189/641-

Perlにバグがあったみたい..
0027nobodyさん04/08/22 18:53ID:???
誰かネタ投下しる。新スレになっていきなり勢いが落ちたな。
0028nobodyさん04/08/22 20:18ID:Bvv0gWWG
foo(@x, @y) で、
sub foo 内で @x と @y を別に受け取ることはできますか?
@_ だと結合されているので・・・
0029nobodyさん04/08/22 20:36ID:???
>>28
そのままじゃ無理。リファレンス使え。
00302804/08/22 20:39ID:Bvv0gWWG
あ、無理ですか。
素直にリファレンスを使います。
どうも。
0031nobodyさん04/08/22 22:09ID:???
ここが本スレですよってことでOK?

もひとつの Part37 を立てた人がほったらかしてるっぽいんで、
こちらへの誘導貼り付け&削除依頼して来ようかと思うんだけど、
皆さんのご意見は?
0032nobodyさん04/08/22 22:11ID:???
>>31
OK
0033nobodyさん04/08/22 22:29ID:???
>>29
それじゃせっかくの餌も台無し。
プロトタイプ使えとか言えよ。
0034nobodyさん04/08/22 22:52ID:???
>>31
あっちの1だけどよろしく。
テンプレミスッタんで放置してた。
じゃそういうことで
0035nobodyさん04/08/22 23:06ID:???
>>34
氏ねよ!
003623=3104/08/22 23:07ID:???
>>32
レスThx.
ともあれ仕事のほうはやっつけてきますた。


そろそろ回答者もヒマしてるはずなので、
次の質問者さん、どうぞー。
0037nobodyさん04/08/23 13:11ID:???
>>28
perldoc perlsub

sub foo(\@\@) {
my ($x, $y) = @_;
print "x: @$x\n";
print "y: @$y\n";
}

foo(@x, @y);

便乗質問
リファレンスの場合は、sub foo($$); で宣言して、foo([1..10], [1..10]) みたいに直接値を渡せるけど。
sub foo(\@\@); の場合って、配列変数に値を入れてからじゃないと無理?
0038nobodyさん04/08/23 13:22ID:???
そんなイレギュラーな使い方をするところにプロトタイプなんか使わん。
0039nobodyさん04/08/23 15:01ID:???
>>37
>>28 に「perldoc perlsub」とか書いておいて自分は読まないのか?

<q cite="http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlsub.html#Prototypes">
バックスラッシュが付けられたプロトタイプキャラクターは、実引数がその
キャラクターで始まるものでなければならないことを表します。
<snip>
$で表される引数はスカラーコンテキストを強制されます。
</q>

sub mypush(\@$) { push @{ shift @_ }, @_ }

my $array = [0..3];
my @array = (6..9);
my $rv = mypush @{$array}, @array;
print join ',', @{$array}, "$rv\n"; # 0,1,2,3,4,5
0040nobodyさん04/08/23 23:46ID:73HB43dm
Can't declare constant item in "my" at index.cgi line 191, near ");"
index.cgi had compilation errors.
こんなのがでます。なにが悪いんですか?
0041nobodyさん04/08/24 00:09ID:???
>>40
デクレアできないぞボケェ!
ってPerlが叫んでるw
0042nobodyさん04/08/24 00:28ID:???
>>41
悔しいけど、ちょとワロタ。でも、もすこしサービスしなさいな。

>>40
これだけではなにが悪いのかわかりませんよ。
index.cgiの191行めに

my (1, 2, 3);

↑例えばこんな行がありそうな気はするけれど。
0043nobodyさん04/08/24 01:21ID:???
>>42
俺もにやけてしまったよw
00444004/08/24 01:36ID:a9PEnejB
解決しますた
0045nobodyさん04/08/24 03:09ID:???
>>40
ここは質問と回答で成り立つスレです。
後から同じ状況に陥った人が参考にできるように
何をどうしたら解決したのか、
原因は何だったのか、
かわいい妹がいるのかどうか、
そういった事をきちんと書きなさい。
0046nobodyさん04/08/24 12:22ID:???
0047nobodyさん04/08/24 13:17ID:???
>>40
はやくかけよ、
まってんだから。
0048nobodyさん04/08/24 15:10ID:???
>>47
どうでもいいだろ
どうせアフォなミスだって
0049nobodyさん04/08/24 18:35ID:nkf/AOE6
おまいらメールのSubjectに日本語使う時にMINEエンコードするのってなにでやってる?
mime_pls?モジュール?自作?

自作ってカッコイイよな。
0050nobodyさん04/08/24 19:10ID:???
MINEってカッコワルイよな。
0051nobodyさん04/08/24 19:13ID:???
>>49
また知ったか厨か・・・
0052nobodyさん04/08/24 19:18ID:???
>>51
お前のPCで
「ちゅう」
って打って変換したら常に初めに「厨」になるんだろうな・・・・・
0053nobodyさん04/08/24 19:36ID:???
>>52
なるけど、何か?
0054nobodyさん04/08/24 20:50ID:???
>>49
mime_plsはRFC2047を満たさないので自作してますが。
0055いらすま04/08/24 21:03ID:Hn5K2dOO
えーとですね。改造自由な掲示板のソースを手に入れたとですよ。
掲示板の背景の色をかえたいのですが、どうしたらよいので??
0056nobodyさん04/08/24 21:09ID:???
>>49
オレはIM::Iso2022jp使ってる
0057nobodyさん04/08/24 21:42ID:???
>>55
サングラスをかけろ
0058nobodyさん04/08/24 21:48ID:???
>>55
まずは、あちこちの板に駄スレを立てまくるのをやめれ。
0059nobodyさん04/08/24 22:30ID:???
おまえらJcode使えない環境か?
ってまあ74バイト区切りで改行いれなきゃいけないとか面倒なことがあってそれだけじゃたりないんだっけ?

フォームメールなんて作ったことないからわからんなw
0060nobodyさん04/08/24 23:08ID:???
>>57
でっ、できる・・
0061nobodyさん04/08/24 23:20ID:???
ここはナイスな回答者が揃っていて好き
0062nobodyさん04/08/24 23:48ID:???
>>57
それじゃあ背景以外も変わっちまうだろボケェ!
おまいはセンスはいいんだが、いつも後一歩だな。
0063nobodyさん04/08/25 00:17ID:???
おいおい ちょーまじれす
0064nobodyさん04/08/25 00:40ID:???
おまいらPerlの場合ってモジュールとただのライブラリってどっちがいいと思う?
最近オブジェクト指向でモジュールを1個作ってみたんだけど、確かに再利用性は高いし
インターフェースだけ覚えとくだけで便利なのは間違いないけど、それってライブラリもそんなに大差ないよね。
ライブラリの方が手軽だしさ。

まあDBIくらいになるとオブジェクト指向の方がいいんだけど、みんなはどんな感じで使ってる?
やっぱ小中規模であれば、1個モジュール1個ライブラリってのがいいと思うんだけどさ。
0065nobodyさん04/08/25 00:48ID:???
サブルーチンを再利用したいなら、普通の関数呼び出しのライブラリの方が手軽でいいかも。
メインルーチンを再利用したいなら、クラスモジュールにしとく方が有利かも。
0066nobodyさん04/08/25 01:06ID:???
>>65
ほう!そうゆう考え方が主流なのね。

基本的にある程度の振る舞いをもったオブジェクトが欲しい時とか
一貫性のある処理でそれだけで独立させたいときがムジュール。

ちょっとこれだけ再利用。みたいなものの集まりをライブラリとするってのが賢いよね。

ボンジュ〜ル?
0067nobodyさん04/08/25 01:17ID:???
オブジェクトだろうと、関数の集まりだろうとモジュール。。。
0068nobodyさん04/08/25 01:20ID:???
>>67
頭固いよ。。。
0069nobodyさん04/08/25 10:09ID:piXV00NL
画像のカウンタプログラムを書いていますが、
画像連結ライブラリを使うと本当に読み込みが早くなるのでしょうか?
返答よろしくお願いします
0070nobodyさん04/08/25 10:13ID:???
何故試さん
00716904/08/25 11:23ID:???
調べたり、テストしたりしましたが、わかりません
0072nobodyさん04/08/25 11:24ID:???
画像連結ライブラリって、内部でGIFを連結してprint OUTで一気に出力するアレでしょ?
カウンタなんて小さい画像の集まりだから、HTTPヘッダによるオーバーヘッド分がなくなるだけでも有利でしょうな。
大きな画像連結なら負荷やメモリを気にするところだが。

Perlの手始めは向いてるね。カウンタ。
00736904/08/25 11:27ID:???
>>72
ありがとうございます。失礼ですが、もしPHPだといったいどうなのでしょうか?
0074nobodyさん04/08/25 11:34ID:???
いっしょだよ
0075nobodyさん04/08/25 11:36ID:???
テストしたいんだったら、1000ファイルくらい画像連結させて比較すれば差がでるんじゃないの。
00766904/08/25 11:37ID:???
>>74,75
ありがとうございます
0077nobodyさん04/08/25 11:40ID:???
っと、1000ファイルすべて違うファイル名にしないと意味ないけどさ。ブラウザにはキャッシュというものがあるからね。
0078nobodyさん04/08/25 12:39ID:???
>>69
お前みたいにくだらない部分にこだわるやつに限ってゴミソースで重かったりする。
だまってテーブルレイアウトやめればそんなくだらない差は気にならなくなる。

ついでに言うと連結処理あり、なしのベンチとってそれもちゃんと考慮に入れろや。
0079nobodyさん04/08/25 18:46ID:???
>>75
1000ファイルもあると I/O のコストの方が高くならない?
逆にHTTPサーバーの方のキャッシュが期待できる連結なしの方が早くなりそうだし、
最適化の仕方次第で結果が代わったりするんじゃないかな。(予想だけど
ベンチマークとるなら実際の運用環境に近い条件でやらないと意味がないと思う

>>69
GIF画像の連結はやったことないので、一般的な回答になるけど。
アルゴリズムの優劣とかならはっきりとした一般答がでるかもしれない、
でも、こういった、環境や実装に大きく依存するベンチマークは自分でとらないと役にたたない。
画像連結の方法だけとってみても、perlでやるのか、ライブラリか、外部プログラムに頼るのかで結果が代わってくるはず。

0080nobodyさん04/08/25 18:59ID:???
>>77
この場合、キャッシュは考慮すべきといっても、offにすべきではないと思う。
連結なしの場合、httpヘッダでcache controlや期限を適切に設定していれば、
ファイルを送る必要はなく文字列出力だけで済む事もあるのだから。

クライアント数とアクセス数を分けて考えてテストする必要がある。
(再訪問者が多い場合にクライアント側のキャッシュの効果が期待できる)
0081nobodyさん04/08/25 19:21ID:???
ほしゅあげ。

http://pc5.2ch.net/test/read.cgi/php/1060009605/l50
0082nobodyさん04/08/25 19:25ID:???

(;・∀・)また、騙されたの?
ttp://pc5.2ch.net/test/read.cgi/php/1060009605/

% kill -9 81 || kill -9 81 || kill -9 81
% killall -TERM me
0083nobodyさん04/08/25 23:12ID:???
>78
今回に限って言えば、ベンチは意味が薄いのではないだろうか。
サーバとの経路とかでも結果が大きく変わるだろうし。
0084nobodyさん04/08/26 00:15ID:???
クライアントから一回だけ要求を受け取って、
2種類のレスポンスを返す方法ってありますか?

例えば
GETで要求されたURLの応答に
200 OK
を返した直後にクライアントとの接続を閉じずに
304 Not Modified

を返せるような。
どなたかお知恵を貸してください。お願いします。
0085nobodyさん04/08/26 00:19ID:???
>>84
無理。
どういう理由でそういうことをしたいのかを明確に書けば別解のアドバイスが出てくるかも知れず。
でも、ここはperlコーディングスレなので、webprog 初心者スレの方がいいんじゃないかな。
0086nobodyさん04/08/26 00:25ID:???
>>85
そっちできいてみます。ありがとうございます。
0087nobodyさん04/08/27 07:40ID:gO3gmMRy
SSIで、9桁の乱数を生成して表示するスクリプトはどのようにして
作ればよいのでしょうか?
例えばどこかのhtmlから<!--#exec cmd="ransuu.cgi"-->を呼び出すと
253145968や040104580とかランダムな9桁の数値を返すものです。
全くの初心者で困っています。教えて下さい、お願いします。
0088nobodyさん04/08/27 07:52ID:???
rand;rand;printf "Content-type: text/plain\n\n%09d",rand(10**9);
00898704/08/27 08:43ID:???
>>88
本当にありがとうございます!!!!!!!!
0090nobodyさん04/08/27 10:01ID:???
>>83
遅レスだけど、ベンチはローカルでやるのが普通だろ。
0091nobodyさん04/08/27 10:16ID:???
>>88
あたまでrandを2回呼んでるのはなぜ?
00928804/08/27 15:08ID:???
3回目のrandが返す値が好きだからー!!
0093nobodyさん04/08/27 17:15ID:???
<FORM method="POST" action="hogehoge">
<INPUT type="submit" name="Reload" value="再読込">
</FORM>
こんな感じでホームページに設置されているボタンを押すPerlスクリプトって作れないでしょうか。
0094nobodyさん04/08/27 17:51ID:???
>>93
そのスクリプトの用途を聞かせ願えないか?
0095nobodyさん04/08/27 18:07ID:???
すみません。物騒な聞き方でしたね。
こういう感じのサーバなのです

1.FTPサーバーに管理ファイルをアップする。
2.社内のローカルホスト(http://192.168.0.200:8080/reload.html)にアクセスして更新ボタンを押して更新完了
3.上記をファイルの数だけ繰り返す

私のところに1の管理ファイルがバイトから1日10件くらい集まるので、
これをいちいちアップして更新して・・・というのは、かなり面倒なのですが、
社内鯖の仕様を変更するのは問題があるので、自動でアップ処理してくれるスクリプトを組もうと思った次第です。
最終的には

1.設定フォルダ内のファイルを社内鯖にアップする
2.更新ボタンを押す
3.これを毎朝9時に行う

ということをしたいのです。
0096nobodyさん04/08/27 18:17ID:ScoK2mkg
>>95
対策@私の場合
1.バイト君にFTPサーバーの特定のディレクトリにファイルをうpするように指示をする。
2.その特定のディレクトリを監視するスクリプトを、例えばcronで1時間ごとに起動して、
  ファイルが存在すれば何らかの更新作業をさせる。
3.私は他の作業をする。
0097nobodyさん04/08/27 18:17ID:???
ボタンを押すというのは難しいから、そのデータPOSTを自前でやった方が良いと思われ。
0098nobodyさん04/08/27 18:50ID:???
へたれですみません。どうやったらいいんでしょうか > データPOST
0099nobodyさん04/08/27 18:53ID:???
getではだめなの?
getならリクエスト1個で終わるんだけどね
0100nobodyさん04/08/27 19:08ID:???
Net::FTPとLWPがあればささっと書けそうだけどな。
0101nobodyさん04/08/27 19:14ID:???
>>97
ボタンを押すほうが簡単じゃないでしょうか??
01029304/08/27 19:15ID:???
とりあえずFTPのところは書き上げて、手元で動かす分には問題ない程度に動いてます。
WWWは扱ったことがないので、ぐぐって勉強してます。

>96
支給されてるクライアントがNTなので、タスクマネージャーで実行しようと思ってます。

>99
サーバ側の仕様には手を出せないのでPOSTでがんばってます。

>100
ttp://member.nifty.ne.jp/hippo2000/perltips/LWP.html
これでいいんでしょうか? 入手してみます。
0103nobodyさん04/08/27 20:43ID:???
LWPで普通に出来ないか?
0104nobodyさん04/08/27 22:09ID:ScoK2mkg
>>102
> 支給されてるクライアントがNTなので、タスクマネージャーで実行しようと思ってます。
ではそれで毎日9時に動くようにすれば?
でもってなぜCGIが必要なんだろう?
確認ならばメールで通知、返信すれば自動で更新作業させるなりと方法はあるのに。
0105nobodyさん04/08/27 22:28ID:???
なんで「ボタンを押す」ことが必要なのだろうか。
ブラウザ立ち上げておかないといけないし、強制終了してしまっていたら立ち上げなおしたりしなきゃいかんし。
0106nobodyさん04/08/27 22:34ID:???
>104-105
おまえら少しは文章を嫁
01079304/08/27 23:10ID:???
お世話になっております。

ttp://digit.que.ne.jp/work/index.cgi?Perl%a5%e2%a5%b8%a5%e5%a1%bc%a5%eb%2fLWP#i5

この辺りを読んで解決しました。また1つ賢くなれました。ありがとうございました。
0108nobodyさん04/08/28 00:00ID:???
>>106=意味不明
0109nobodyさん04/08/28 02:17ID:???
どっちにしろ>>95を信じたやつは(ry
0110nobodyさん04/08/28 13:06ID:???
>>101
ボタンを押すのが簡単ってのは人間が操作する場合で、プログラムにとっては、POSTリクエスト送る方が簡単。
プログラムでそういったことをエミュレートしたいなら、ブラウザのオートメーションを調べてみるといい。

冗長になるは言うまでもないけど。一応フォローしておくと、
HTTPの仕組みを知らない人にとってはこっちの方がコードが簡潔だったりする、
ちょっとした用途にスクリプトを書く場合でもコードを大幅に節約できるといった利点がある.
0111nobodyさん04/08/28 17:38ID:???
なんでもいいから犯罪者にアドバイスはヤメレ
0112nobodyさん04/08/29 22:39ID:???
検索CGIを作っているのですが、
エスケープが必要な文字の検索で詰まってます。

$str =~ s/($key)/<$1>/g;

こんな感じで、ヒットしたキーの前後に文字を追加してるんですが、
これだと、正規表現の文字(ドット. や プラス+ )自体を検索することが
できません。

何かいい方法ありますでしょうか
0113nobodyさん04/08/29 22:53ID:???
>>112
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlfaq6.html#How_do_I_match_a_pattern_that_is
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlre.html
http://perldoc.com/perl5.8.4/pod/func/quotemeta.html
011411204/08/29 23:11ID:???
>>113

ありがとうございます!
quotemetaなんて便利なものがあったんですね。
0115nobodyさん04/08/30 10:02ID:???
0116nobodyさん04/08/30 10:28ID:???
そういえば、ひさびさPerlスレ見た
0117nobodyさん04/08/30 13:20ID:WEq7wEdz
@data = split(/\//, $_);

"/" でセパレートされた文字列を分解してそれぞれ配列に入れたいのですが、
どうすればいいか教えてください。
0118nobodyさん04/08/30 13:27ID:???
>>117
0119nobodyさん04/08/30 13:29ID:???
>>118
同意。
0120nobodyさん04/08/30 13:30ID:???
>>118
>>119
どこが?なのでしょうか?
0121nobodyさん04/08/30 13:37ID:???
すいません。
分かりました。。。

>>117の1行目が答えなんですね。(-_-;)
0122nobodyさん04/08/30 17:23ID:???
何が起こったんだ
0123nobodyさん04/08/30 17:29ID:I+lehIeA
すみません、3つ以上の数が等しいかどうか調べたいのですが、
以下のようにやってもエラーになります。
perl -e '$var=1; $var1=1; $var2=1; print "Ok!\n" if ($var==$var1==$var2==1);'
どうやったらいいのでしょうか。おせーてください。

0124nobodyさん04/08/30 17:37ID:???
>>123
and
0125nobodyさん04/08/30 17:41ID:???
>>124
えっと、>>123の場合は、1なので、==をandに代えればできますが、他の数の場合
まずいです。
perl -e '$var=1; $var1=1; $var2=2; print "Ok!\n" if ($var and $var1 and $var2 and 2);'
これでもOk!になってしまいます。
0126123=12504/08/30 17:44ID:???
あそうか、一個ずつandでやるんですね。
($var == 1 and $var1 == 1 and $var2 == 1)
もっと簡単な方法がないかと思ったものですから。
24ケースくらいあるんで書くのたいへん(TT)
0127nobodyさん04/08/30 17:52ID:???
>>126
my @var1 = (3, 3, 3, 3, 3, 3);
my %tmp = (); @tmp{@var1} = ();
print "var1 ", 1 == keys %tmp ? 'ok.' : 'no.', "\n";

my @var2 = (2, 2, 2, 2, 4, 2);
%tmp = (); @tmp{@var2} = ();
print "var2 ", 1 == keys %tmp ? 'ok.' : 'no.', "\n";
0128nobodyさん04/08/30 17:52ID:???
>>126
ループ
0129nobodyさん04/08/30 17:56ID:???
よいこは1 == keys %tmpと書かずにkeys %tmp == 1と書こうね。
0130nobodyさん04/08/30 18:02ID:???
>>129
根拠は?
0131nobodyさん04/08/30 18:47ID:???
読みにくいから
0132nobodyさん04/08/30 19:53ID:???
>>130
比較では不確定なモノを左に書くのが一般的。
これを逆に書くと何となく気持ちが悪い。
それを何とも感じないヤシはセンスが悪い。
0133nobodyさん04/08/30 20:15ID:???
もしその人がバカだったらぶん殴ってやる
もしバカがその人だったらぶん殴ってやる
0134nobodyさん04/08/30 20:58ID:???
CPAN落ちてない?
0135123=12504/08/30 21:04ID:???
>>127
高度な技を伝授いただきありがとうございます。
@tmp{@var1} = ();
というところですが、ハッシュの配列ということでしょうか。
これは、らくだ本にも出ていますでしょうか。今手元にない
のですが。

0136nobodyさん04/08/30 21:07ID:???
定数を左辺に書くと==と=を間違えたときにすぐわかるけどね
0137nobodyさん04/08/30 21:22ID:???
>>135
ハッシュのスライスだね。ぐぐれば出てくるよ。
0138nobodyさん04/08/30 21:23ID:???
>>135
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perldata.html
0139nobodyさん04/08/30 21:33ID:c+ZgByNi
$name2が、$name3[0]〜$name3[$i]のどれかの値と一致した場合にある動作をするようにしたいのですが
どうやればよいでしょうか。
0140nobodyさん04/08/30 21:44ID:???
>>136
その言い訳は何年も前に死滅したはずだが?

Found = in conditional, should be == at -e line 1.

頭が化石になってますよ。
0141nobodyさん04/08/30 23:29ID:WEq7wEdz
for(0..10) {
for(0..10) {
・・・・・
}
}

ネストさせると、最初のfor文は$_ですが、中のfor文は何になるのですか?
0142nobodyさん04/08/30 23:32ID:???
>>141
0143nobodyさん04/08/30 23:38ID:???
>>141
$_
0144nobodyさん04/08/30 23:50ID:???
>>139
for(@name3){
print"bingo\n" if($_ eq $name2);
}
0145nobodyさん04/08/30 23:59ID:???
>>141
変な質問ですみません。

>>143
ネストしてても一緒なんですか。

for(0..10) {
  for(0..10) {
    $data[$_][$__] = ・・・
    ・・・・・
  }
}

だったらいいなと勝手に思ってました。
そうすると

for(0..10) {
  for($i=0; $i<10; $i++) {
    $data[$_][$i] = ・・・
    ・・・・・
  }
}

とすべきなんですね。
0146nobodyさん04/08/31 00:56ID:???
>>145
for(0..10) {
  for my $i (0..10) {
    $data[$_][$i] = ・・・
    ・・・・・
  }
}
0147nobodyさん04/08/31 04:35ID:nQH60qUM
truncateについて教えてください。
winxpにversion 5.005_03 built for MSWin32-x86-objectですが、思ったとおりにtruncateが動作しません。

open(FILE,'>aaa.txt');
print FILE "aaaaaaaa";
seek(FILE,0,0);
truncate(FILE,0);
print FILE "bbbb";
close(FILE);

これは、思ったとおりに動きます。aaa.txtは「bbbb[eof]」の4バイトになります。

$aaa='FILE';
open($aaa,'>aaa.txt');
print $aaa "aaaaaaaa";
seek($aaa,0,0);
truncate($aaa,0);
print $aaa "bbbb";
close($aaa);

これは、なぜか「bbbbaaaa[eof]」の8バイトになります。
seekは正しく機能して、truncateは機能していないからこの結果だと思うのですが、なぜ機能しないのでしょうか。
上の例を見ても、truncate機能自体はあると思うのですが・・・
0148nobodyさん04/08/31 05:22ID:???
>>147
お前が馬鹿だから
0149nobodyさん04/08/31 06:56ID:???
truncate($aaa,0) or die $!;
0150nobodyさん04/08/31 07:11ID:???
>>147
$aaa='FILE'; → $aaa = *FILE;
015114504/08/31 08:36ID:???
>>146
ありがとう。
もとめていたスマートなコードです。
0152nobodyさん04/09/01 00:24ID:IFM26Jlf
だれか教えてください。
ダウンロードというボタンをおしたら、CSVがダウンロードできる仕組みにしたいです、
0153nobodyさん04/09/01 00:39ID:???
>>152
途中でやめるなよ
0154nobodyさん04/09/01 00:58ID:???
>>152
してください
0155nobodyさん04/09/01 01:15ID:IFM26Jlf
すまん。152だ。

だれか教えてください。
ダウンロードというボタンをおしたら、CSVがダウンロードできる仕組みにしたいです。

が正解でした。といううことでおしえてください
0156nobodyさん04/09/01 01:23ID:???
>155
教えてやろう。
PerlもCGIも使わなくてもできる。
よって板違い。
0157nobodyさん04/09/01 01:47ID:IFM26Jlf
156よ。よく考えれば単にリンクを張ればよいな。アドバイスあんがと
0158Pearl04/09/01 01:56ID:???
print <<"END";
...
END

と終端文字列を記述すると何も表示されないのに、

print "...";
print <<"END";
...
END

とすると表示されます。(print"...";の内容は表示されません)
これは何故なんでしょうか??
初心者ですいません…。
0159nobodyさん04/09/01 02:16ID:???
そこより前のコードで"が開きっぱなしと見た。
0160nobodyさん04/09/01 12:01ID:VNRqZmig
perlでのoop時の属性についてなんですが、
hashでの実装、use fieldsでの実装
どちらがいいんでしょうか?
fieldsのが便利だと思うんですが、
内部でpseudo-hashを使ってる?らしく
pseudo-hashは今後推奨されなくなるようで
その辺り困ってます。
--------------------------------------
sub new {
my( $class, $name, $height ) = @_;
my $this = {
'name' => $name,
'height' => $height
};
bless $this, $class;
}
--------------------------------------
use fields qw( name height );
0161nobodyさん04/09/01 12:17ID:???
>>160
5.9.0以降ではpseudo-hash使わない実装に変更されたので
普通に使う分には問題ないんじゃなかったっけ。内部の
phash直接触るような行儀悪いプログラム書いてりゃ別だけど。
0162nobodyさん04/09/01 12:33ID:VNRqZmig
>>161
ありがとうございます!
なるほど、確かに、phashを直接使うなみたいな事は書いてありました。
perl6になったらこの辺も変わりそう?ですし、
perl5では、これでいいってことで!
0163nobodyさん04/09/01 18:16ID:GIk9V8QY
sendmailを使ったプログラムを作ってるんですが、どうやらメールの件名に
日本語を使う時には特別な処理が必要なのですね。

今いろいろなサイト見てますが、皆さんのオススメの解説サイトがありましたら教えてください。
おながいしますm(_ _)m
0164nobodyさん04/09/01 18:28ID:???
特別な処理???
メール送信の基本はperlに限ったことではないが
0165nobodyさん04/09/01 18:41ID:???
>>163
解説サイト?

無いよ。
嘘だと思うんなら自分で探してみ?
016616304/09/01 19:59ID:GIk9V8QY
>>164
件名の分だけ他とは違うエンコードをしないといけないという意味です。
>>165
そうなのです。あまりいいところが見つからないのです。
実際のサンプルソースとかを載せながら解説してるサイトがあるといいなと思ったのですが;
0167nobodyさん04/09/01 21:10ID:???
RFC嫁
0168nobodyさん04/09/01 21:49ID:Fq5X9xKH
print "Location: http://www.yahoo.co.jp/\n\n";
上記のコードでリダイレクトさせる前に
htmlタグを読み込ませたいと思います。

<IMG SRC="http://www.hogehoge/test.cgi" width=1 height=1>
例えば上記のようなタグを読み込ませたい場合、
どのようにコードすればいいのでしょうか?

おながいします



0169nobodyさん04/09/01 22:00ID:???
>>166
お勧めサイトは(・∀・)ココダ!!
ttp://www.ietf.org/rfc/rfc2047.txt

>>168
うーん。
> width=1 height=1
リダイレクトした「数」をカウントできればいいというわけではないの?
0170nobodyさん04/09/01 22:06ID:3SqQ1yBx
$hoge = file( "http://www.hogehoge/test.cgi" );
print "Location: (p)http://www.yahoo.co.jp/\n\n";
0171>>16304/09/01 22:26ID:5tu92ZqP
$subj = Jcode::convert(\$subj, 'jis');
$subj = MIME::Words::encode_mimeword($subj, 'B', 'iso-2022-jp');
0172nobodyさん04/09/01 22:38ID:???
>>171
今時Jcodeなんて教えるなよ
0173nobodyさん04/09/01 22:39ID:???
今5.8のサーバは少ないだろ。。つーか、ほとんど無いと思われ。
017416804/09/01 22:51ID:Fq5X9xKH
>>169-170

レスありがとうございます。
そうですね、数をカウントできればいいというわけではないです。

$hoge = file( "http://www.hogehoge/test.cgi" );
これについてなんですが、
http://www.hogehoge/test.cgi の部分に変数を用いたい場合、
どんな感じになるでしょうか?初歩的な質問すいません。
http://$variable.com/test.cgi のようなURLにしたいのですが。
$hoge = file( "http://$variable.com/test.cgi" );
で変数として扱われるんでしょうか?
017516304/09/02 01:14ID:hfUgeMHv
>>169
英語よめません;
>>171>>173
>$subj = MIME::Words::encode_mimeword($subj, 'B', 'iso-2022-jp');
これって5.8でないと駄目なんですか?使用サーバのperlは5.6ですが。
後、このモジュール?ライブラリ?ってRFC2047の
1.encoded-word は 75バイト以内でなければならない.
2.encoded-word を含む行は 76バイト以内でなければならない.
をクリアしてないですよね?PERLメモ読んでて、とりあえずBASE64エンコードは
なんかのモジュールでやるとしても1と2をどうしようかと迷ってます。

みなさんはちゃんと1と2に対応したサブルーチン等を作ったりしてるんでしょうか?
0176nobodyさん04/09/02 01:20ID:???
>>175
辞書ひけや馬鹿野郎
0177nobodyさん04/09/02 01:28ID:???
>>175
いいから自分で作ったというコードを晒せよ。
特別な処理とか、何を勘違いしてるのかわからん。
017816304/09/02 01:50ID:hfUgeMHv
<input type="text" name="to">
<input type="text" name="subject">
<textarea name="body"></textarea>

use MIME::Base64;
require "jcode.pl";
受け取ったフォームデータをデコード+JIS変換して%formを作成。(コード省略)
$encode_word = encode_base64($form{subject});

open MAIL,"|sendmail -t";
print MAIL<<END;
From: from@from.com
To: $form{to}
Cc:
Bcc:
Subject: =?ISO-2022-JP?B?$encode_word?=
 
$form{body}
END

これでは
1.encoded-word は 75バイト以内でなければならない.
2.encoded-word を含む行は 76バイト以内でなければならない.
をクリアできないですので。
0179>>16304/09/02 02:09ID:LLw2NK0r
何を期待しているのかよくわからんけど、文字列の長さなら、エンコードやら
バージョンやらモジュール云々じゃなくて、自分で制御すればいいだけでは?
ttp://www.hippo2000.info/perl/myfull.htm

018016304/09/02 02:14ID:hfUgeMHv
>>163
はい。エンコードは別にたいした問題はないのです。
1.encoded-word は 75バイト以内でなければならない.
2.encoded-word を含む行は 76バイト以内でなければならない.
3.encoded-word はそれぞれ独立してデコード可能でなければならない.
4.encoded-text をデコードした文字列の文字コードは,最後に ASCII が指定された状態でなければならない.
5.encoded-word が現れる出現位置に関する決まり.
 Subject や Comment のヘッダフィールドなどの, 'text' 内に出現.
 "(" と ")" で区切られた 'comment' 内に出現.
 From や To,CC ヘッダなどで,'phrase' 内に出現.
 'addr-spec' 内で出現してはならない.
 'quoted-string' 内で出現してはならない.などなど.
6.隣り合う encoded-word の間の 'linear-white-space' は無視する.

これらをクリアするのに皆さんは自分でエンコード前の準備用としてのルーチンを
自作してるんでしょうか?というのが>>175での質問です。
018104/09/02 02:30ID:???
そんなに作りたいなら
ttp://www.futomi.com/subroutine/encodesubject.html
018216304/09/02 02:40ID:hfUgeMHv
>>181
>このサブルーチンは、RFC2047に完全には準拠していません。RFC2047では、ASCII文字列は、エンコードしないことを推奨していますが、このスクリプトでは、簡略化するために、すべてをエンコードしています。

紹介のサイトでは上記以外の違反はしてないみたいですが
企業でのメーラーとして使う場合はどの程度準拠すればいいのでしょうか?

ところで>>181さんは>>180の1〜6をどこまで守ってsendmailを利用されてますか?
一般的なレベルが知りたくなってきました。
0183nobodyさん04/09/02 03:27ID:???
>>182
おまいperlメモ読んでるなら、そこにあるソースをそのままもらえばいいのに。
あれならほぼokだろ。まあちょっと長いけどな。>>181のサイトは俺も見たが
asciiもエンコードしちゃう点を除けばかなりいい。jcode.plさえあれば誰でも
できるってのが手軽だしな。

そもそもPERLメモの方はsubject以外でも使えるし、デコードまでやれるルーチイだから
比べてもしょうがないな。ちなみに俺はフォームメールなど作ったことなし!
0184nobodyさん04/09/02 03:41ID:???
>>181-3
use strict環境下で動かないコードなどクソ。
0185nobodyさん04/09/02 11:21ID:3eXmd8V2
#!/usr/local/bin/perl

$logfile = "./sizecount.dat";

$count = -1;

$count += (-s "$logfile");

open(OUT,">>$logfile");
print OUT "\n";
close(OUT);

print "Content-type: text/html\n\n";
print "countdate=$count\n";

参考書通りに作ったカウンターなんですけど
アップロードして動作確認したら正常に動いたので
flashMX2004でダイナミックテキスト、変数dispcountに
表示させたいんですけど、出来ません。
チェック用の一応変数checkにはloadcompleteと表示されました。
アクションスクリプト
System.useCodepage = true;

CGIfile = "sizeount.cgi";
myLoadVars = new LoadVars();
myLoadVars.onLoad = function(){
dispcount = myLoadVars.countdate;
check = "loadcomplete";
}
myLoadVars.load(CGIfile);
018618504/09/02 11:25ID:3eXmd8V2
続き
CGIの下から2行目はprint "Content-type: text/plain\n\n";
に変更してからフラッシュでやったんですけどなぜか表示されません、、、
これまで変数を受け取るだけや送るだけのサンプルは参考書通り出来てたのですが
お願いします。
018718504/09/02 11:31ID:3eXmd8V2
追加
ブラウザのキャッシュ関係ではありません。
お願いします。
018818504/09/02 11:35ID:3eXmd8V2
度々すいません
ダイナミックテキスト,変数dispcountにはundefineと表示されます。
お願いします。
0189nobodyさん04/09/02 11:38ID:???
ぱっと見だが、Perl のコードに問題は無いと思う。
おそらく Flash の方に何らかの問題があると思われるが、
残念ながら Flash についてはこのスレで扱う範囲ではない。
019018504/09/02 11:42ID:???
>>189
わかりました。
ありがとうございました。
フラッシュ板言ってきます。
0191nobodyさん04/09/02 14:52ID:???
>>180
俺は1〜6全部クリアしたライブラリ作ったが、たいていはそこまで必要ないので
作る奴はそういないだろうな。特に何が問題なのかも分からんような奴しか集まらん
このスレには。
ちなみに1〜6を完全に満たしたままだと、そうでないアホなエンジンが5を
無視してエンコードしたものを戻せないので、X-Mailerが自身ならstrictモード、
他ならlooseモードで動くようにしてる。
商用なので公開はせんが。
0192nobodyさん04/09/02 18:06ID:LZDH898f
>>174へのレスをキボンヌでございます
0193nobodyさん04/09/02 22:18ID:0Sj0dIST
ActivePerl5.8.4を使っています。
ShiftJISのデータをDBから取得して、そのデータを使って
UTF-8のXMLファイルを作成したいのですが、うまくできません。
いろんなサイトを見てみましたが、うまくできないので
方法をご存知な方がいましたら、教えてください。
0194nobodyさん04/09/02 22:38ID:???
UTF-8に変換してください
0195nobodyさん04/09/02 23:59ID:0Sj0dIST
普通にやるとできるみたいです。
DBからできないのはなぜでしょうか?

use Encode;

my $a = "あああ";
Encode::from_to($a, "shiftjis","utf8");

$xml =<<"EOF";
<?xml version="1.0" encoding="UTF-8" ?>
<test>$a</test>
EOF

print $xml;
0196nobodyさん04/09/03 02:42ID:d4bnE4Tf
@array = (1,5,8,6,2,1,3,8,6,4) #任意の数字
から、中央値、最頻値を求めるには、どうすればいいですか?
モジュールは見つかったのですが、レンタルサーバーなので使えません。

誰かわかる人いたら教えてください。
よろしくお願いします。
0197nobodyさん04/09/03 02:59ID:???
>>196
"中央値","最頻値","アルゴリズム"でググってみてください.
0198nobodyさん04/09/03 03:23ID:???
>>192
なんでやってみないわけ?
0199nobodyさん04/09/03 09:07ID:???
>>196
@array = (1,5,8,6,2,1,3,8,6,4); #任意の数字
# 中央値
$#array % 2 ? $m=($#array+1)/2 : $m=$#array/2;
$median=(sort @array)[$m];
print "中央値は、$median。\n";
# 最頻値
for(@array){
$hindo{$_}++;
}
foreach $key (keys %hindo){
$max=$hindo{$key} if $hindo{$key} >= $max;
}
foreach $key (keys %hindo){
push(@max, $key) if $hindo{$key} == $max;
}
print "最頻値は、@max。\n";
0200nobodyさん04/09/03 09:46ID:???
>>195
DBから取り出したものがそのテストプログラムで
想定してるのと同じものかは確認したか?
020119604/09/03 11:54ID:???
>>199
ありがとうございました!
やっぱり結構難しいプログラムになるんですね。
とても自分のプログラミングテクニックじゃできませんでした・・・
0202nobodyさん04/09/03 13:23ID:???
これで難しいってか
0203nobodyさん04/09/03 13:55ID:???
わかりやすくかけば
0204nobodyさん04/09/03 22:27ID:qXHB0Gmy
Perl最新版をインスコして.plファイルをデスクトップに置いたら
トカゲのアイコンがポコチンに見えた
0205>>16304/09/03 22:51ID:???
結局163は作りたくないのか?
よくわからんが、選択肢は3つってとこか

1. このまま放置(案外これかもな)
2. JISじゃなくてUnicodeにしてMIME-Headerエンコする(作り込みなしで完璧)
3. 頑張ってJISと2047に固執する(作ったらcpanにあげてくれw)

> $header = encode('MIME-Header', $utf8);
020617404/09/04 01:17ID:jFFI5mOb
>>198
無理でございました
0207nobodyさん04/09/04 01:37ID:???
>>206
meta refreshじゃなくてLocation使う理由は?
0208nobodyさん04/09/04 11:47ID:zUjRJg63
質問でふ

http://news.fs.biglobe.ne.jp/news/photo/

にある

映画「釣りバカ日誌」の歴代のヒロイン役で誰が一番好き?

という投票結果がエラーになったり投票総数が0になったりします。

ハングル板ではビグロブによる結果改竄じゃねーかって祭りになってるので
すが、本当でしょうか?

教えてエロい人!
0209nobodyさん04/09/04 11:55ID:???
>>208
で、それがperlコーディングに何か関係あるのかね?
0210nobodyさん04/09/04 11:55ID:zUjRJg63
>208

すいませんまちがいです

http://news.fs.biglobe.ne.jp/special/sanmenkiji.html



最近人気急上昇の韓国俳優「四天王」で誰が一番かっこいい?

の投票でした・・・
0211nobodyさん04/09/04 12:22ID:???
ハングル板ってこんなことで祭りになるのか。
ま、スレ違い。
0212nobodyさん04/09/04 13:23ID:???
スレ違いでも答えてあげるのが人情
0213nobodyさん04/09/04 13:28ID:???
>>212
じゃあ、おまいが答えてやれよ。
0214nobodyさん04/09/04 15:42ID:llgg8ga3
|・ω・`)
0215nobodyさん04/09/04 16:07ID:???
>>208 >>210
俺が使っている
 カウンターは
  1日1000以上回ることが保証されている。
 アンケートは
  人がいなくてもリロードするだけで増えていく。
 チャットは
  必ず知らない人がいる。

プログラムは作られたとおりにしか動かないのです。
0216nobodyさん04/09/04 16:26ID:L+DB05Rw
フォームから送られてくるデータの中にある改行コードを\nに置換したいんだけど、
$str =~ s/\r\n|\r/\n/g;
でいいっけ?なんか自分が書いた以前のコードに
$str =~ s/\n\r|\r/\n/g;
っていう逆になってるのがあって色々調べたら、\r\nの方が圧倒的に多いけどたまに
\n\rって書いてるコードもあった・・・・・

\r\n || \x0D\x0A
で正規表現するのが正解だよね?
0217nobodyさん04/09/04 16:37ID:???
\r\nでいい
0218nobodyさん04/09/04 16:37ID:???
>>215
で、そのカウンターは1分で1000以上回ることは保証されているわけ?
0219nobodyさん04/09/04 17:34ID:uW2eM/jV

FreeBSD5.2.1 perl5.6.1
でperlスクリプトを書いています。
ファイルにある$$に囲まれた文字列をキーにして
ハッシュから値を取り出して出力しようとしていますが、
うまくいきません。
単純な置換ならうまくいくのですが、どうすればそのようなことが
可能なのでしょうか?

うまくいかないコード↓
while(<FILE>){
s/\$\$(.+)\$\$/$hash{\1}/g;
print $_;
}

目的の出力↓
hash("key1","val1","key2","val2")

FILE
文字列$$key1$$文字列
文字列$$key2$$文字列


出力結果
val1
val2
0220nobodyさん04/09/04 17:41ID:???
ttp://www2u.biglobe.ne.jp/~MAS/perl/waza/lmatch.html
022117404/09/04 17:47ID:jFFI5mOb
>>207
metaをどのように使うか分からないんです涙
metaにする利点はあるのでしょうか?
0222nobodyさん04/09/04 19:30ID:???
>>221
http://tohoho.wakusei.ne.jp/html/meta.htm
■ 別ページへの自動ジャンプ10秒後にURL=...で指定したURLにジャンプします。ホームページの移動の際に用いている例があります。IE3.0、Netscape Navigator 2.0 でサポートされています。
<meta http-equiv="Refresh" content="10;URL=http://xyz.com/">
022317404/09/04 19:49ID:jFFI5mOb
>>222
申し訳ないですが、
htmlでなら分かりますが、perlでは分かりません。
0224nobodyさん04/09/04 20:10ID:???
氏ね
0225nobodyさん04/09/04 20:18ID:???
.htaccessにErrorDocumentを記述して
オリジナルのエラーページを作成しています。
 
エラーの元になっているファイル/フォルダのURLをオリジナルのエラーページに表示させようと
http://<;!--#echo var="SERVER_NAME" --><!--#echo var="REQUEST_URI" -->
というコマンドと環境変数を使っていますが、
オリジナルのエラーページのURLが表示されます

ステップサーバー(http://stepserver.jp)というレンタルサーバーを利用しており、
そのサポートに問合せましたが、上記の記述で問題ない、との回答でした。

何かアドバイス・ヒントを頂けないでしょうか?
0226nobodyさん04/09/04 20:25ID:???
>>223
申し訳ないですが、なにが分からないのか分かりません。

>>225
申し訳ないですが、それのどこがperlに関する質問なのか分かりません。
0227nobodyさん04/09/04 20:43ID:???
どこで見た質問だったかしばらく思い出せなかった...orz

CGI: Common Gateway Interface part 11
http://pc5.2ch.net/test/read.cgi/php/1055597189/956
0228nobodyさん04/09/04 20:55ID:DfAuufFl
CGI で Perl 使って画像を出力したい(具体的にはグラフが描きたい)んですが
どうやればいいのでしょうか?
022917404/09/04 20:57ID:jFFI5mOb
ていうか、最初の質問がperl上でのhtmlタグの出力の仕方が分からないっていう
内容なんだけど、アフォですか?
meta分かったらそもそもこの質問してねーだろ??
>>224
おまえが(以下略
0230nobodyさん04/09/04 21:14ID:???
>228
ttp://homepage3.nifty.com/hippo2000/perltips/perlgrph.htm
0231nobodyさん04/09/04 21:15ID:???
>>229
metaにperlは無関係


まだ夏は終わらんのか?
0232nobodyさん04/09/04 21:17ID:???
ていうか>>174のレベルが初心者の域じゃない
>htmlタグの出力の仕方が分からないっていう
なんだこれ?おちょくってんのか
0233nobodyさん04/09/04 21:43ID:???
DQNが発生するたびに「夏が」とかいうヤシきもいよ?
0234nobodyさん04/09/04 21:43ID:???
>>230
GifGraphの解説がありましたが、最初の方に、
「CPANには他にもChart-PNGgraph、GDgraphといったものもあり、
どれが今後も残っていくのかよくわからない状態です。(2000/1/5)」
と書かれています。いったいどのモジュールが現在主流なので
しょうか。質問ばかり申し訳ありません。
0235nobodyさん04/09/04 21:53ID:???
>>232
おまえが勝手に初心者の定義を決めるな
>>174
(・∀・)カエレ!
0236nobodyさん04/09/04 23:05ID:???
>>234
主流なモジュールを使わないといけない理由は?
0237nobodyさん04/09/04 23:09ID:mKo8NLNs
cygwinのbashコンソールから、あるソフトをperlで立ち上げたとき、
そのソフトが終わらないと、そのコンソールがperlに乗っ取られた
まま使えなくなっちゃうんですが、これは仕方ないのでしょうか。
exit;入れてもダメですた。
system("Desktopmem.exe");
exit;
0238nobodyさん04/09/04 23:12ID:???
>>236
後々まで使っていきたいから、サポートっていうか、情報が
たくさん得られそうなものを選ぼうと思って・・・
0239nobodyさん04/09/04 23:51ID:DfAuufFl
>>230
ありがとうございます

>>234 >>238
http://www.hippo2000.info/cgi-bin/KbWiki/KbWiki.pl?cmd=disp&page=%B8%C5%A4%AF%A4%CA%A4%C3%A4%BF%A5%E2%A5%B8%A5%E5%A1%BC%A5%EB
GDGraphってのに統合されたっぽいです
0240nobodyさん04/09/05 00:00ID:???
>>237
そういうものです。
コマンドの後ろに & をつけてバックグランドで実行するか、
デーモン化するのが、常套手段です。
0241nobodyさん04/09/05 00:05ID:???
xcalのその日のスケジュールをdesktopmemoのスケジュール形式に
perlで変更して保存、それをdesktopmemoに読み込ませて起動と
いうことをやりたいので(スタートアップに登録)、すると、
バッチファイルかシェルスクリプトしかないですかね。
0242nobodyさん04/09/05 00:07ID:???
ごめんなさい、>>241>>237です。
で、ショートカットにすれば&で大丈夫のようですね。
0243nobodyさん04/09/05 00:13ID:???
>>239
ありがとうございます。
今は、GDGraphなんですね。実は、オライリーの「perlによるwebプログラミング」
とかいう本、かなり前に買ってあって、あれには、GifGraph、Gimpが中心に説明
してあったので、うーむ、ちょっと隔世の感。やってないのがいけないんだけど。
024421004/09/05 00:15ID:7pvSYkfO
>215

スレ違いなのに回答ありがとうございます。

ただ、結局何をおっしゃりたいのか今ひとつよくわからなかったんですが
プログラムの想定外の事態が起こったということでしょうか?

0245nobodyさん04/09/05 00:23ID:???
>>244
>>215は知ったかだから放置しとけ
0246nobodyさん04/09/05 06:56ID:???
さぁ、何か聞いて来い
0247nobodyさん04/09/05 10:26ID:gdlM8Pd7
掲示板のcgiで、下記のように引用された箇所の色を変えたいのですが、
どのように実現したら良いか方法をお教えください。

例えば、変数$textに下記のデータが入っているとして
--------------------------
> 引用元のテキスト1
> 引用元のテキスト2
> 引用元のテキスト3

返信テキスト
--------------------------

1桁目に半角の'>'があった行を下記のようなデータに置き換えたいと
考えております。
--------------------------
<span class="quoted">> 引用元のテキスト1
> 引用元のテキスト2
> 引用元のテキスト3</span>

返信テキスト
--------------------------

また、スレ違いの質問でしたら誘導していただけると嬉しいです。
0248nobodyさん04/09/05 10:48ID:???
>>247
マッチング
0249nobodyさん04/09/05 11:49ID:???
>>247
俺なら一行ごとに
<span class="quoted">> 引用元のテキスト1</span>
ってやってから
</span><BR>\n<span class="quoted">
だのを削除するかもなあ。
正規表現ひとつだとややこしくなりそう。
025024704/09/05 13:00ID:???
>>248 >>249
回答ありがとうございます。

その方法でやってみます。 >>249
0251nobodyさん04/09/05 14:09ID:???
>>247
$text =~ s|(^>.*(?:\n^>.*)*)|<span class="quoted">$1</span>|gm;
025224704/09/05 19:15ID:???
>>251
おお、>>247の条件はバッチリでした。

ただ引用ブロックが複数あると、2つ目以降に適用されないので、
もう1条件つけ加えることで、完全に期待通りの動作ができました。

>>248 >>249 >>251さん、とても助かりました。ありがとうございます。
0253nobodyさん04/09/06 00:59ID:WMpYnmeW
FOXさんの実験を手伝ってください。

今VIPで伝説の機能を検討中ですが、、、よいアイデアが出ません。(andスキル不足)
良いアイデアがあってかつスクリプト提供していただけるなら非常に嬉しいのですが・・・

■ VIP に伝説の機能をつけよう。。。
http://ex7.2ch.net/test/read.cgi/news4vip/1094337276/
■ VIP に伝説の機能をつけよう。。。2
http://ex7.2ch.net/test/read.cgi/news4vip/1094394603/
■ VIP に伝説の機能をつけよう。。。3
http://ex7.2ch.net/test/read.cgi/news4vip/1094396742/
0254nobodyさん04/09/06 01:05ID:???
断る!
0255nobodyさん04/09/06 05:54ID:???
>>253
帰れ
0256nobodyさん04/09/06 09:22ID:???
>>253
FOXが自分で頼みに来い
0257nobodyさん04/09/06 16:26ID:???
書き込むごとにスロットが作動して、当たったら
何かプレゼントするとか。●とか
0258nobodyさん04/09/06 21:56ID:???
規制機能は作れるのに、おみくじが作れないというのはこれいかに。
0259nobodyさん04/09/06 22:24ID:Oq1gFU4V
1:  use strict;
2:
3:  for my $s (1..10)
4:  {
5:    print $s."\n";
6:  }

これをやると、3行目でエラーになります。

Missing $ on loop variable at C:\hoge\test.pl line 3.

2: my $s
3: for $s (1..10)

とすれば正常に動くのですが、上のようにforの後ろでmyを使用しているサンプルを良く見るので、原因を知りたいです。

OSはWinXPです。お願いします。
0260nobodyさん04/09/06 22:32ID:???
>>259
俺んとこの ActivePerl 5.6.0 build623 (我ながらクソ古いバージョンだな) では
for my $s (1..10) でも問題なく動くんだが
君んとこの perl はどのバージョンのを使ってるんだ?
0261nobodyさん04/09/06 22:49ID:xItUojLf
つーかそろそろ2ちゃんもCGI以外のアプローチを考えてみたらどうよ
026225304/09/06 23:31ID:anPS9KLr
VIPで今までに導入された新機能
・1001の文章変更
・おみくじ機能:メール欄に!omikuji
・Load Average表示機能:メール欄に!uptime
・レベル表示:メール欄に!power
・名前のカラー機能:名前欄に@XXXXXX@(XXXXXXは16進カラーコード)
・スレ立てた1が名無しの名前を決められる機能
(派生で強制フシアナスレ、強制名無しスレ、名無しフシアナスレ、ID非表示スレなどが可能)
・IDがひらがな
・ひらがなトリップ
・本文で<tt><pre>タグ使用可能(!tt, !pre使用で)

詳細はまとめサイトで
http://www3.tokai.or.jp/ss295/vip/

便利な機能等ができれば他板にも導入されるかも。
公開テストみたいな感じになってます。
0263nobodyさん04/09/06 23:33ID:???
>>261
釣れまつか?
0264nobodyさん04/09/06 23:34ID:???
・1001の文章変更
↑は新機能と言えるのだろうか。
026525304/09/06 23:35ID:???
>>264
1001のテキストを外部ファイルにして板毎に設定可能ということらしいです。
026625904/09/06 23:44ID:Oq1gFU4V
>260
5.003_07
でした。今から新しいのに変えてみます。
026725904/09/06 23:57ID:Oq1gFU4V
m(__)m
動きました!有難うございます。
ちなみにバージョンは5.8.4が最新だったのでそっちを入れました。
0268nobodyさん04/09/07 07:49ID:???
>>253
スレ違いウザイ
026925904/09/07 09:16ID:vClBsqv3
たびたびスイマセン。
Perlのバージョンによる機能の差分を紹介しているページを知りたいのですが、どなたかご存じないでしょうか?
サーバのPerlがv5.00502なので、色々とエラーが出て困ってます。
0270nobodyさん04/09/07 10:01ID:???
>>269
Changes嫁
0271nobodyさん04/09/07 14:04ID:???
>>269
http://perldoc.com/perl5.8.4/pod/perl.html
perldelta
0272nobodyさん04/09/07 18:54ID:???
質問です。
perlの処理で、”Enterキーを押す”っていう操作は
perlでは、どう記述するのでしょうか?
ご存知の方是非教えて頂きたいのですが?
0273nobodyさん04/09/07 19:17ID:???
Enterキーが押されたことによって起きる結果を記述すればいいだろ
0274nobodyさん04/09/07 19:18ID:???
>>272
偶然似たような質問がありましたのでご参考にされてはいかがでしょうか
ttp://pc5.2ch.net/test/read.cgi/tech/1090889189/961-963
0275nobodyさん04/09/07 19:19ID:???
>>272
質問です。
1分も経たないうちにCGIとかPerlとか超初心者なんだけどスレとマルチポストしちゃうのは
どういう狙いがあるのでしょうか?
0276nobodyさん04/09/07 19:24ID:???
>>272
マルチ杉
http://pc5.2ch.net/test/read.cgi/tech/1037383722/263
0277nobodyさん04/09/07 19:44ID:MmA4CFyc
643 :nobodyさん :04/09/07 18:58 ID:???
>>642
こ こ は 質 問 ス レ で は あ り ま せ ん

質問です。
1分も経たないうちにPerlコーディングスレとマルチポストしちゃうのは
どういう狙いがあるのでしょうか?
0278nobodyさん04/09/07 20:23ID:???
PHPのstrtrと同様の関数をperlで使いたいのですが、
おながします
0279nobodyさん04/09/07 20:27ID:KfcdHICt
質問で手抜きしやがる。ばからしい。
0280nobodyさん04/09/07 21:52ID:???


   ↑ここまで独り言↑


   ↓ここから質問↓


0281nobodyさん04/09/07 22:54ID:???
>>278
PHP:
$str = "3SHRUNYAXA";
print strtr(\$str,"AIUEO", "aiueo"), " ", $str;

Perl:
$str = "3SHRUNYAXA";
print $str =~ tr/AIUEO/aiueo/ . " " . $str;

どちらも3 3SHRuNYaXaと表示。
028225904/09/08 00:54ID:mcKNZ5q4
>>270,271
有難うございます。

って、全部英語なんですね・・・ 読めません(w;
0283nobodyさん04/09/08 01:43ID:???
( -д-)=3 ハァ〜
0284nobodyさん04/09/08 05:39ID:???
>>282
お前はぴゅう太でも使ってろ
0285nobodyさん04/09/08 08:57ID:???
ぴゅう太てなんすか。
0286nobodyさん04/09/08 09:00ID:???
日本語Gベーシック(・∀・)イイ!!
0287nobodyさん04/09/08 09:17ID:???
>>285 オワリ
0288nobodyさん04/09/08 12:26ID:???
>>285
pythonのことだよ
0289nobodyさん04/09/08 21:38ID:bxg/BX6l
指定したテキストファイルに記載してある
aaa@hotmail.com
bbb@yahoo.co.jp
・・・
などのメールアドレスを読み込ませて、
一致しなければ、”未登録です”と表示させたいのですが、
ファイルに登録してあるメールアドレスも未登録だと表示されてしまいます。
もう半日以上いろんなサイトを見ながら試行錯誤していますが、
一向に解りませんでした。
どなたかご教授ください。


#メールアドレスの登録チェック
$a=0;
open(IN,"$mailfile") || &error("Open Error: $mailfile");
while (<IN>) {
($eml) = split(/\n/);
if ($in{'eml1'} ne $eml) { $a++; last; }
}
close(IN);

if ($a) {
&error("$in{'eml1'}は未登録です。");
0290nobodyさん04/09/08 21:44ID:???
>>289
ne → eq
if ($a) → if (!$a)
029128904/09/08 21:53ID:bxg/BX6l
>>290

素早いレスありがとうございます!
長時間悩んでいた自分が馬鹿でした・・・orz
0292nobodyさん04/09/09 00:28ID:???
&uho;と&uho();は全く同じですか?
0293nobodyさん04/09/09 00:29ID:???
意味不明
0294nobodyさん04/09/09 00:37ID:???
292で言いたかったのは、
引数が空なのにわざわざ()を付ける意味はあるんですか?
()は書いても書かなくても同じですか?
ということです。
0295nobodyさん04/09/09 00:51ID:???
コードの見易さが全然違う。
0296nobodyさん04/09/09 00:53ID:???
レスありがとうございます。
納得しました。
0297nobodyさん04/09/09 02:56ID:???
>>292-296
挙動も違うがな。
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlsub.html
0298nobodyさん04/09/09 08:53ID:???
&foo(); # 空リストを渡す
&foo;  # &foo(@_) と同じ

よって、&foo ≠ &foo()
0299nobodyさん04/09/09 17:36ID:wkS7yjyl
時間について質問
$tim = time;
で$timに「1094716247」といった10桁の数字が入りますが
この数字の内訳(? というかしくみを教えて欲しい・・・

やりたいことは
$dat = date('Y.m.d H:i', time());
で$datに入る「2002.09.09 15:00」といった文字列を
上の10桁の数字に変換することなのですが。
おねがいします。
0300nobodyさん04/09/09 17:40ID:???
>>299
ttp://x-web.pobox.ne.jp/fcgi/fcgi_07.html
0301nobodyさん04/09/09 17:56ID:???
>>299
localtimeの逆をやりたいなら
use Time::Localをしてtimelocal関数を使う
0302nobodyさん04/09/09 21:24ID:???
テスト的に作ったtimelocalもどき。もっとマシなロジックにしたいのぉ。
sub timelocal {
my ($sec,$min,$hour,$day,$mon,$year) = @_;
my @month = (31,28,31,30,31,30,31,31,30,31,30,31);
$year += int($mon/12); $mon = $mon%12; $hour -= (localtime(0))[2];
my $days = -719162;
$year += 1899; $days += $year*365 + int($year/4) - int($year/100) + int($year/400);
++$year; if ($mon > 1 && (!($year%400) || (!($year%4) && ($year%100)))) {++$days}
while (--$mon >= 0) {$days += $month[$mon]}
$days += $day-1;
return((($days*24+$hour)*60+$min)*60+$sec);
}
0303nobodyさん04/09/09 22:12ID:???
>>302
ばぐハケーン!!
0304nobodyさん04/09/09 22:13ID:???
>>302
うんうん、見ただけで使いたとは思わなくなる。
0305nobodyさん04/09/09 22:16ID:???
コード読む気にもナラネ
0306nobodyさん04/09/09 23:32ID:???
>>303=>>304=>>305?
0307nobodyさん04/09/09 23:39ID:???
>>302=>>306
煽られたからってそう怒らないでね
0308弱杉04/09/10 03:32ID:+ZeQb9+r
(ここへの書き込みとしてふさわしいかは分らないのですが...)
perl (ver.5.00503)で、特定デレクトリを丸ごと圧縮(zipかlzhが希望)する必要が在り調べたのですが、
Archive::zipというモジュールが必要らしいと分りました。
しかし、このスクリプトの置き場所はレンタルサーバ(ア_ル)で、モジュールの追加インストールが出来ません。
zipもしくはlzh圧縮が可能なライブラリって無いでしょうか?
ご存知の方がいらっしゃったら教えていただけると大変、大変助かります。
どうぞよろしくお願いします。
(この質問はモジュール板の方が適切なのでしょうか? それさえも分らんのデス...)
0309nobodyさん04/09/10 04:27ID:???
Archive::zipはデフォルトでperlに入っているようだが。
0310弱杉04/09/10 04:49ID:+ZeQb9+r
鯖内のモジュールの検索したんですが見当たりませんでした。。。
ア_ルから、ちょっと前にもらったモジュール一覧にも入ってなかったでんす。
私の勘違いでしょうか。。。
0311nobodyさん04/09/10 05:24ID:???
>>309
ActivePerl Build 810 (5.8.4 相当) なら入っているが、Build 522
(5.005_03 相当) には入っていないし、(素の) Perl ではどのヴァージョン
でも入っていない。ActivePerl 系でも lib/ の方ではなく site/lib/ の
方に入っているから標準モジュールでないと分かる。
http://perl.infoware.ne.jp/documents.html

>>310
Archive::Zip 自体は Pure Perl なモジュールだからコピーすればいいが、
中で非標準モジュール且つ要コンパイルの Compress::Zlib を使っている。
サーバに用意されていなければこれを Compress::Zlib::Perl に置き換え、
必要なモジュール一式を任意のディレクトリに置いて使えばいい。

もしくは、サーバに zip や lha がインストールされているなら system() で
呼ぶ方が楽だろう。
http://perldoc.com/perl5.8.4/pod/func/system.html
0312299 04/09/10 11:56ID:???
>>300-302
最初のリンク参考になりました。
自分にはまだ難しすぎるようです・・・
他の方法を考えます。
ありがとうございました。
0313nobodyさん04/09/10 12:07ID:???
>>312
数字(秒数)のまま扱うってこともあり。
2chのスレNoみたいに。
0314nobodyさん04/09/10 12:19ID:???
>>312
>>301が答えを書いてるじゃん
0315nobodyさん04/09/10 13:50ID:???
>>299
Time::ParseDate使えば一発だよ。

use Time::ParseDate;
print parsedate("2002.09.09 15:00");
0316弱杉04/09/10 19:31:54ID:+ZeQb9+r
>>311

お返事ありがとうございます&カメレスですんませんです。
Archive::Zipで必要とされているモジュールで、やはりCompress::Zlibのみありませんでした。
そこで、Compress::Zlib::perl ver.0.02 (不安なバージョンですが..)をCPANからDLしました。
でも、解凍するとMakefile.PLとかPerl.pmとかが入っていてそこでお手上げです...(レンタル鯖しかいじった事無い厨なので、Makeとか分らんのです)
Zip.pmとcompress_zip.pm(?) を置いて、Zip.pmからuseの代わりにrequireするだけとか勘違いしてました。
Compress::Zlib::perlはMake(?)しないとライブラリファイルにはならないのでしょうか?

また、鯖内のコマンド検索をしたら、gzipというのがは使えるみたいですが(pathは /usr/bin/gzip)、これは通信時の圧縮専用のものでアーカイブを作るのには使えないのでしょうか?

引き続きご指南いただければ幸いです。宜しくお願いします。
0317nobodyさん04/09/10 20:20:41ID:???
>>316
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlmod.html
http://www.linux.or.jp/JM/html/GNU_gzip/man1/gzip.1.html

ちなみに gzip は Windows や Mac で良く使われる ZIP (PKZIP)
とは別形式。圧縮のみを担当し、複数ファイルをまとめる
(アーカイヴ) 機能は無いので、tar と連携させる事が多い。
Perl と関係ないので詳しくは余所で尋ねて。
0318弱杉04/09/10 20:46:34ID:+ZeQb9+r
>>317
お返事ありがとうございます。gzipに関しては参考URLで理解出来ました。
もう一点の『perlでのzipアーカイブの作成方法』についても
余所で訪ねた方がよろしいでしょうか?(モジュール関連スレとかに行けばよろしいですか?)

いちいちつまらん質問ですみません。。。
0319nobodyさん04/09/11 02:24:58ID:???
Perlモジュールについて
http://pc5.2ch.net/test/read.cgi/php/997829243/

CGIに依存しないPerlの話題一般/Part2
http://pc5.2ch.net/test/read.cgi/php/1030548610/
0320弱杉04/09/11 02:38:55ID:cyd1fAb1
>>319

ご指南ありがとうございました。そちらの板にいってきます。
スレ汚し、大変失礼しました。
0321nobodyさん04/09/11 05:03:25ID:???
失礼します。クッキーを用いて、入力したフォームの情報を一時記憶させようと思っています。
しかし、以下のソースだと何故かクッキーには書き込まれるのにフォームに既入力の状態になりません。
何がおかしいのか見ていただけないでしょうか?一つ目のソースはこれです。

$cookie_id = 'regist';
&get_cookie();
$name = $cookie{ 'name' };

print "<meta http-equiv='Content-Type' content='text/html; charset=Shift_JIS'>\n\n";

print <<"HTML_TAG";

<html><head></head><body>

<Form action="registration.cgi" method="POST">
<table width="600">
<tr><td><input type="text" name="name" size="20" value="$name"><input type="submit" name="regist" value="確認画面"></td></tr>
</table>
</FORM>
</body>
</html>
0322nobodyさん04/09/11 05:03:54ID:???
HTML_TAG

sub get_cookie {
my( $cookie_name, $value );
foreach ( split( /; /, $ENV{ 'HTTP_COOKIE' } ) ) {
( $cookie_name, $value ) = split( /=/ );
$cookies{ $cookie_name } = $value;
}
foreach ( split( /&/, $cookies{ $cookie_id } ) ) {
( $cookie_name, $value ) = split( /:/ );
$cookie{ &unescape( $cookie_name ) } = &unescape( $value );
}
}

sub unescape {
my( $data ) = @_;
$data =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1) )/ge;
return $data;
}
exit;
0323nobodyさん04/09/11 05:04:18ID:???
HTML_TAG

sub get_cookie {
my( $cookie_name, $value );
foreach ( split( /; /, $ENV{ 'HTTP_COOKIE' } ) ) {
( $cookie_name, $value ) = split( /=/ );
$cookies{ $cookie_name } = $value;
}
foreach ( split( /&/, $cookies{ $cookie_id } ) ) {
( $cookie_name, $value ) = split( /:/ );
$cookie{ &unescape( $cookie_name ) } = &unescape( $value );
}
}

sub unescape {
my( $data ) = @_;
$data =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1) )/ge;
return $data;
}
exit;
0324nobodyさん04/09/11 05:05:28ID:???
二つ目のソースはこれです。ここで、クッキーに書き込みはされるのですが、一つ前に戻ると
クッキーには確かに情報が入っているにもかかわらず、テキストボックスには何も表示されません…。

require "./sub_getparam.pl";# データ取得用サブルーチン
require 'jcode.pl';

$cookie_id = 'regist';

read( STDIN, $query, $ENV{ 'CONTENT_LENGTH' } );
&getparam( $query );

$name = $param{ 'name' };
$cookie{ 'name' } = $name;
&set_cookie();

print "<meta http-equiv='Content-Type' content='text/html; charset=Shift_JIS'>\n\n";

print <<"END";

<html><head></head><body>

<p><B><font color="red">内容を確認してください。</font></B></p>

<Form action="registration_complete.cgi" method="POST">
<table><tr><td>名前</td><td>$name</td></tr></table>
<input type="hidden" name="name" value="$name">
</form></BODY></HTML>

END
0325nobodyさん04/09/11 05:06:02ID:???
sub set_cookie {
my( $new_cookie, $date );

@pairs = ();
foreach( sort keys %cookie ) {
push( @pairs, &escape( $_ ).":".&escape( $cookie{ $_ } ) );
}
$new_cookie = join( '&', @pairs );
$date = &gmt_date( time + 86400 * 120 );
if ( $new_cookie ne $cookies{ $cookie_id } ) {
print "Set-Cookie: $cookie_id=$new_cookie; expires=$date\n";
}
}


sub escape {
my( $data ) = @_;
$data =~ s/(\W)/sprintf( "%%%02X", unpack('C', $1 ) )/ge;
return $data;
}

sub gmt_date {
my( $data ) = @_;
( $sec, $min, $hour, $day, $mon, $year, $wday ) = gmtime( $data );
return sprintf( "%s, %02d %s %04d %02d:%02d:%02d GMT",
( Sun, Mon, Tue, Wed, Thu, Fri, Sat )[ $wday ], $day,
( Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec )[ $mon ],
$year + 1900, $hour, $min, $sec );
}
exit;
0326nobodyさん04/09/11 05:07:00ID:???
sub set_cookie {
my( $new_cookie, $date );

@pairs = ();
foreach( sort keys %cookie ) {
push( @pairs, &escape( $_ ).":".&escape( $cookie{ $_ } ) );
}
$new_cookie = join( '&', @pairs );
$date = &gmt_date( time + 86400 * 120 );
if ( $new_cookie ne $cookies{ $cookie_id } ) {
print "Set-Cookie: $cookie_id=$new_cookie; expires=$date\n";
}
}


sub escape {
my( $data ) = @_;
$data =~ s/(\W)/sprintf( "%%%02X", unpack('C', $1 ) )/ge;
return $data;
}

sub gmt_date {
my( $data ) = @_;
( $sec, $min, $hour, $day, $mon, $year, $wday ) = gmtime( $data );
return sprintf( "%s, %02d %s %04d %02d:%02d:%02d GMT",
( Sun, Mon, Tue, Wed, Thu, Fri, Sat )[ $wday ], $day,
( Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec )[ $mon ],
$year + 1900, $hour, $min, $sec );
}
exit;
0327nobodyさん04/09/11 05:10:00ID:???
>>321
長杉。
0328nobodyさん04/09/11 05:24:21ID:???
age
0329nobodyさん04/09/11 05:45:52ID:???
え〜と、、、
ソースを見ずにレス。
(´-`).。oO(見る気がおきねーよ)

「一つ前に戻ると」と書いてある。
つまりキャッシュされたページを見てると…
0330nobodyさん04/09/11 09:03:38ID:???
(;゚Д゚)
0331nobodyさん04/09/11 09:30:58ID:???
くっきー発酵と同一セッションで読み込んでんじゃねーの?
ソースみてないから推測だが
0332nobodyさん04/09/11 10:37:18ID:???
CGI.pm使って書き直してダメならもう一回来い
0333nobodyさん04/09/11 11:28:31ID:???
本当にクッキー読み込めているのか?
値を取り出して表示させるとか切り分けしてみ。

読む気にならんからこんなとこだな。
0334nobodyさん04/09/11 19:54:24ID:3nx87n19
Perlのバージョンは4.0.1.8です。バージョンが古い為なのか、
以下の様なsprintfを含んだスクリプトが使用できずエラーと
なってしまいます。どなたか、Perlの環境は変えずに、代わり
となるスクリプトがあれば教えて頂けませんか?

&SUB(sprintf "%02", $a - 1);

sub SUB{
  my $value = shift @_;
  system "$SHELL_COMMAND $value";
}
0335nobodyさん04/09/11 19:58:22ID:3nx87n19
>>334です。

すいません。スクリプトが間違えていました。

&SUB(sprintf "%02d", $a - 1);

sub SUB{
  my $value = shift @_;
  system "$SHELL_COMMAND $value";
}

0336nobodyさん04/09/11 20:06:17ID:???
( )
0337nobodyさん04/09/11 20:41:24ID:3nx87n19
>>334です。

何度もすいません。335のコメントが紛らわしかったので
再度書き込みました。
335で書いたスクリプトが正しいのですが、それでもエラーと
なっていますので、どなたか、代替のスクリプトがありましたら
教えて下さい。宜しくお願いします。
0338nobodyさん04/09/11 20:45:06ID:???
my
0339nobodyさん04/09/11 21:00:41ID:???
>>334はマルチポストだってよ
0340nobodyさん04/09/11 22:07:01ID:???
あっさり解決か
0341nobodyさん04/09/11 23:10:45ID:???
>337
>>336
034233404/09/11 23:32:18ID:3nx87n19
>>336,338
レスありがとうございました。
本日確認出来ない為、後日試してみます。
0343nobodyさん04/09/12 15:18:14ID:???
>>342
死んでくれないか?
0344nobodyさん04/09/12 15:22:58ID:???
>>343
お前がな
0345nobodyさん04/09/12 15:42:52ID:???
>>344
お前もな
0346nobodyさん04/09/12 15:57:45ID:???
>>345=>>343
必至だなw
0347nobodyさん04/09/12 16:17:53ID:???
自演と言い始めるやつが自演
0348nobodyさん04/09/12 16:29:06ID:???
>>344=>>342=>>334
0349nobodyさん04/09/12 18:00:56ID:???
>>348=>>345=>>343
0350nobodyさん04/09/12 18:47:25ID:???
まじめに答えてくれる人に申し訳ないんでもうやめないか?
0351nobodyさん04/09/12 18:51:08ID:???
調子に乗って暴言吐いたのはマジですまんかった
0352nobodyさん04/09/12 22:28:31ID:???
お前毎回すまんかっただろ
誤ればなんでもどうにかなると思ってるのか?
0353nobodyさん04/09/12 23:56:57ID:???
>>334はマルチポスト
0354nobodyさん04/09/13 01:06:09ID:???
掲示板を作っていまして、書き込みdataファイルに体裁用のhtmlタグも入れて、ブラウザから読み出すだけにしたいのですが、
新しいものを上に書くには、書き込み時に、まずファイルの内容を変数にいれ、その書き込みの内容をファイルに上書きした後追加でそれ以前のを書くしか方法はないですか?

あと、こちらはブラウザから直読みじゃないのですが、ファイルの上から何行を読む、正規表現でマッチしたところだけを読むにはどうすればよいのでしょうか?

よろしくお願いしますm(_ _)m
0355nobodyさん04/09/13 06:06:04ID:???
-
↑のハイフンってハッシュのキーに使えますか?頭文字にはできないのは知ってますが、
2文字目以降にも使えないんですか?
0356nobodyさん04/09/13 06:17:06ID:???
>>354
考え方は一緒だが
open LOCK, '>' . $lock_file or die $!;
flock LOCK, 2;
open LOG, '<' . $log_file or die $!;
open TEMP, '>' . $tmp_file or die $!;
print TEMP $new_article;
print TEMP <LOG>;
close TEMP;
close LOG;
rename $tmp_file => $log_file or die $!;
close LOCK;

>>355
my %hash = ('-' => 'foo', -a => 'bar', '-a-' => 'baz');
print @hash{'-', '-a', '-a-'};
035735504/09/13 07:34:16ID:???
>>356
あれ?使えた・・・・;
-が初めか最後の時にはクォートしなきゃいけなかったのか;
それが面倒であまり使われてないんですかね?それとも他にも何かの処理中に面倒なことが
起こる可能性があったりするんですか?
035835504/09/13 07:36:22ID:???
a-aもクォートがいるのか・・・・orz
0359nobodyさん04/09/13 07:52:35ID:???
クォートがいるのではなくクォートがなくても動くと言った方が正しいと思うが。
0360nobodyさん04/09/13 08:09:58ID:???
なんでクォートごときでそんなにへこむんだよ。
文字列をクォートするのはどんな言語でも当たり前のことだろうに。
036135504/09/13 09:29:42ID:???
>>359

%form = ( a-a => 1 );
エラーになる。use strict環境下だからかもしれないけど。
>>360
通販サイトのCGIだから商品名、商品価格とか色々商品番号をキーとしたハッシュを作る時に
いちいちクォートを入れてると見づらいし、書きづらいorz
ハイフンなしでもいいがCSV形式に変換して落とす時にいちいちハイフンを追加するのもちょっと億劫orz

Perlって結構自由?ゆるい?からマルチバイトかメタ文字以外でクォートすることはないんだorz
だって面倒でしょ。JAVA畑の人は慣れてるかもしれないけどさ。
036235504/09/13 09:30:13ID:???
my %form = ( a-a => 1 );
の間違いね。
0363nobodyさん04/09/13 09:33:33ID:aK+3swHZ
Perl5.8.5をソースからインストールしようとしたとき、
「あなたのメアドは?」って聞かれたのですが、
これって何に使うのでしょうか?
0364nobodyさん04/09/13 09:40:05ID:???
>>363
請求書を送るために
0365nobodyさん04/09/13 09:42:28ID:???
>>363
>>364が言うように請求書が来るが、先払いも可能だよ。クレジット決済でやるのがまあ普通だね。
昔俺はメアドだけなら払わずに無視してもどこの誰だかわからないだろうと思っていたが、
IP+メアドで実は十分個人を特定できるようだ。(もちろん裁判所に申請して住所などの情報を調べる許可を得るみたいだが。)
0366nobodyさん04/09/13 09:49:56ID:???
>>365
たかが86.00$なんだから素直に払えよボケ。
0367nobodyさん04/09/13 09:57:23ID:???
>>361
細かいことを気にしないなら

my %form = qw{
a-a 1
b-b 2
};

とか。

0368nobodyさん04/09/13 10:01:53ID:???
>>363
バグレポートを送ったりそのバイナリをビルドしたPerl管理者に連絡を取りたかったりした時とか。
Perlが勝手にそのアドレスを使うことはない。(アプリが勝手に使うことはあるかもしれないが)
気になるならfoo@example.comにでもしておけ。

>>364-366 悪質な冗談はやめとけ
0369nobodyさん04/09/13 11:45:33ID:???
データから、カンマを取り除いた数値のみを切り出したいんですけど

if ($key eq 'log'){
$val =~ s/\,//;
if ($val =~ m/[0-9,]{1,10}/){
$number = $val;
}
}

ではうまくいきません。どの辺がおかしいかご教授願います。
0370nobodyさん04/09/13 11:48:54ID:???
>>369
$val =~ s/\,//;
にgオプションつけるとか?
0371nobodyさん04/09/13 12:28:08ID:???
ダメです カンマの前しか取得されません・・・
0372nobodyさん04/09/13 13:00:27ID:???
元のデータは123245,6789,4567,みたいなの?
そこから123245と6789と4567を別々に取り出したいの?
それとも12324567894567て続けて?
0373nobodyさん04/09/13 13:01:37ID:???
こんな感じか?

my $val = "datadata1,234,567datadata....,456,789";
my @tmp = $val =~ /(\d{1,3}(?:,\d{3})*)/g;
foreach (@tmp){
$_ =~ s/,//g;
print "$_\n";
}
0374nobodyさん04/09/13 13:02:42ID:???
XXXX:1234,5677 みたいな形で
12345677 てカンマだけを抜かした形で取得したいす
0375nobodyさん04/09/13 13:06:15ID:???
じゃあね。
>>370の言うとおり。
if ($key eq 'log'){
$val =~ s/,//g;
$number = $val;
}
0376nobodyさん04/09/13 13:06:27ID:???
>>368
>>364-366 悪質な冗談はやめとけ
^^
0377nobodyさん04/09/13 13:20:51ID:???
>>363-366>>368
スレ違い
0378nobodyさん04/09/13 13:53:22ID:???
意見のすれ違いがおおいね・・・。
0379nobodyさん04/09/13 14:45:23ID:Dm3Qguqc
$a
が数値かどうかを判定するいい方法Plz。
0380nobodyさん04/09/13 14:48:19ID:???
$a =~ /^\d+$/
038137904/09/13 14:56:19ID:Dm3Qguqc
>380
その意味を理解するのに手間取ってしまいました。
if($a =~ /^\d+$/){
#数値
}
ですね、ありがとうございました。
0382nobodyさん04/09/13 15:04:53ID:???
>>380-381
$aが負の場合にうまくいかんと思うが。
0383nobodyさん04/09/13 15:07:36ID:???
>>380-381
$aが小数点ついてる場合にうまくいかんと思うが。
0384nobodyさん04/09/13 15:18:42ID:???
>>382-383
うまくいく例を教えたれや
0385nobodyさん04/09/13 15:23:13ID:???
>>384
それが分かったらワテも苦労せん
0386nobodyさん04/09/13 15:43:56ID:???
コレでいけるんでないかな
http://www.mamiyami.com/document/perl_cookbook_2nd_edition/0596003137_perlckbk2-chp-2-sect-1.html
0387nobodyさん04/09/13 16:22:04ID:???
my @vals = qw/5.88 -50 300 s51 51s/;

foreach (@vals){
if($_ eq $_-0){
print "$_ = Number\n";
}
}

どう?
0388nobodyさん04/09/13 16:42:01ID:???
警告を気にしない場合にはいいんじゃないの?
0389nobodyさん04/09/13 16:46:28ID:???
>>388
警告でます?
0390nobodyさん04/09/13 16:51:18ID:???
>>361
bare word として許されるのは [A-Za-z]\w* にマッチする文字列のみ。
これに加え単項演算子としての - を bare word の頭に付ける事ができる。

<q cite="http://perldoc.com/perl5.8.4/pod/perlop.html#Symbolic-Unary-Operators">
Otherwise, if the string starts with a plus or minus,
a string starting with the opposite sign is returned.
One effect of these rules is that -bareword is equivalent
to "-bareword".
</q>

=> 演算子は左辺の (- が頭に付くものも含めた) *bare word を*
クォートしてくれるが、何でもかんでも文字列リテラルにしてくれる
わけではない。
0391nobodyさん04/09/13 17:02:59ID:???
>>388
use warningsすると出る。

Argument "s51" isn't numeric in subtraction (-) at numberp.pl line 6.
Argument "51s" isn't numeric in subtraction (-) at numberp.pl line 6.
0392nobodyさん04/09/13 17:06:02ID:???
>>390 =~ s/\[A-Za-z\]/[A-Z_a-z]/;
0393nobodyさん04/09/13 17:34:07ID:nbuBgplM
ショッピングカートで現在のカゴの中身を表示するのに、
クッキーやファイルを使わないでする方法は無いですか?
0394nobodyさん04/09/13 17:49:54ID:???
>>393
スレ違い
http://pc5.2ch.net/test/read.cgi/php/1086715675/l50
0395nobodyさん04/09/13 17:54:31ID:???
>>393
コーディングと関係ないじゃんかよ
0396nobodyさん04/09/13 19:55:34ID:???
m/^[-+]?\d+(.\d+)?$/
0397nobodyさん04/09/13 20:01:22ID:UGDBY8bj
訂正
m/^[-+]?\d+(\.\d+)?$/
0398nobodyさん04/09/13 20:17:50ID:???
n進数や指数付きの数値はどうすんのよ?
0399nobodyさん04/09/13 21:08:13ID:ZFdPbvGg
外部からのdatファイルを読み込むサブルーチンが働きません。
何十回も関数リファレンスや講座サイトを見比べても、どこが悪いのかがわかりません。
ちなみに、下記のコードの結果、$cs_xの値が-1になりました。$st_ffで出るパスは正しいです。
もしよろしければ教えて頂きたいなと思います。

sub st{
    open(IN,"$st_ff") || &error("stファイルが見つかりません"); # $st_ff はstファイルの位置(相対パス)
    @st_d = <IN>;
    close(IN);
    $i=0;
    foreach (@st_d){
        ($name,$c_no,$hp,$lov,$his,$age) = split(/<>/);
        $c_status[$i] = [$name,$c_no,$hp,$lov,$his,$age];
        $i++;
    }
    $i--;
    $cs_x = $i; # $cs_xは元データ(st)の行数を出す・チェック用
}
0400nobodyさん04/09/13 21:13:27ID:???
数値のマッチングも満足にできないおまいらって・・・・・カコイイね。
0401nobodyさん04/09/13 21:17:01ID:???
>>399
-1になってるならforeachが一度も処理されてないってことだろ。
foreach前に
print @st_d;
でも加えて確認してみ?
0402nobodyさん04/09/13 21:39:15ID:???
>>401
考えてみたらそうですね。
エラーメッセージが出ないので大丈夫と先入観を持ってました。(ちなみに、ファイル名を変えて、エラーが出るのは確認しました。)
ちなみに@st_dは無表示なので、1〜3行内に間違いがありそうです。
レベル低すぎる質問って自覚したので精進して出直して、ここにお世話にならないように頑張ります。
失礼しました。
0403nobodyさん04/09/13 21:47:46ID:???
>>402
俺の環境では動いたぞ
全然問題無い
しいて言うならchompしとけってくらいかな
0404nobodyさん04/09/13 21:51:51ID:???
$c_status[$i] = [$name,$c_no,$hp,$lov,$his,$age];

本当にわかっていてこうしているのか甚だ疑問なんだが
0405nobodyさん04/09/13 21:57:42ID:???
>>399
いちいち$iとか使わないで、

push @c_status, ほげほげ

とやる方がらくちんだよ。最後の$cs_xも、@c_statusの
大きさで読み込んだ行数わかるから冗長。

0406nobodyさん04/09/13 21:58:08ID:???
えっと、テストするファイルを間違えたみたいでした。
改変前のコピーを取っておいたフォルダで試してました。
本気で申し訳ありません。

>>404
それは後のサブルーチンで、$c_status[$i][$j]みたいなかんじで使おうと思って。
何か他にいい方法があれば教えていただけますか?
0407nobodyさん04/09/14 03:26:57ID:???
>>406
オブジェクト指向
0408nobodyさん04/09/14 05:51:54ID:???
日本語文の中から最頻出単語を選ぶにはどうしたら良いのでしょうか。
英文と違ってスペースで区切られていないので、どこからどこまでが
単語か判断できないのですが…
0409学生のときは語学屋でした04/09/14 06:17:42ID:???
>>408
「あの犬ちゃうちゃうちゃう?」
「ちゃうちゃうちゃう、ちゃうちゃうちゃう!」
「えー、ちゃうちゃうちゃう?ちゃうちゃうちゃうん?」
「ちゃうちゃうちゃうんって、ちゃうちゃうちゃうんとちゃうん?」
「ちゃうちゃうちゃうんとちゃうんって、ちゃうちゃうちゃうんな?」

分節してみてください。
人間が「どう分節するか」を定義できなければ、プログラムは分節できませんよ。

便利なモジュール等があるかどうかはともかくとして。
0410nobodyさん04/09/14 06:20:04ID:???
>>408
ググってすぐ出たのはこのあたり。
ttp://kakasi.namazu.org/
ttp://chasen.naist.jp/hiki/ChaSen/

もしくは...「漢字を含む2文字以上」の全てのパターンを網羅するとか。
ハッシュだとファイルサイズの十数倍食いそう。
0411nobodyさん04/09/14 06:58:37ID:???
ちゃうちゃうちゃうちゃうちゃう・・・?_?
0412nobodyさん04/09/14 07:04:12ID:???
>>408
ぱんつくったよ

分節してみてください。
0413nobodyさん04/09/14 15:39:19ID:NAYEHf5j
初級質問失礼します
test.cgiというCGIで、?mode=viewの時viewのサブルーチンに
切り替えたいのですが、リンクを押してもindexの部分が表示されます
---
$mode = $in{'mode'};
if ($mode eq "view") { &view; }
&index;
sub index {
print "<a href=\"test.cgi?mode=view\">テスト</a>\n";
}
sub view {
print "this is a view\n";
}
---
すいませんがお願いします
0414nobodyさん04/09/14 15:40:56ID:???
>>413
当たり前だ
よく見てみろ
0415nobodyさん04/09/14 15:48:22ID:???
>>413
exitするかmodeに何もなかったらindexと設定
0416413 04/09/14 15:57:35ID:NAYEHf5j
>>415
elseif ($mode eq "") { &index; }
としても、サブルーチンの最後にexit;つけても駄目でした。
前者ではindexも表示されなくなってしまいました。
0417nobodyさん04/09/14 16:02:26ID:???
釣りお疲れさん
0418nobodyさん04/09/14 16:07:03ID:???
>>416
当たり前だ
よく見てみろ
041941304/09/14 16:09:01ID:NAYEHf5j
>>418
見ればいい場所を教えてください
0420nobodyさん04/09/14 16:24:05ID:???
>>419
indexだけで「Content-Type:」〜「</HTML>」までprintしてるんでしょ?
ヘッダーとかを別のサブルーチンにしてないならindex内で分岐しなきゃ。
0421nobodyさん04/09/14 16:30:19ID:???
elseif
042241304/09/14 16:45:28ID:NAYEHf5j
>>420
すいませんindex内で分岐の意味が・・・。
sub index {
$mode = $in{'mode'};
if ($mode eq "view") { &view; }
print "<a href=\"test.cgi?mode=view\">テスト</a>\n";
}
こういうことじゃないですよね?動きません(TT)
CGIは
#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print "<html><body>\n";

print "</body></html>\n";
です。<html></html>タグの行はさっき付け足しました。
0423413 04/09/14 16:46:11ID:???
>>421
elsifでした。でも動かず・・・
0424nobodyさん04/09/14 17:12:57ID:???
$mode = $in{'mode'};
if ($mode eq "view") { &view; }
&index;
sub index {
print "<a href=\"test.cgi?mode=view\">テスト</a>\n";
}
sub view {
print "this is a view\n";
exit; #←★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
}
0425nobodyさん04/09/14 17:14:37ID:???
釣りじゃなかったの?こうしたら?

#!/usr/bin/perl
require 'cgi-lib.pl';
$mode = $in{'mode'};
if ($mode eq "view") { &view; }
elsif ($mode eq "") { &index; }
sub index {
print "Content-Type: text/html\n\n"; #次に一行開けなけりゃだめ

print "<html><body>\n";
print "<a href=\"test.cgi?mode=view\">テスト</a>\n";
print "</body></html>\n";
}
sub view {
print "Content-Type: text/html\n\n"; #次に一行開けなけりゃだめ

print "<html><body>\n";
print "this is a view\n";
print "</body></html>\n";
}
0426nobodyさん04/09/14 17:21:46ID:???
おい、どうなんだ?
最初、elsifがないからいつもindexが実行されてた。
次に、だめだったのは、content-type出力しなかったから。
というお粗松くんじゃないのか?
0427nobodyさん04/09/14 17:35:55ID:???
>#次に一行開けなけりゃだめ
なんだりゃ・・・
042841304/09/14 17:36:16ID:NAYEHf5j
>>424
>>425
いずれも駄目なのですが・・・(TT)なぜでしょう!?
後者は
require 'cgi-lib.pl';
の行は削除してコピペしました(エラーが・・)
0429nobodyさん04/09/14 17:40:57ID:???
>>425
紛らわしいので念のため言っておくと
>print "Content-Type: text/html\n\n"; #次に一行開けなけりゃだめ
># ここに空行を作るんじゃなくて  ~~改行2個で空行ができてる

>>428
ちょっと確認
クエリ無ければindexを表示するのはわかったけど、
mode=viewならindex+"this is a view"?
それとも"this is a view"だけ表示?
0430nobodyさん04/09/14 17:43:53ID:???
>>428
ちょっと確認
mode=hogeなら?
0431nobodyさん04/09/14 17:54:55ID:???
>print "Content-Type: text/html\n\n"; #次に一行開けなけりゃだめ

ワロタ
0432nobodyさん04/09/14 17:58:23ID:???
ソース全体晒せやヴォケ
0433nobodyさん04/09/14 17:59:19ID:???
>>430
「次に一行開けなけりゃだめ」と出力されます
043441304/09/14 18:03:13ID:NAYEHf5j
>>429
>mode=viewならindex+"this is a view"?
>それとも"this is a view"だけ表示?

this is a viewだけ表示です。
ページを切り替えるような感じで。
043541304/09/14 18:11:36ID:???
>>432
いくつもやりましたがとりあえず駄目その1です(test.cgi)

#!/usr/bin/perl
$mode = $in{'mode'};
if ($mode eq "view") { &view; }
elsif ($mode eq "") { &index; }
sub index {
print "Content-Type: text/html\n\n"; #次に一行開けなけりゃだめ

print "<html><body>\n";
print "<a href=\"test.cgi?mode=view\">テスト</a>\n";
print "</body></html>\n";
}
sub view {
print "Content-Type: text/html\n\n"; #次に一行開けなけりゃだめ

print "<html><body>\n";
print "this is a view\n";
print "</body></html>\n";
}
0436nobodyさん04/09/14 18:14:25ID:???
$inはどこの世界からやってきたのでしょう(メルヘン
0437nobodyさん04/09/14 18:14:42ID:???
Content-typeはPerlのパスの下に書いたら?2回書くのマンドクセ
0438nobodyさん04/09/14 18:16:32ID:???
>>436
コリン星からやってきたのです
0439nobodyさん04/09/14 18:16:42ID:???
>>435
フォームデコードは?
0440nobodyさん04/09/14 18:18:27ID:???
#!/usr/bin/perl
$|=1;
print "Content-Type: text/html\n\n";
require 'cgi-lib.pl';
&ReadParse(\%in);
if($in{'mode'} eq 'view'){ &view();}
&index();
sub index {
print "<html><body>\n";
print "<a href=\"test.cgi?mode=view\">テスト</a>\n";
print "</body></html>\n";
}
sub view {
print "<html><body>\n";
print "this is a view\n";
print "</body></html>\n";
exit(0);
}
exit(0);
044141304/09/14 18:36:18ID:NAYEHf5j
>>440
エラーが出ます。

require 'cgi-lib.pl';
&ReadParse(\%in);

これをコメントアウトするとエラーは出ませんが、動作変わりません。
cgi-lib.plの記述は必要なのでしょうか?
参考にしてるフリーCGIではどれも使われて無いので・・・
なんか長くなってすいません。
0442nobodyさん04/09/14 18:45:09ID:???
>>441
その2行で?mode=viewというクエリを変数に格納している。
PHPだといきなり変数に入ってるから惜しいと言えば惜しいのかも。
「クエリ GET POST」あたりでググって勉強したほうがいい。

#! /usr/bin/perl
print "Content-Type: text/html\n\n<HTML><BODY>";
if($ENV{'QUERY_STRING'} eq "view"){
print "this is a view";
}else{
print "<A href=\"test.cgi?view\">view</A>";
}
print "</BODY></HTML>";
0443nobodyさん04/09/14 18:45:30ID:???
つーか、お前はcgi-lib.plって何か知ってるか?
知らなかったらぐぐれ
0444nobodyさん04/09/14 18:46:14ID:???
PHPは
$_GETとかに勝手に入ってくれるけど、perlは自分でしないとだめだよ

require "./cgi-lib.pl";

&ReadParse(*in);
$hoge = "$in{'hoge'}";
044544004/09/14 18:46:39ID:???
>>441
いい加減にしろよ?w
ttp://cgi-lib.berkeley.edu/
ttp://www.futomi.com/lecture/form/cgilib.html
044644004/09/14 18:48:42ID:???
#!/usr/bin/perl
$|=1;
print "Content-Type: text/html\n\n";
($dust, $in{'mode'}) = split(/=/, $ENV{'QUERY_STRING'}, 2);
if($in{'mode'} eq 'view'){ &view();}
&index();
sub index {
print "<html><body>\n";
print "<a href=\"test.cgi?mode=view\">テスト</a>\n";
print "</body></html>\n";
}
sub view {
print "<html><body>\n";
print "this is a view\n";
print "</body></html>\n";
exit(0);
}
exit(0);
044741304/09/14 19:02:05ID:NAYEHf5j
>>442-446
442, 446で出来ました・・・!!
仰る通りクエリというのが解ってませんでした。
説明とリンクありがとうございました。
勉強します。
お手数おかけしました。><
0448nobodyさん04/09/14 19:39:03ID:???
>>447
cgi-lib.plにパスが通ってなかっただけだろ。
0449nobodyさん04/09/14 19:43:21ID:???
cgi-lib.plすら入れてなかったりして
0450nobodyさん04/09/14 19:45:48ID:???
今の時代にcgi-lib.plかよ
0451nobodyさん04/09/14 19:49:06ID:???
CGIもぢゅるとかダサい
0452nobodyさん04/09/14 20:13:40ID:???
クエリも理解してないお子様にはcgi-lib.plがお似合いだ
0453nobodyさん04/09/14 20:14:58ID:???
理解してなかったらもじゅる使わない方がいいと思うのだけども
0454nobodyさん04/09/14 20:25:49ID:???
>>452
理解して使ってる俺はお子様ですかそうですか。
0455nobodyさん04/09/14 20:39:44ID:???
mainルーチンで decode() とかやってる方がまぬけ
0456nobodyさん04/09/14 20:56:40ID:???
まぬけのinルーチン
0457nobodyさん04/09/14 21:53:20ID:IqNnzcu2
CGIでアクセス制限するサイトを作っていますが、
認証後のページを表示している段階では〜〜.cgiと表示されているのですが、
ページからリンクへ飛ぶとIDとPASSがURLに表示されてしまいます。
なんとかIDとPASSを表示させないような方法はないのでしょうか?


検索すると表示されないようにするにはセッション管理の方法がある
という事で調べています。
perlでセッション管理するには
ttp://www.atmarkit.co.jp/fsecurity/rensai/webhole03/webhole01.html
を見たところ
#!/usr/bin/perl
require 5.004;
use Digest::MD5 'md5_hex';
print md5_hex rAnd;

を加えればいいようなのですが、上手くいきません。
なかなか目的のページも見つからず途方にくれています。

どなたかご教授お願いします。
0458nobodyさん04/09/14 21:56:26ID:???
post
0459nobodyさん04/09/14 22:03:09ID:???
>>457
よく読め、そのページのどこにそれを加えれば
セッション管理ができるって書いてあるんだ?

ただ単に表示されないようにしたいだけなら>>458
0460nobodyさん04/09/14 22:12:08ID:???
cookieとかcookieとかcookie
0461nobodyさん04/09/14 22:20:56ID:???
@list = ('a','i','u','e','o');
foreach $a(@list){
print "$_ = $a\n";
}
上のように書いて期待する結果が
0 = a
1 = i...なんですが、、、
現在、何個目かという情報はどこかに入ってないんでしょうか。
いちいちカウントしてやらないとダメですか?
046245704/09/14 22:32:38ID:IqNnzcu2
>>459

POSTってform形式でしか使えないですよね?
認証後のページでは確かにPOST使うと表示されないのですが、
認証後のページの中のリンクをクリックすると表示されてしまうのです。

リンクはたくさんあるのですが全てフォームボタン等作成するという事なのでしょうか?
0463nobodyさん04/09/14 22:43:33ID:???
>>461
for使えばええやん

>>462
cookieにセッションIDを仕込む
046445704/09/14 22:51:13ID:IqNnzcu2
>>463

ありがとうございます。
やはりcookieとセッションIDなんですね。
セッションIDとかcookieという言葉自体は調べたので
理解は出来ているんですが、

具体的な方法がなかなか検索しても見つからないもので・・・
perlを使うんですよね・・・うーん、難しい
0465nobodyさん04/09/14 23:01:28ID:???
>>463
ありがとうございます。
foreachでないとちと面倒なので、なんとかしてみます...
0466nobodyさん04/09/14 23:03:08ID:???
>>464
ただIDをクッキーにくわせてそれ見るだけでそ

>>465
$iつけるだけなのにそんなに面倒かね
0467nobodyさん04/09/14 23:06:38ID:???
my $i = 0;
foeach (@list) {
print $i++." = $_";
}
0468nobodyさん04/09/14 23:09:02ID:???
forつかって無駄に$iを使わなくてもいぃような。
printf qq|%d = %s\n|, $a, $list[$a] foreach my $a (0..$#list);
0469nobodyさん04/09/14 23:54:32ID:???
無駄に$a使わなくてもいぃような。
0470nobodyさん04/09/15 02:14:30ID:???
>>464
CGI::Sessionとか使えばあんたみたいなアフォでも
セッション管理できると思うよ
0471nobodyさん04/09/15 03:23:11ID:???
>>468
foreach 修飾子はループ変数名に $_ 以外を使えない上、
その語順では my $a より前に $a が出てくるので文法エラー。
恥掻かずに済むよう、動作確認してから書こうよ。
0472nobodyさん04/09/15 03:52:08ID:???
>>468
初期化的な意味合いの0を行の先頭(あるいは上)ではなくて、
尻にもってこようとする上に変数の宣言部分が使用部分より
後にあるとは。。。

こういうやつが書くプログラムは300行程度で、もう意味不明。
Perlがそう書けるという悪い部分を勧めるべきではない。
0473nobodyさん04/09/15 04:46:19ID:???
>>472
sort,grep,mapつかってりゃざらやん。
@ayaya = sort{ }
       grep { }
        map{ } @ayaya;

こんなふうに書くと見やすくていいぞ。

print <<EOF if( ... );
うんこ
うんこ
EOF

儂は1万行超えるソースかいてるが
見にくいってのはグローバル変数を別モジュールで使いまわされて、
変数が何処からきてるんか解らんような描き方するやつのほうが困るな。

無論パッケージもooもされとらんようなやつ。


取敢えず読み慣れてないんなら慣れるしかなかんべ。
アルゴリズムがおかしいんならそこ突っ込むべき。
0474nobodyさん04/09/15 04:53:16ID:???
print "$_ = $list[$_]\n" foreach (0..$#list);
0475nobodyさん04/09/15 05:05:59ID:???
初心者スレだし

for (0..$#list){
print "$_ = $list[$_]\n";
}

でいいんじゃない?
0476nobodyさん04/09/15 06:31:42ID:???
>>473
東北の人ここにもイタ━━(゚∀゚)━━!!
047745704/09/15 12:29:12ID:OFkP/WKY
現在perl/cgi入門書は一冊読み終えてる段階です。
スレ違いかも知れませんが、CGI::Sessionを勉強したいのですが、
いくら検索しても簡単な解説でどこで入手出来るか解らないサイトしかなく、
具体的に丁寧に解説してある書籍・サイトとかありますか?


CGI session perl クエリ 等で検索してもなかなか見つからなく、
Amazonで検索してもCGI Session だとヒットしないので・・・。

なんとか下記のサイトを見つけましたがCGIセッションに関する記述が少なくて・・・
ttp://digit.que.ne.jp/work/index.cgi?Perl%A5%E2%A5%B8%A5%E5%A1%BC%A5%EB%2FWalrus%3A%3ASession%3A%3ALite

ただ単純にURLのクエリ文字列?にIDやパスワードが表示されないようにしたいだけなのですが、、難しいもんですね
ページ上のリンク(かなりありますが)を全てフォームボタンでPOSTで送信するように作成した方がいいのでしょうか?
0478nobodyさん04/09/15 12:59:29ID:???
>>450
>今の時代にcgi-lib.plかよ
CGI.pmの方が処理が重い。utf8,16なんぞも入ってるからな。
cgi-lib.plで済むところでは、あえてCGI.pmを避けるのがプロ。
0479nobodyさん04/09/15 13:05:06ID:???
>>462
kent-webのcosmoでも参考にし(使っ)たら。
0480nobodyさん04/09/15 13:08:39ID:???
>>477
CGI::Session説明してるサイトが見つからないだと?
試しにCGI::Sessionでググったらトップにきましたが。
それ見てわからないんだったら入門書見直した方がいい。
048145704/09/15 13:25:08ID:OFkP/WKY
>>480
そういうページは既に見ました。
どういう仕組みかは書いてありますが、
具体的にどこで入手したりとかそういった方法も解らなくて、
perl/cgi入門書にも載ってなくて、CGIセッションの本があるなら是非買いたいのですが、
Amazonで検索しても見つからないので途方に暮れているのです。

気に障ったようですいません。
0482nobodyさん04/09/15 13:33:59ID:???
>>481
乾杯
048345704/09/15 13:36:33ID:OFkP/WKY
>>479

そのソフトも試してみましたが、
やはり認証後ページからリンクをクリックするとIDとPASSがURLに追加され
表示されてしまいます。


段々、スレ違いになってきているようなので退散します。
すいませんでした
0484nobodyさん04/09/15 13:51:16ID:???
>>481
>>5
http://search.cpan.org/~sherzodr/CGI-Session-3.95/
0485nobodyさん04/09/15 13:53:46ID:???
具体的な方法ってただコピペしたいだけちゃうんかと
0486nobodyさん04/09/15 14:47:11ID:???
>>478
それでも普通CGI::Liteつかうべ、
Perl4しか使えない環境ならともかく
0487nobodyさん04/09/15 14:48:05ID:???
>>486
CGI::Minimalもあるよ
0488◆r7Y88Tobf2 04/09/15 15:54:43ID:???
どうしてもログの頭に半角スペースが入ってしまいます。
どうすればスペースが開かないようにできますか?
0489nobodyさん04/09/15 16:02:16ID:???
>>488知らん。
本当に解決したいのなら情報を小出しするな。
0490nobodyさん04/09/15 16:45:14ID:???
>>488
print "@arr";
 ↓
print @arr;
0491nobodyさん04/09/15 16:45:21ID:???
>>488=教えてクン
0492nobodyさん04/09/15 17:25:34ID:???
まぁ、質問スレだから教えて君だろw
0493nobodyさん04/09/15 17:26:58ID:???
それでも>>1くらいは読んでほしい思う
0494nobodyさん04/09/15 17:27:05ID:???
>>490
ソース出てないのになんで解ったんだ?
0495nobodyさん04/09/15 17:49:10ID:???
ありがちなミスだからじゃね
0496nobodyさん04/09/15 19:19:54ID:???
先生!質問です
datファイルの5行目をいきなり(1から4行目は読ませず)変数に読み込ませるにはどうしたらいいですか?seek関数では無理ですか?

datファイルの例

[0001](\n)
04/09/15(\n)
Name(\n)
http://www.〜〜(\n)
〜@〜.co.jp(\n)
Pass(\n)
IP(\n)
……
0497nobodyさん04/09/15 19:58:31ID:???
>>496
ttp://iis1.cps.unizar.es/Oreilly/perl/cookbook/ch08_09.htm
0498nobodyさん04/09/15 22:38:03ID:???
>>490
>>494
ログの「頭」だから違うんじゃないかなあ。($arr[0] eq ''ってオチはあるかもしれんが)
0499nobodyさん04/09/15 22:57:27ID:???
>>498
どうせ1行目だけ開いてないことになんか気付いてないよ
050050004/09/16 07:33:57ID:???
SSIで呼び出す #exec cmd は perlの場合 require で出来たんですけど、
他の #exec cgi と #include virtual は何を使えば実行してくれるのでしょうか?
0501nobodyさん04/09/16 08:35:14ID:???
>>500
何言ってるかわからんぞ。
SSIとかCGIなどは、httpdサーバ(たぶんApache)の設定で実行できるか
どうかが決まる。
それと#exec cmd とか、#exec cgi とか、 #include virtualって何だ?
#はコメント記号だが。Perlスクリプトに何て書いたか書いてみろ。
050250004/09/16 09:10:41ID:???
分かりにくくてすいません…

ssiのコマンド exec 引数 cmd を perl で実行するには require で出来ますよね?
ssiの他の、#exec cgi や #include virtual は perl ではどうやって呼び出したら実行してくれるのか。と言う事です。
050350004/09/16 09:16:23ID:???
と言うか全体的に考え方間違ってたらすいません(汗
0504nobodyさん04/09/16 11:05:43ID:???
>>502
近いものを選ぶとこんな感じになるのかな。
<!--#exec cmd="test.pl"--> →require
<!--#exec cgi="cgi-bin/test.cgi"--> →socket
<!--#include virtual="test.txt"--> →open
0505nobodyさん04/09/16 11:06:40ID:kf2OMroI
cgiを呼び出す時に"**.cgi?keyword"として
渡した"keyword"を受け取ったcgiのほうで
変数に入れる方法が知りたいのですが・・・。
よければその方法(?で何か渡す)を何と呼ぶのか
キーワードだけでも教えてもらえれば調べます、
初歩的ですいません。よろしくおねがいします。
0506505 04/09/16 11:15:26ID:???
ごめんなさい
調べたら出てきました、「引数」ですね
ほんとすいません・・・・
ttp://tohoho.wakusei.ne.jp/wwwcgi3.htm
0507nobodyさん04/09/16 12:04:04ID:???
>>505
キーワードは「クエリ メソッド」
GETの場合既に$ENV{'QUERY_STRING'}に"keyword"が入ってる
0508nobodyさん04/09/16 12:22:47ID:???
>>505
ってか、面倒だからCGIモジュール使いなYO
050950004/09/16 14:35:39ID:???
>>504 さんありがとうございます。
ただ socket を使った事が無くて検索してみましたけど、意味もあんまり分からなかったです。
どう記述したら良いのでしょうか?
読み込むファイルによって異なる記述になるんでしょうか?
0510505 04/09/16 14:52:29ID:???
>>507
ありがPございます。
またクエリだヽ(`Д´)ノ
0511nobodyさん04/09/16 14:52:41ID:???
>>509
1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
051250004/09/16 15:15:35ID:???
今までssiで <!--#exec cgi="../xx/xx.cgi"--> と呼び出していたのを、perl内で作動させたいんです。

require '../xx/xx.cgi';
でやったらログファイルへのパスが上手くいきませんでした。
xx.cgiの中には

$logfile = "xx.txt";
if(!open (DATA,"$logfile")){&output("error404"); exit;}

と言うのを書いてるので、error404 と出ます。
同じフォルダに持ってくると出来ますが、違うフォルダじゃなければいけないので…。
それで、>>504さんの解答をもらったので socket ではどうやって記述したら良いのかなと。

ディレクト構造は、
+folder1
  ┣xx.cgi
  ┗xx.txt
+folder2
  ┗xx.cgiを呼び出したい.cgiファイル

です。
0513nobodyさん04/09/16 15:20:35ID:???
> ただ socket を使った事が無くて検索してみましたけど、
> 意味もあんまり分からなかったです。

( ´ー`)フゥー...
0514nobodyさん04/09/16 15:26:55ID:???
>>512
socketを使うまでもないな。
$logfile = "xx.txt"; → $logfile = "../folder1/xx.txt";
でどうだろう。
0515nobodyさん04/09/16 15:32:26ID:kf2OMroI
別件で度々すみません、
このようにファイルを読み込んで、追加書き込みしているのですが

open(IN, "$outfile");
@data = <IN>;
close(IN);
open(OUT, "> $outfile");
print(OUT "<div>new</div>\n@data");
close(OUT);

こうしてデータを追加していくと$outfileの中が
<div>new</div>
 <div>new</div>
  <div>new</div>
このようにスペースが入り込んでズレていくんです。
原因わかりますでしょうか。
0516nobodyさん04/09/16 15:37:43ID:???
>>515
>>490
0517515 04/09/16 15:55:35ID:???
>>516
print(OUT "<div>new</div>\n", @data);
で問題なくいきました。ありがとうございますた。
051850004/09/16 16:05:00ID:???
>>514
表示出来ました(^^;
ありがとうございます。
と言うか思いつかなかった自分が恥ずかしいです…。

>>513
socket ってそんなに使う物なんですか?
socket 使ってる配布CGI一個しか見た事ないんですけど…
敷居が高いとか?
今勉強している本にも無かったです(汗
0519nobodyさん04/09/16 16:24:21ID:???
LWPとかIO::Socketはサルでも分かるよ
052050004/09/16 16:31:27ID:???
>>519
そうなんですか…
自分がまだまだなだけですね!
ありがとう御座いました。
0521nobodyさん04/09/16 16:31:30ID:???
>>518
他のサーバーのページやらcgiの出力結果を取得できるので
単語(含>>519)だけでも覚えておけばいいと思う。
052250004/09/16 16:35:58ID:???
>>521
ハィ!
ありがとうございます。
0523nobodyさん04/09/16 16:58:25ID:TnwBmEsg
GDモジュールを使って作成した画像をさらに
Image::Magickモジュールを使って画像サイズを変更することは可能でしょうか。

#Image::Magick
use Image::Magick;
$width = 120;
$img = Image::Magick->new;
$img->Read("xxx.cgi");
$img = $img->Transform(geometry => $width);
print "content-type:image/png\n\n";
binmode(STDOUT);
$img->Write("png:-");

Image::Magickがcgiファイルを読み込めないみたいなので
GDモジュールの方でxxx.pngといったような画像ファイル名を
吐き出させる方法がわかりません。

#GD
use GD;
$w = 500;
$h = 500;
$im = new GD::Image($gw,$gh);
(描画処理)
$im->png(-1);
0524その(1)04/09/17 00:29:48ID:iw09y7mQ
cgiを作ろうと思ってるんですけども、
#!/usr/local/bin/perl
require "./cgi-lib.pl";
&ReadParse();
$number_2 = $in{'number_1'};

#置き換え開始
$number_2 =~ s/イチ/1/g;
#$number_2 =~ s/ニー/2/g;
$number_2 =~ s/サン/3/g;
$number_2 =~ s/ヨン/4/g;
#$number_2 =~ s/ゴー/5/g;
$number_2 =~ s/ロク/6/g;
$number_2 =~ s/ナナ/7/g;
$number_2 =~ s/ハチ/8/g;
#$number_2 =~ s/キュー/9/g;
#$number_2 =~ s/ゼロ/0/g;

0525その(2)04/09/17 00:30:12ID:iw09y7mQ
#結果の表示
print <<"ABCD";
Content-type: text/html

<html>
<body>
$number_2<br>
</body>
</html>
ABCD

これが本文です、number1には「ナナニーサンニーイチキューハチキューゼロ」の
ような文字(htmlのformからとってくる)が入っていて、それを数字に直したいです。
しかし、なぜか2、5、9、0の置き換えをしようとするとエラーになってしまいます。
なぜなのでしょうか
0526nobodyさん04/09/17 00:33:21ID:???
ニー ゴー キュー
 ↑  ↑   ↑
0527nobodyさん04/09/17 00:46:12ID:???
Shift_JISだと
'ー' 0x815B
'ゼ' 0x835B
# 0x5B → [
だからコケるのでしょう。

むしろ、「ニー」「ゴー」が関西ローカルなことに注意してください。
0528nobodyさん04/09/17 01:20:46ID:???
>>527
標準語を使えばOKなのですね?
0529nobodyさん04/09/17 01:21:24ID:???
>cgiを作ろうと思ってるんですけども、
どんなCGIを作ろうとしてるのか気になりますなぁ
0530nobodyさん04/09/17 01:22:14ID:???
イチ ニ サン ヨン ゴ ロク ナナ ハチ キュウ ジュウ

なら大丈夫。
0531nobodyさん04/09/17 04:04:27ID:???
イー リャン サン スー ウー リュー チー パー・・・
ならもっといい
053252504/09/17 04:26:09ID:iw09y7mQ
>>527 >>530 >>531
イチ ニー サン ヨン ゴー ロク ナナ ハチ キュー ゼロ
から成る文字列は、自分で作るのではなくコピペしてformにもってくるものなので
できればこのまま使いたいのです。それじゃないと、この変換を頭でやったほうが
速くなってしまう
しかし、”ー”と”ゼ”が入っていては正規表現は使えないってことですよね、
どうしたらいいんだか。。
0533nobodyさん04/09/17 04:57:01ID:???
皆、ふざけてるだけだ。漏れがまじめに答えてやる。
require 'jcode.pl';
$number_2 = $in{'number_1'};
&jcode::convert("*number_2", "euc");
この上と下の2行を加えればよい。jcode.plでググルこと。
0534nobodyさん04/09/17 05:04:55ID:???
文字コード変えればええやん
053553404/09/17 05:05:45ID:???
ぎゃあ、かぶたよorz
0536nobodyさん04/09/17 06:10:09ID:???
\Qでクォートすれば?
0537nobodyさん04/09/17 08:38:01ID:???
UTF-8で書けばいいじゃーん
0538nobodyさん04/09/17 12:32:25ID:fDDxvp6Z
@ura = ("$answer{'team2'}","$answer{'1u'}","$answer{'2u'}","$answer{'3u'}","$answer{'4u'}","$answer{'5u'}","$answer{'6u'}","$answer{'7u'}","$answer{'8u'}","$answer{'9u'}","$answer{'totalu'}",);

すいません、上の配列をフォームで送った時にEUCに書き換えようと
した場合、&jcode'convert(*ura,'euc');でやると文字化けします。
どの部分を指定してやればよいのですか?
0539nobodyさん04/09/17 12:37:40ID:???
@uraは配列じゃん。jcode::convertの第一引数は変数。
0540nobodyさん04/09/17 13:36:28ID:442/c2rw
DBMを使って検索ベースのアプリを作ってるんですが、
use strict;していると、Fcntlの定数O_RDONRYなどに
引っかかりエラーが出てしまうんですが、これってしょうがないんでしょうか?
use strict 'vars';
だと大丈夫なのですが・・・。
すんません、おながいします。

Software error--------------------------------------
Bareword "O_RDONRY" not allowed while "strict subs"
----------------------------------------------------

tie(my %h, 'SDBM_File', $dbm_name, O_RDONRY, 0600);
ここの、O_RDONRYの部分です。
0541nobodyさん04/09/17 14:03:17ID:???
>>538
jcode::convert(\$_, 'euc')
  for @answer{qw(team2 1u 2u 3u 4u 5u 6u 7u 8u 9u totalu)};

>>540
s/O_RDONRY/O_RDONLY/g;
054254004/09/17 14:13:35ID:???
>>541
あぁぁ・・・、すいません、ホント申し訳ない・・・。
そしてありがとうございます。
0543nobodyさん04/09/17 14:21:45ID:???
>>540
use Fcntlのあとで別のパッケージに切り替えたりしてない?
054454304/09/17 14:24:49ID:???
そんな難しく考える問題じゃなかったかonz...
054554004/09/17 15:10:51ID:???
>>543
ほんとすんません・・・。
O_RDWRだと大丈夫なのにどうして!?
とかしばらく、strictとFcntlについて調べてました・・。
0546nobodyさん04/09/17 15:47:49ID:???
onry
054753804/09/17 16:06:15ID:fDDxvp6Z
>>541
ありがとうございました。無事解決しました。
まだperlはじめたばかりで、教科書にも載っていない事だったので
感激です。
0548nobodyさん04/09/17 19:39:02ID:???
アクセスカウンターで2回に1回カウントするようにするにはどうしたらいいでしょうか?
0549nobodyさん04/09/17 19:49:43ID:???
0.5足す
0550nobodyさん04/09/17 20:17:45ID:???
それだと2回に1回のカウントじゃなくて1回ずつカウントしてしかも、
アクセスカウンターが
2412351.5
みたいになっておかしくなるのでダメなんです。
0551nobodyさん04/09/17 20:21:07ID:???
内部的に覚えておいて、出力時に切り捨てる
0552nobodyさん04/09/17 20:23:33ID:???
とある理由でperlを覚えたほうがいいということになったのですが、perlとは具体的になにができるのでしょうか
いきなりテンプレのプログラムのための文字列を覚えてもさっぱりです
0553nobodyさん04/09/17 20:31:25ID:???
>>552
お前には無理。
早く諦めて別のことに青春を燃やせ。
0554nobodyさん04/09/17 20:40:58ID:???
>548
出力時に1ビット右シフト。
0555nobodyさん04/09/17 20:48:45ID:???
>>552
>>9を100万回読み直してから来てください。
0556nobodyさん04/09/17 20:49:18ID:???
>>550
int
0557nobodyさん04/09/17 20:53:37ID:???
>>552
まずPerlが何の略かを調べればそれが答えになるかも。
つーか他に何か知ってる言語あるの?
それ書いてくれたら答えやすいかもしらん。
0558nobodyさん04/09/17 20:54:23ID:???
>>552
えーっとね、エロゲとかエミュレータとか作れる
0559nobodyさん04/09/17 21:21:35ID:???
>>551
>>556
出来ました。
ありがとうございます。
0560nobodyさん04/09/17 22:54:49ID:???
ファイルからread関数で変数にnバイト読み込んだとき、もし改行が入っていたら、その前後で分けて配列に代入するにはどうすればいいですか?
0561nobodyさん04/09/17 23:07:15ID:???
>>560
@a = split /\r?\n/, $in;
0562nobodyさん04/09/18 12:04:43ID:???
>561
dクス
056353804/09/19 01:32:18ID:n0F83URY
>>552
僕も初心者なんですが、テンプレを丸写ししても何もわからないです。
僕が今している事は、よく使われるような関数(25個くらい)と、構文(10個くらい)
それと、正規表現、サブルーチン、ライブラリの使い方、これらを徹底的に
覚えようと思っています。いきなり完成されたテンプレからはじめるよりも
パーツから覚えていくほうが絶対にいいと思います。それと、ローカルで
CGIを動かせるように、perlやhttpd、apachなんかを入れておくと、htmlを
ローカルで動かすよに手軽にコーディングして動作確認できます。
お互いに、挫折せずに頑張りましょう
0564nobodyさん04/09/19 01:50:03ID:???
ここはコーディングの質問スレなのよね
0565nobodyさん04/09/19 05:10:18ID:vPjLXO2Q
if(index $a,"pc"){ $b= $pcbnr;};
上記のような文字列検索を行っています。
$aの中身は"pc imode voda ezweb"です。
if(index $a,"ezweb"){ $b= $pcbnr;};の場合は正常に動作します。
"pc"と言う文字列だけは上手く判断出来ないようです。
何故でしょうか?
0566nobodyさん04/09/19 05:40:18ID:???
$pcbnrはどっからきたのだ?
検索して何をしたいの?
それと最後の";"いらないよ
0567nobodyさん04/09/19 05:57:32ID:???
>>565
index $a,"pc"の返り値が0だから
つーか、indexが何をする関数か調べろ。

ただマッチングしたいんだったら
if($a =~ /pc/){

}
0568nobodyさん04/09/19 06:00:15ID:???
>>563
cgiでやるよりコンソール(.plファイル)でやったほうが効率いいかもよ。
行数少ないし、すぐにエラー行数分かるし。
0569nobodyさん04/09/19 21:10:27ID:8Bm3sZnu
掲示板を作っているのですが、大きな壁に当たりまして、
書き込みを保存しているファイルから、指定した件数(仮に5件とします)だけ読み込み、続きも"次の5件"のようなリンクで5件ずつ読み込んで行きたいのです。
いろいろ参考書を読んでみましたが、方法が思いうかびません…
よろしくお願いしますm(_ _)m

あと、HTTPヘッダ排出のあとは2行あけないといけないと言われたのですが、なぜなのでしょうか?
0570nobodyさん04/09/19 21:11:25ID:???
ファイルから全部読み込み5件ずつ表示すれば
0571nobodyさん04/09/19 21:13:32ID:???
cgi?page=2
0572nobodyさん04/09/19 22:03:10ID:???
>>569
ちゃんと最初からPerl勉強した方がいいと思う

>あと、HTTPヘッダ排出のあとは2行あけないといけないと言われたのですが、なぜなのでしょうか?
2行?1行じゃなかったっけ?とりあえずRFC嫁
0573nobodyさん04/09/19 22:05:28ID:???
行で言えば1行だね
569は改行コードが二つっていいたかったのかな。
057456504/09/20 00:38:39ID:WP+I8Woy
>>567
if関数でも出来たんですね、パターンマッチ演算子は配列じゃないと駄目かと思っていました。
index $a,"pc"の返り値が0と言うのが解らないのです、$aは"pc imode voda ezweb"です。
自分で色々やってみた所、if(index $a," pc"){ $b= $pcbnr;};とすると思い通りに動作しました。
なぜ、半角スペースを入れるとするのでしょうか?
0575nobodyさん04/09/20 01:13:40ID:???
>>574
>>567
> index $a,"pc"の返り値が0だから
と解説しているだろうが、このバカチン。
0576nobodyさん04/09/20 01:52:41ID:???
>>574
-1が返ってくるから。
indexが何する関数なのか調べろと567が言ってるだろ。
あと、おそらくおまいの思い通りには動いてないからな。
ためしにマッチしない文字でやってみなはれ。
ついでにifも調べて来い。
057756504/09/20 03:24:21ID:WP+I8Woy
>>575,576
勘違いしていたようです。汗
indexは文字列検索に使う関数だと思っていたのですが、文字列の位置を返す関数なのですね。
CGIの本に書かれていたサンプルソースがパターンマッチっぽい例だったので、文字列検索向けの関数かと思っていました。
ifは数値が 「0」 か 「空」 の場合には偽、それ以外の場合には真なんですよね。
負の値も偽と判断されると思い込んでいました。
>>567さんのやり方で確実に動作する事を確認しました。
結構、適当にPearlを勉強していたのですが、もっと真面目にやろうと思います。汗
有り難う御座いました。
0578nobodyさん04/09/20 03:59:55ID:???
>>577
Perlね
0579nobodyさん04/09/20 04:16:07ID:???
久しぶりに見たな。
0580nobodyさん04/09/20 06:08:04ID:???
実際にはPearlと名づけたかったんだが、すでにあったからPerlに無理にしたから
そお遠いわけでもないがな。
0581nobodyさん04/09/20 09:22:55ID:???
ばかだな
0582nobodyさん04/09/20 10:17:23ID:???
>577
まあ、ガンガレ
0583nobodyさん04/09/20 18:56:55ID:???
下のcgiを実行すると
3
と表示されました。どうなっているんでしょうか?



print "Content-type:text/html\n\n";

@_ = ("あ<>か","い<>き","う<>く");
@value = split(<>, @_);
print $value[0],<br>;
print $value[1],<br>;
print $value[2],<br>;
print $value[3],<br>;
print $value[4],<br>;
print $value[5],<br>;
print $value[6],<br>;
print $value[7],<br>;
0584nobodyさん04/09/20 19:01:04ID:???
splitの第2引数にリストは使えんのだが
0585nobodyさん04/09/20 19:13:51ID:???
push @value, split(/<>/, $_) foreach (@array);
0586nobodyさん04/09/20 19:24:26ID:???
>>583
それはまともに動くのか?
0587nobodyさん04/09/20 19:26:10ID:???
push @value, split /<>/ for @_;
0588583御破算04/09/20 20:29:46ID:???
>584
え、そうなんですか(;_;)
>586
404は出ませんでした。httpdとinfoseekで確認しました。

>585>587
ありがとうございます。今携帯から見ているので、後で試してみます。
0589nobodyさん04/09/20 20:40:58ID:???
>>588
404・・・?
0590nobodyさん04/09/20 20:47:03ID:???
共用サーバでCGIの実験するな。師ね。
0591nobodyさん04/09/20 21:15:09ID:???
@_には3個入ってるんだから、
@value = split(<>, '3');
と同じ
0592nobodyさん04/09/20 21:27:36ID:???
これくらいローカルでやってくれよ。
059358304/09/20 22:31:17ID:???
>589
403でしたorz
>590
httpdがバグった、と思ったので…httpdで試してsyntax errorが出ず、永久ループでなくてもダメですか?
>591
ありがとうございます。それも調べてみます
>592
ローカルとはmyのことですか?だとしたらどこをローカル化すればいいんですか?
0594nobodyさん04/09/20 22:39:12ID:???
                             |
                             |
      ∩___∩             |
      | ノ  _,  ,_ ヽ        ((  | プラプラ
     /  ●   ● |         (=)
     |    ( _●_)  ミ _ (⌒)   J  ))
    彡、   |∪|  ノ
⊂⌒ヽ /    ヽノ  ヽ /⌒つ
  \ ヽ  /         ヽ /
   \_,,ノ      |、_ノ
0595nobodyさん04/09/20 22:52:17ID:???
>>593
ttp://support.microsoft.com/default.aspx?scid=kb;ja;879066

httpdがバグったって・・・。
何故プログラムを先に疑わないんだ。
0596nobodyさん04/09/20 22:52:25ID:???
2重の釣りか
0597nobodyさん04/09/20 22:56:31ID:???
print "Content-type:text/html\n\n";

@_ = ("あ<>か","い<>き","う<>く");

foreach(@_){
$baka .= $_;
}

@value = split(<>, $baka);
print $value[0],<br>;
print $value[1],<br>;
print $value[2],<br>;
print $value[3],<br>;
print $value[4],<br>;
print $value[5],<br>;
print $value[6],<br>;
print $value[7],<br>;
0598nobodyさん04/09/20 23:04:00ID:???
>>597
君アホでしょ
せめて確認してから貼れよw
0599nobodyさん04/09/20 23:20:32ID:???
@_ = ("あ<>か","い<>き","う<>く");
print "Content-type:text/html\n\n";
print $_."<br>",for split /<>/ ,join("<>",@_);
0600nobodyさん04/09/20 23:27:37ID:???
join関数を知らなかった俺はバカです
0601nobodyさん04/09/20 23:28:38ID:???
joinとか以前に動かないから
0602nobodyさん04/09/20 23:29:06ID:???
>>583のスクリプトを*そのまま* aa.plという名前で保存する。
echo hage| perl aa.plすると、確かに3と出力される。
何が起こっているか誰か解説してくれ。
0603nobodyさん04/09/20 23:31:26ID:???
>>602
>>591
0604nobodyさん04/09/20 23:34:53ID:???
>>602
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perldata.html#List_value_constructors
060560204/09/20 23:42:47ID:???
>>603-604
dクス
060658304/09/20 23:55:49ID:???
>593
よく強制終了するので…クロック数300rヘルツ鯖(´・ω・`)
>599
join関数なんてあったんですね。知りませんでした
>591
>603で気付いた、前スレ誤解スマソ
>604
そういうことだったのか…
0607nobodyさん04/09/21 02:08:45ID:???
>>606
use strict;するともっともっと気付く。
0608nobodyさん04/09/21 21:16:47ID:UQFv84yK
レンタル鯖で、セション管理のモジュールがインスコされてない&インスコ禁止なので、
ナイスなライブラリがないでしょうか・・・
もう自分で書くしか?
0609nobodyさん04/09/21 22:11:41ID:???
>>608
CGI::Session::AuthはPurePerlじゃなかったか?
0610nobodyさん04/09/21 22:12:03ID:???
失礼。CGI::Session::AuthじゃなくてCGI::Sessionだ。
0611nobodyさん04/09/21 22:56:33ID:???
ディレクトリのフォルダとかファイルとか
判別したり、容量、日時を読み出しているのですが
どこかにそういう関数とか解説されたHPないですか

>>1あたりのリンクにはなかったです
0612nobodyさん04/09/21 22:58:24ID:???
>>611
>>14
0613nobodyさん04/09/21 23:24:42ID:VDADrx76
Perlでのメール送信プログラムについて、質問です。

ヘッダを作成し、その内容にそってメールを送信するようにしているのですが、
特定の環境下で文字化けが発生してしまうようです。
ヘッダに
Content-Type: text/plain; charset="ISO-2022-JP"
と追加しているのですが、コレだけではダメなのでしょうか?

もう一点、質問なのですが、Beckyなどのメーラーから送信するとヘッダに
Content-Transfer-Encoding: 7bit
が付属されていますが、この内容も文字化けに関係しているのでしょうか?

質問内容が、Perlとちょっと離れているかもしれませんが・・・
よろしくお願いします。
0614nobodyさん04/09/21 23:32:10ID:???
>>613
ちょっとどころではありませんのでRFCを舐めるようにして読んでみましょう。
061560804/09/21 23:38:12ID:UQFv84yK
>>609さん
PurePerlだと、PPMとか使ってインストールしなくても、
任意の場所にモジュールファイルを置いて、requireすればOKなんでしょうか?
0616nobodyさん04/09/21 23:44:41ID:???
requireって…
0617nobodyさん04/09/21 23:59:06ID:VDADrx76
>>614
スイマセン、RFCって何でしょうか・・・・
このような質問は、そちらですれば良いと言う事ですか?
0618nobodyさん04/09/22 00:09:08ID:???
わからない言葉があったらまずは何をすべきか
0619nobodyさん04/09/22 01:11:45ID:???
人に聞く
0620nobodyさん04/09/22 01:20:10ID:???
>>613
文字コードとか
文字コードとか
文字コード勉強した方がいいよ
0621nobodyさん04/09/22 10:52:47ID:???
スイマセン、RFC板が見つかりませんm(_ _)m
0622nobodyさん04/09/22 11:54:45ID:???
>>621
http://www.google.co.jp/search?q=RFC&hl=ja&lr=lang_ja
http://pc5.2ch.net/test/read.cgi/php/1095633323/
0623nobodyさん04/09/22 15:34:38ID:???
ググってみたんですが良く分かりません。

Perlを使用してDBアクセスを行いたいのですが、
開発環境はどのように作成したら宜しいのでしょうか?

インタプリタ等、必要ですよね・・・
0624nobodyさん04/09/22 15:56:04ID:???
PerlインストールしてDBインストールすればいいが。
0625nobodyさん04/09/22 16:07:28ID:???
>>624
環境構築は特に必要ないのでしょうか?

何も入っていないPCに
PerlインスコしてOracleインスコして

それから、FTPでCgiをUpすれば良いということでしょうか?
0626nobodyさん04/09/22 16:55:21ID:???
>>625
あとDBドライバな。
0627nobodyさん04/09/22 16:58:49ID:???
>>626
CgiってTxtで書けるんですか?
0628nobodyさん04/09/22 17:03:07ID:???
プログラムが設置されているディレクトリ名を取得することは可能でしょうか?
例えば、http://hoge.com/xxx/test.cgiのtest.cgiにアクセスした時に、
ディレクトリ名のxxxを変数として取得したいのですが。
よろしくお願いいたします。
0629nobodyさん04/09/22 17:15:23ID:???
>>627
どうやらキミには無理なようだ・・・

>>628
$0からディレクトリを切り出したら?
0630nobodyさん04/09/22 17:36:12ID:???
>>629
おぉ!$0ってのはなんだか使えそうですね。
試行錯誤してみます。
ありがとうございました。
0631nobodyさん04/09/22 17:46:12ID:???
$0ではファイル名しか取得できないようでした。
んー、難しい。
0632nobodyさん04/09/22 17:55:43ID:???
>>631
あれ!?そうだっけ、すまん。
んじゃ
$ENV{'SCRIPT_FILENAME'}, $ENV{'SCRIPT_NAME'}, $ENV{'REQUEST_URI'}
でどお?
0633nobodyさん04/09/22 17:59:01ID:???
>>632
マジサンクスです!
勉強になりました!
0634nobodyさん04/09/22 18:35:24ID:???
>>629
そんなぁ・・・
0635nobodyさん04/09/22 19:23:37ID:???
"ググったら"山ほど出てくると思うんだが
0636nobodyさん04/09/22 21:15:51ID:???
何もわからん奴は本買えよ
0637nobodyさん04/09/23 00:56:30ID:???
>>634
まず、CGIとPerlの違いを理解してから出直して来い。
0638nobodyさん04/09/23 12:05:23ID:???
exit関数の質問です。exit; exit(); exit(0); などいろんな書き方を見かけるんですが、意味は違うんでしょうか?
0639nobodyさん04/09/23 12:07:07ID:???
まぁプログラムの基本としてexit(1);は異常終了を示す物だと覚えていて欲しい
0640nobodyさん04/09/23 13:49:58ID:+nr7omoU
デコードについて質問です。

URIエンコードされてる文字列を元に戻すコードは

$buffer =~ s/%([a-zA-Z0-9][a-zA-Z0-9])/pack "H2",$1/eg;

$buffer =~ s/%([a-zA-Z0-9][a-zA-Z0-9])/pack "C",hex($1)/eg;

この二つのどちらでもデコードできますが、どちらがおすすめですか?
前者の方が処理は速いです。でもだいたいの入門サイトには後者のコードが載ってます。
そこらへんで悩んでます。みなさんあどちらを使ってますか?
0641nobodyさん04/09/23 13:51:55ID:???
>>640
どっちでもいい
0642nobodyさん04/09/23 13:52:47ID:+nr7omoU
>>641
どうしてそういうこと言うんですか!?
0643nobodyさん04/09/23 13:55:41ID:???
>>642
どっちでもいいからそういうこと言う
0644nobodyさん04/09/23 14:06:57ID:+nr7omoU
>>643
そんなっ・・・・・

Cでやるのは明らかにに非効率で、処理時間も倍かかるのに何故かCの方がスタンダードな
理由をあたしと話してみてもいいじゃないですかっ!

もういいもん。あたし帰るからねっ!
0645nobodyさん04/09/23 14:20:34ID:???
>>644
帰って吊るしたロープに首を通せばいい
0646nobodyさん04/09/23 14:30:55ID:+nr7omoU
>>645
何よあんたっ!?すっごいむかつくっ!信じらんない!
もうやめて!あなたここにこないで!絶対にこないでよ。
0647nobodyさん04/09/23 14:49:03ID:???
さっさと帰れ
0648nobodyさん04/09/23 14:50:28ID:qhT0f5z2
my で複数の変数を一気に初期化したい場合はどうすればいいのでしょうか?
my ($a=1,$b=2); だとエラーになります
定義したあとに一つ一つ代入していくしかないのでしょうか?
0649nobodyさん04/09/23 14:52:57ID:+nr7omoU
>>648
my ($a,$b) = (1,2);
0650nobodyさん04/09/23 14:56:18ID:???
my $a = 1,$b = 2;
0651nobodyさん04/09/23 15:01:42ID:???
すみません。

my @a = qw/ a b c/;
my @b = qw/ a b c d/;

二つの配列があって、@bには@aの持ってない値を持つことを禁じたいのです。
なので@aにない値なら削除したいのですが、どうかけばよろしいですか?

for ( 0..$#b)
とかやるとブロック内で@bの要素を減らすと問題がありますよね・・・おねがいします。

あ、あと追加で済みませんが、
my $a = [qw/1 2 3 4/];
のような場合のラストインデクスの求め方は
@$#a
でうまくいかないのですが、どうかくのですか?
0652nobodyさん04/09/23 15:04:18ID:???
>>640
$buffer =~ s/%([a-f0-9][a-f0-9])/chr(hex($1))/ieg;
0653nobodyさん04/09/23 15:09:17ID:???
>>651
ttp://www.din.or.jp/~ohzaki/perl.htm#ArrayUnique
065465104/09/23 15:13:10ID:???
>>653
・・・どう応用すればいいんでしょうか?
0655nobodyさん04/09/23 15:28:26ID:+nr7omoU
>>651
my @c;
foreach my $value (@b){
if ( map /$value/, @a ) { push @c,$value }
}

これで@cの中には@aにあるものしか入らないよ。>>653はむかつくやつだから
無視した方がいいよっ!だって私回答したんだから、それくらい言う権利あるわよね!
0656nobodyさん04/09/23 15:30:20ID:???
>>651
前半:
my %a;
map $a{$_}++, @a;
@b = grep !$a{$_}, @b;

後半:
$#$a
0657nobodyさん04/09/23 15:33:08ID:+nr7omoU
>>656
何あんたっ!もう私が答えてるのよ!失礼なことしないでよっ!バカじゃないの!
065865104/09/23 15:41:12ID:???
>>656
そういうことでしたか;勉強不足ですみません。ありがとうございました。
0659nobodyさん04/09/23 15:56:18ID:???
釣り師としては3流
066065104/09/23 16:04:15ID:+nr7omoU
思いっきりつれてるけどなw
0661nobodyさん04/09/23 16:56:25ID:???
$varに$num=123、$cha="abc"をくっつけて$var123="abc"を作りたいんですが、どうすればいいですか?
0662nobodyさん04/09/23 17:00:48ID:???
>>661
ハッシュ使えばいいじゃん
0663nobodyさん04/09/23 17:06:44ID:EIIt3BOR
GD::Graphについて質問です。
簡易的なサンプルのグラフが出力でき、目的の棒グラフを作ろうと
思って、棒グラフと、点ぐらふで、左軸と右軸にそれぞれ違った
数値を持たせようと思い、オプションのセットの部分で、

$graph->set(
(略)
two_axes => true,
y1_max_value =>100,
y1_min_value =>0,
y2_max_value =>50,
y2_min_value =>0
);

と表してみたのですが、左の軸しか出力されません。
true_axesの値がtrueの時と言うことは、書いてあったので、
そこがおかしいのかと思い、two_axes => "true",としてみたり
two_axes => 1,としてみたり、色々試してみたのですが、
だめでした。どのようにしたら、左右別々の軸の値を出すことが
できるでしょうか?ご教授お願いいたします。
0664nobodyさん04/09/23 18:28:51ID:???
$a = "abcdeFGRYEHDU-sss-";

もしも$aの値の中にa-zA-Zとハイフン(-)以外を含んでたら処理発動ていうのがしたいんですが、

$a =~ /[a-zA-Z\-]/;
としてもうまくいきません。ハイフンをエスケープできてないのでしょうか?
0665nobodyさん04/09/23 18:48:23ID:???
if ($a =~ /[^a-zA-Z\-]/){
処理
}
0666nobodyさん04/09/23 19:43:29ID:???
[^A-Za-z-]
066766404/09/23 20:46:29ID:???
>>665-666
すみません。そこ書き間違えてました。
[^a-zA-Z\-]としてます。

my $a = "abcdeFGRYEHDU-sss-";
print "ok" if $a =~ /[^a-zA-Z\-]/;

これだと普通にうまくいくようなので、どうやら初めから他の部分のコーディングにミスがあったんだと思います。
すみません。
0668nobodyさん04/09/23 21:16:21ID:???
フォームからsubmitしたCGIの中で、
CGI::Liteのparse_cookiesを呼ぶと、
なぜかフォームの内容までが取得されてきてしまったり、
逆にparse_form_dataでクッキーの内容まで取得されたり、ということが起きています。

parse_cookiesは、parse_form_dataとほとんど同じ動きをする、
というのをどこかで見ましたが、同じ内容が取得されるということなのでしょうか?
0669nobodyさん04/09/24 00:20:24ID:???
$a $b $c $d $eの中で一番大きな数字を$xに格納したいのですが
いちいちif文で$a>=$b && ...... とやる以外に方法はありますか?
0670nobodyさん04/09/24 00:36:03ID:???
>>669
map { $x = $_ if($_ > $x);} ($a,$b,$c,$d,$e);
067166904/09/24 00:49:04ID:???
>>670
ありがとうございます。
0672nobodyさん04/09/24 01:07:35ID:AJG/3HYE
あるCGIをダウンロードしたのですが
Editorでいじろうかと思ったのですが
文字が文字化けして何を書いてあるのかわからないのですが
この文字化けを解決する方法ないでしょうか?
0673nobodyさん04/09/24 01:23:51ID:???
TeraPadでも使ってろ
0674nobodyさん04/09/24 01:26:51ID:QHIu4qbQ
連番の key を持つ連想配列の中から、先頭か最後の key の data を取り出したいのですが
なにか手軽な方法はないでしょうか?
キーは不定なので直接指定することはできません

今は↓のようにいったん key を配列にしてからソートして目的の key を
指定してるんですが他に何かいい方法はないでしょうか?
my @tmp = sort keys(%abc);
my $data1 = $abc{$tmp[0]};
my $data2 = $abc{$tmp[$#tmp]};
0675nobodyさん04/09/24 02:22:53ID:???
>>674
ハッシュのキーには順番はないんだからそれでもしょうがないんじゃない?

ところで連番って、キーは数字なのか?
もしそうならそれだと最後は得られないけど。
sortだけだとキーが1〜10としたら 1 10 2 3 4 ・・・になってしまう。
@tmp = sort { $a <=> $b } keys(%abc); にしないと。
0676nobodyさん04/09/24 10:09:11ID:???
>>674
sortを1回やるのとmax,minをそれぞれ求めるのはどっちが得だろうか
0677nobodyさん04/09/24 11:12:13ID:???
sortはO(n log n)でmin,maxを求めるのはO(n)になるのかなあ
0678nobodyさん04/09/24 11:23:21ID:???
sortは最悪O(n^2)
0679nobodyさん04/09/24 11:32:22ID:???
nが十分大きくなればオーダーきいてくるので明らかにsort不利っぽいけど、
小さいときどうかは微妙だよな。perlのsort意外に速いし...

0680nobodyさん04/09/24 14:05:57ID:???
use strict;
use Benchmark;
use vars '%Hash';

my %rand;
$rand{ int rand 100000 }++ while keys %rand < $ARGV[0];
@Hash{ keys %rand } = values %rand;

timethese(-5, {
  each => sub {
    my $min_key = 100000;
    my $max_key;
    for (keys %Hash) {
      $max_key < $_ and $max_key = $_;
      $min_key > $_ and $min_key = $_;
    }
    my($min_value, $max_value) = @Hash{$min_key, $max_key};
  },
  sort => sub {
    my @key = sort { $a <=> $b } keys %Hash;
    my($min_value, $max_value) = @Hash{@key[0, -1]};
  },
});
0681nobodyさん04/09/24 14:25:15ID:???
>>640
ttp://www.din.or.jp/~ohzaki/perl.htm#JP_Escape

後者のコードがスタンダードなのは、CGI が流行ったころに
後者を使ったスクリプトが出回ったせいじゃないかな。
他にも chr と hex を使ったものも見たことがある。
0682nobodyさん04/09/24 16:37:42ID:???
use URI::Escape;

$buffer = uri_unescape($buffer);
0683nobodyさん04/09/24 19:34:09ID:???
おまいらifの条件文が長くなった場合ってどうやって書いてる?(見やすくするための書き方)

if ( $a == 1 && $b == 1 or $c == 1 ){...}
とか
if ( $a ==1 &&
   $b == 1 or
   $c ==1   ){..}

どっちもイマイチ見づらい。おまいらはifの条件文がやむを得ず長くなってしまったときに
どうやって視認性を確保してる?
0684nobodyさん04/09/24 19:48:42ID:???
>>683
なんで or のときは || 使わないで
and のときは && 使ってるの?
合わせたほうがよくない?
068568304/09/24 19:55:58ID:???
>>684
そうだったorzごめん。

それで何かいい書き方ないかな?一番いいのは冗長な条件文にしないことだけど、
たまにどうしようもないときってあるでしょ?
時間がないから妥協とかするときにでも、とっさにできる最低限のこととして
読みやすさだけは確保したいよね。
0686nobodyさん04/09/24 20:03:00ID:???
>>683
三項演算子
068768304/09/24 20:07:59ID:???
>>686
そういう話ではないんだ^^;
条件文を冗長でないものにする方法じゃなくて、
冗長な条件文の読みやすくするための書き方みたいな感じ;
0688nobodyさん04/09/24 20:08:48ID:???
>>683
else BLOCK が不要なら

{
  EXPR && EXPR || last;
  EXPR        || last;
  ...
}

とか。

Perl に限った話じゃないから、この辺ででも聞けば?
http://pc5.2ch.net/test/read.cgi/tech/1068752664/
0689nobodyさん04/09/24 21:16:00ID:???
GETで送信される引数でカウンタを進ませ,表示するPerlスクリプトの基本的な機能だけ作ってみましたが,
↓Perl
ttp://bcmnhp1.hp.infoseek.co.jp/content2.txt
↓DATファイル
ttp://bcmnhp1.hp.infoseek.co.jp/ctdata2.txt
DATファイルの一行目は上手く動作していますが,二行目の同一IPをチェックする方に何故か初めと終わりに:が付いてしまいます。
↓処理後DATファイル
ttp://bcmnhp1.hp.infoseek.co.jp/ctdata2_b.txt

一体なにが起きているんでしょうか?
069068904/09/24 21:19:18ID:???
書き忘れましたが,処理後DATファイルは
引数「4」(http://~~~~/content2.cgi?4)
でアクセスした場合です。
0691nobodyさん04/09/24 21:55:07ID:???
>@ct = <COUNT>;

ここで改行削除されてないから。
こうするとよくわかるんじゃない?

foreach $_ ( @count ) {
print COUNT "[$_:]";
}
foreach $_ ( @ip ) {
print COUNT "[$_:]";
}
069268904/09/25 08:34:52ID:???
>691
おぉ!出来ました!ありがとうございました!
0693nobodyさん04/09/25 12:44:16ID:???
>>687
> 冗長な条件文の読みやすくするための書き方みたいな感じ;
冗長だったら最適化しろよ。
0694nobodyさん04/09/25 13:47:46ID:???
とあるハッシュのキーの中に
test
というキーがあるかないかを調べるにはどう書くのが一番ですか?

if ( map/^test$/,keys %hash ) {
print "ありました";
}
もっと簡単な方法はありますか?
0695nobodyさん04/09/25 14:00:14ID:???
>>694
if (exists $hash{test}) {
print "ありました";
}
0696nobodyさん04/09/25 14:13:17ID:???
>>693
お前・・・・
最適化する時間も、才能も、素質も、スキルも・・・・・・・ないorz

そんなとき、そんな俺でも読みやすいソースにしたいっていってんだよボケ!
出直してこいや
0697nobodyさん04/09/25 14:41:12ID:???
さぁ、香ばしくなってまいりました。
0698nobodyさん04/09/25 16:48:19ID:???
どれが一番読みやすい?
if ($a == 1 and $b == 1 or $c == 1) {print 'ok'}
if ($a == 1 && $b == 1 || $c == 1) {print 'ok'}
if (($a == 1) * ($b == 1) + ($c == 1)) {print 'ok'}
if ($a == 1 and $b == 1) {print 'ok'} elsif ($c == 1) {print 'ok'}

視認性は、全体のアルゴリズムとコメントで解決するのが一番で、
if文をどう記述するかは二の次だと思うんだけど?
0699nobodyさん04/09/25 17:03:11ID:???
>>696
見易さ(=見た目スッキリ)と読みやすさ(=処理内容のつかみやすさ)は別でしょう。
話の流れを追っても、あなたがどっちを優先したいのかがもひとつ見えないよ。

ここの人に最適化してもらうよりも、自分がわかりやすいと思うコード・記述に
しとけばいいと思うんだけどな。適度に冗長性を確保するのも大事だろうし。

>>698も書いてるけど、コメントのほうで整理しとけば条件文が長いことぐらいは
気にならないと思う。

と、>>686が一瞬「三浦理恵子」に見えた人が書いてみる。
0700683 69604/09/25 18:11:58ID:f8iWY7is
>>699
>見易さ(=見た目スッキリ)と読みやすさ(=処理内容のつかみやすさ)は別でしょう。
>話の流れを追っても、あなたがどっちを優先したいのかがもひとつ見えないよ。

別なの?同じだと思ってた。
一番いいのはスキルアップして、最適なコーディングを瞬時にできるようになることなんだけど、
実際Perlばかりに時間を割けないので、とりあえず見やすさ&&読みやすさ%%把握しやすさだけ
なんとかならないかなと思って。

もちろん最適なコーディングに勝るものは無理だけど、少しはいい書き方ってあるのかなと。
いわゆる改行の入れ方、スペースの明けかた、揃え方。

まああいまいすぎだよね。絶対的な回答ではなく、みんなの習慣的な書き方の解答とかが
ほしかったけど・・・しつれいしますた。
0701nobodyさん04/09/25 19:43:11ID:???
★= 頼むから言語論争はマ板でしてね =★
0702nobodyさん04/09/25 20:26:15ID:???
だれも言語論争などしていない。
0703nobodyさん04/09/25 21:16:28ID:???
ぶっちゃけ多めにコメントいれておけば問題ない。
少なくて意味がわからんかったときは時間かぐっとかるが、
多めなのは読み手が消せばいいだけだから問題ないし。

アルゴリズムの問題は書法の範囲の記法とは別次元だわな。
それは非常に大きな課題だし。
0704nobodyさん04/09/26 18:13:38ID:tuEyJcFU
すみません、以下の要件を満たすためにはどのように書けばよろしいでしょうか。

・テキストの中から<div align="left">という文字列が含まれる行を探す
・みつかった<div align="left"> の行から、その次の </div> までのテキストを
抜き出してprintする

-<div align="left"> はテキスト中に1つのみです。
-</div> は何度も出てきます。

現状 @stringlist に突っ込んで、行数固定で抜き出していますが、
これだと(動的に生成されるページである為)内容が変わってしまうと
対応できません(当たり前)^-^;

よい方法があればお教えくださいm(_ _;)m
0705nobodyさん04/09/26 18:18:45ID:???
>>704
正規表現を体得するのぢゃ、若きヂェダイよ
070670404/09/26 18:31:00ID:tuEyJcFU
はい。マスター。

いま、こんなかんじです^-^;

--------------------------------------------------
#!c:\perl\bin\perl.exe

open(IN, "bin.html") || die "cannnot open!\n";
@stringlist = <IN>;

#読み出す行数
$end = 10;

for ($begin=1;$begin<$end;$begin++){
print @stringlist[$begin];
}

close(IN);
--------------------------------------------------
070770404/09/26 18:31:31ID:???
sage忘れすいませんマスター
0708なちじょあ ◆yEbBEcuFOU 04/09/26 18:51:12ID:???
( ● ・3・ ● ) エェー @text = <IN>; $text = join('', @text);
               $text =~ s|.*<div align="left">(.*?)</div>.*|$1|s;
070970404/09/26 18:53:56ID:???
1.$begin = @stringlistから、<div align="left"> を探して、その行数を返す。
2.$end = 1の行数から検索を開始して</div>が見つかった行数を返す

で、実現できそうな気がするのですが、

・配列から任意の文字列を含む行を探す
・別の文字列を含む行を、特定の行(1で見つけた行)以降で探す

方法はないでしょうか。
0710nobodyさん04/09/26 18:59:41ID:???
>>704
use HTML::Parser;
071170404/09/26 19:01:06ID:???
>>708
2行ーッ!!!??
バチーリですた。
なちじょあ ◆yEbBEcuFOU マスター。

でも何やってるかびっくりするぐらいさっぱりです。
…<div align..> と、</div> 行を含んだものを出すには、どこを
どういじればよいのでしょうか。

現状--------------------------------------------
open(IN, "bin.html") || die "cannnot open!\n";
@text = <IN>;
$text = join('', @text);
$text =~ s|.*<div align="left">(.*?)</div>.*|$1|s;

print $text;
---------------------------------------------------
071270404/09/26 19:19:13ID:???
解読試みるス。マスター。

$text = join('', @text); #''という文字列で区切って挿入。1行に纏めたんスねマスター。
$text =~ s|.*<div align="left">(.*?)</div>.*|$1|s; # ~ <^-^;???
0713nobodyさん04/09/26 19:24:45ID:???
>>711-712
「出力されてるのは <div 〜>(かっこの中身ですか)</div> ?」と思いながら
ぐりぐりしてみましょう。

というか、正規表現って何なのさと思いながら激しく調べてみてください。
071470404/09/26 20:35:15ID:???
$text =~ s|.*<div align="left">(.*?)</div>.*|$1|s;

↑この行がさぱりです。

$text =~ s :$textの中身を置換する
| :or
.* :拡張子は問わない??

まず、なぜ 置換とそれ以降がorで分けられるのでしょうか??
071570404/09/26 20:51:59ID:???
>>マスター

.*<div align="left">(.*?)</div>.*

これの意味がなんとなくわかりますた!
拡張子全然関係ないですねm(_ _;)m

-----------------------------------------------------------------
任意の文字列の後に<div align="left">がきて(?不明)<div>がきて、
その後にまた任意の文字列
-----------------------------------------------------------------

で、あっていますか?
0716nobodyさん04/09/26 21:02:51ID:???
いい加減スレ違いだから
0717nobodyさん04/09/26 23:16:27ID:???
704を見て思ったんですけど、
外部ファイルの、改行の3つ目まで読み込む
にはどんな手順を踏めば出来ますか?
0718nobodyさん04/09/27 00:12:36ID:???
>>717
forでいいじゃん
071971704/09/27 00:18:45ID:???
>718 forでどうすればいいか分からないです。。。
0720nobodyさん04/09/27 00:38:54ID:???
>>719
ファイル操作,perlでググってこい
そして一回コード書いてから質問しろ
0721nobodyさん04/09/27 01:15:18ID:???
>>704
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/pe_k08.htm
これを読みながら逆上がり10回出来ればわかると思うよ
0722nobodyさん04/09/27 01:23:16ID:???
あ、書き忘れていましたが、外部記録ファイルの中身は1000行くらいあるので、全部読み込むのは避けたいんです。@buf=<IN>以外で3行だけ読む方法はありませんか?
0723nobodyさん04/09/27 01:26:10ID:???
>>722
>>720
0724nobodyさん04/09/27 01:31:14ID:???
声優が岩男潤子で
サリー・セイント・フォードか。
これは偶然なんですか!
0725nobodyさん04/09/27 01:31:37ID:???
超誤爆
0726nobodyさん04/09/27 01:36:46ID:???
>>722
1000行なんかなにも気にする必要ないぞ?
ファイルサイズ 50k とかでしょ?
10万行とかいかない限り、気にしてもしょうがない。
0727nobodyさん04/09/27 04:34:02ID:77N/SlLL
はじめまして。
Perlのデータ受け取りに関しての質問です。

<input type="hidden" name="com" value="$in{com}">

の$in{com}部分に、改行を入れても、一般的に問題はないでしょうか?
htmlに

<input type="hidden" name="com" value="あ




">

のように記述しています。
あ\nい\nう\nえ\nお\n
のようにデータを受け取ってくれますでしょうか?
0728nobodyさん04/09/27 04:42:38ID:???
質問する前にやってみればいいじゃん
0729nobodyさん04/09/27 07:54:57ID:???
>>722
@buf[0..2] = <IN>;
0730nobodyさん04/09/27 08:54:55ID:???
>>722
while(<>) {
exit if $. > 3;
print;
}
がいいんじゃあない?
0731nobodyさん04/09/27 10:56:24ID:???
指定ディレクトリにあるファイル名一覧を配列に取得するのはどのように書けばいいでしょうか?
0732nobodyさん04/09/27 11:16:10ID:???
>>731
とりあえずこんなとこだろう

opendir(DIR, $some_dir) || die "can't opendir $some_dir: $!";
@filenames = readdir(DIR);
closedir DIR;
0733nobodyさん04/09/27 12:20:51ID:???
>>732
ありがとうございます!
家に帰ったら試してみます!
0734nobodyさん04/09/27 15:47:48ID:???
CSVファイルを読み込んでそれをX件ずつ表示するプログラムを組みたいのですが
(Googleの次のX件とかみたいの)どういう風に組めばいいのかさっぱりわかりません。
参考になりそうなソースとかないでしょうか?
073572204/09/27 16:50:03ID:???
>723
出てきた出てきた^^;ググルって要らないサイトばっかマッチする糞検索鯖だと思ってました(ショボーン

>729>730
ものすごく簡潔で驚きました^^;;;
0736nobodyさん04/09/27 17:01:46ID:???
はぁ…
0737nobodyさん04/09/27 17:30:22ID:???
↓次の質問どうぞ
0738nobodyさん04/09/27 18:11:02ID:???
>>735
帰れ^^;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;
0739nobodyさん04/09/27 18:48:57ID:???
質問させてください。
サブルーチンからハッシュを返す方法がどうにもわかりません。
いろんなサイトをググってみたのですが、実際に試しても上手くいませんでした。

---------------------------------------------
%hashA = ("aaa","0","bbb","1","ccc","2") ;
%hashB = &hash_return() ;

print %hashA ;
print "\n";
print %hashB ; #←渡ってないので何も表示されない・・・(´・ω・`) ショボーン

sub hash_return{
%hoge = ("aaa","0","bbb","1","ccc","2") ;
return \%hoge;
}
---------------------------------------------
0740nobodyさん04/09/27 19:02:52ID:???
sub hash_return{
%hoge = ("aaa","0","bbb","1","ccc","2") ;
return \%hoge; #★★★ この \ を取れクズ野郎 ★★★
}
0741nobodyさん04/09/27 19:06:26ID:???
\%hogeで返すんなら、受け側は$hashBになるわな
0742nobodyさん04/09/27 19:06:40ID:???
>738
うざい氏ね^^;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;





:イラネ(・△・)
0743クズ野郎です04/09/27 19:07:51ID:???
おお?
それも試したはずなんですが・・・
ありがとうエロいおじちゃん! >>740
0744nobodyさん04/09/27 19:11:13ID:???
負荷計測とかしたいのですが、やり方とかあるのでしょうか?
教えて!偉い人!
0745nobodyさん04/09/27 19:32:56ID:j0XZIPtZ
無名配列の配列数を得るにはどうすればいいのでしょうか?
$#hoge だとエラーになります
0746nobodyさん04/09/27 20:14:02ID:???
>>745
$#$hoge
0747nobodyさん04/09/27 20:34:39ID:???
データのソートで悩んでます。

100の1
1000の2
100の3
500の1
1000の1
500の2
100の2

みたいに数字と日本語が混ざったデータを

100の1
100の2
100の3
500の1
500の2
1000の1
1000の2

にしたいのですが、<=> cmp どちらでやってもこのようになりません(当たり前なんですが…)。
どうやったらこんなソートが出来ますか?
0748nobodyさん04/09/27 20:44:35ID:kQMIC0Dw
foreach(@chinko){

 my $seieki;

 $seieki++;

print "$seieki";

}

とやると毎回、$seiekiが1になります。

 my $seieki;

の部分、一般的には、$seieki=0;とするのが普通でしょうか?
my〜は数値をリセットするためにも使用するものなのでしょうか?
詳しい方がいたら教えて下さい。
074974704/09/27 21:01:06ID:???
力技(?)で解決しちゃいました。
100の1
1000の2

100.1
1000.2
のように日本語の部分を小数点にしてソートしてあとで小数点を日本語に戻しました。

もっといい解決策がありましたら教えてちょ。
0750nobodyさん04/09/27 21:15:45ID:???
>>749
100の100と
100の2の大小関係は?
0751nobodyさん04/09/27 21:40:41ID:???
>>747
print
  map "$_->[2]\n",
  sort { $a->[0] <=> $b->[0] || $a->[1] <=> $b->[1] }
  map [ /(\d+)/g, $_ ],
  qw(100の1 1000の2 100の3 500の1 1000の1 500の2 100の2);

>>748
my $count;
foreach (@data) { $count++; print $count }

print 1..@data;
0752nobodyさん04/09/27 22:58:40ID:???
>>744
ttp://www2u.biglobe.ne.jp/~MAS/perl/waza/index.html
0753nobodyさん04/09/28 05:45:24ID:pXXg1bBk
行数を減らすと処理速度は速くなるのでしょうか?
0754nobodyさん04/09/28 05:54:35ID:???
試せ。
0755nobodyさん04/09/28 06:00:08ID:???
ストップウォッチ持ったか?
真中のは時計のスイッチだぞ。間違えんな
0756nobodyさん04/09/28 06:09:05ID:B5P8Vfsa
おはようございます。
現在win2kにてActivePerl-5.8.4.810-MSWin32-x86.msi
を入れて使っています。

9桁以上の10進数正数(例えば36089479532304)を
16進数変換したいのですが
$a = sprintf "%X", $a;
のようにすると8桁までしか変換できず、オーバーフローした場合はFFFFFFFFとなってしまいます。

どうにか9桁以上を変換できないものかと色々検索したのですが
みつからず・・お力を貸していただけないでしょうか。
アドバイスいただければ幸いです。
075775604/09/28 08:06:42ID:???
Hex(36089479532304);

sub Hex {
my $val = shift @_;
my @hx = (0..9,'A'..'F');
my $hex;
while ($val > 15) {
$hex = $hx[$val % 16].$hex;
$val = ($val - ($val % 16)) / 16;
}
$hex = $hx[$val]. $hex;
return $hex;
}

先ほどの9桁以上の10進数→16進数変換はこのような形でなんとか
いけました。

そしてもう一つの問題が・・
巨大整数計算なのですが
3164311364の二乗 3164311364**
みたいなことをやると
1.00128664083395e+019
のような形になってしまいます。
use bigint;

use Math::BigInt;
も宣言してみたのですが結果は同じです。
きちんとした整数を出してやるにはどうしたらよいのでしょうか。
1.00128664083395e+019に関してはオーバーフローしている部分が
019にはみ出しているのかと思い、
19100128664083395としてみたのですが
これでは二乗の答えになっていません。
0758あぼーんNGNG
あぼーん
0759あぼーんNGNG
あぼーん
076075804/09/28 10:44:15ID:???
>>759
サンクス。
助かりました。
0761nobodyさん04/09/28 13:20:00ID:???
一般的にjcodeが一番負荷かかるのかな?
0762nobodyさん04/09/28 14:31:19ID:???
>>761
わたくしがその難問に答えてしんぜよう。

で、jcode と何を比べた場合??
0763nobodyさん04/09/28 17:00:49ID:???
>>757
「1.00128664083395e+019」とは、「1.00128664083395×10^19」の意味だ。
BigIntは使い方が間違っているのでは?
次のようにすると、「+10012866408339540496」と出力される。

use Math::BigInt;
my $x = Math::BigInt->new('3164311364');
print $x->bpow(2);
0764nobodyさん04/09/28 17:02:40ID:???
小数点での四捨五入の処理について質問です。
(該当件数 / 合計件数)をパーセントで表示しようと思っています。
例えば、合計3件の該当1件ならば33.33333%となります。

# 小数点第二位での四捨五入処理
$percent = ($count / $total * 100);
$percent = $percent * 10;
$percent = (int ($percent + 0.5) / 10);

こうすると、33.3%となりますが、これを3回繰り返しても合計100%にはなりません。
割り切れない数(無限小数でしたっけ?)を含むパーセンテージが存在する場合、
合計を100%にするということは不可能なのでしょうか。
076574704/09/28 17:40:11ID:???
>>750
おっと、ドツボに嵌るところでした。
指摘サンクス

>>751
完璧です。
すばらしい!
ありがとうございましたぁあ!
0766nobodyさん04/09/28 20:15:27ID:???
758-759
ってなにが有ったんだ?(w
0767nobodyさん04/09/28 20:52:52ID:???
googleのURLエンコードされた文字列をeucに変換したくて色々とやっているのですがうまくいきません
perl4とunicode.plとjcode.plを利用しています
(jcode.pmの利用許可が下りませんでした)

#!/usr/local/bin/perl
require './unicode.pl';
require './jcode.pl';
$googleurl = "%E5%AE%9F%E9%A8%93";
$teststr = "実験";

$googleurl =~ s/%[0-9A-F][0-9A-F]/pack("C",hex($1))/eg;
@googleuni = &unicode::UTF8toUTF16($googleurl);
$googleurl = &unicode::u2e(@googleuni);
print "$googleurl\n";

としているのですが何も出力されません
0768nobodyさん04/09/28 21:32:44ID:???
>>767
unicode.pl というのがコレの事なら
http://www.onicos.com/staff/iz/release/#unicodepl
Perl4 では動かない。
0769nobodyさん04/09/28 21:52:17ID:???
>>766
電話番号の数字をある規則で文字に置き換えるプログラムとかいう
お題だったんだけど、サンプルに電話番号のような文字列が含まれ
ていたのであぼーんされたようです。
077076704/09/28 22:22:13ID:???
うわ、すいませんperl自体は5.005_03の様です・・・
/usr/binが先にパス通っててそっちでperl -vしてました・・・
0771nobodyさん04/09/28 22:25:55ID:YPzWwkuA
コマンドラインの代用となるようなCGIスクリプト
を書こうと思ってます。
フォームから簡単なスクリプトを送るとその結果をブラウザに
返すようなプログラムです。

で、perlのスクリプト上でperlのスクリプトを評価するような
処理をしなければいけないのですが、どのように実現すればいいでしょうか?
0772nobodyさん04/09/28 22:48:54ID:???
eval
0773nobodyさん04/09/28 23:06:43ID:???
>>767
× $googleurl =~ s/%[0-9A-F][0-9A-F]/pack("C",hex($1))/eg;
○ $googleurl =~ s/%([0-9A-F][0-9A-F])/pack("C",hex($1))/eg;
0774nobodyさん04/09/28 23:13:04ID:???
掲示板で、読むときCGIによる記録ファイル読み込みではなくHTML出力にして、書き込む時だけCGIを使うようにしたら多少は負担が減るんですか?
一定時間に@5人に1人が書くときA100人に1人が書くとき(チャット) で教えてください
0775機種依存文字を使う奴は氏のう04/09/28 23:18:25ID:???
1. 読むときCGIによる記録ファイル読み込みではなくHTML出力にして、書き込む時だけCGIを使う
2. 読むときCGIによる記録ファイル読み込みではなくHTML出力にして、書き込む時だけCGIを使う
0776nobodyさん04/09/29 00:22:34ID:???
フツーに考えれば掲示板だろうがチャットだろうがトータル負荷は減る。
だがしかし、ファイルが壊れるリスクを考慮すると、書き込み時の処理はシンプルにしたいところ。

よって掲示板には有効だが、ほいほい書き込みが発生するチャットには向かない。
0777774名無し04/09/29 00:39:19ID:???
>775
すみません
>776
ありがとうございました
0778nobodyさん04/09/29 03:57:33ID:6EqyI/FO
(1)変数へ代入する処理を減らす
(2)print "〜";文をなるべく1つにまとめる

みなさんはどちらを優先しますか?
またどちらの方が負荷は減るでしょうか?
詳しい方、意見お聞かせ下さい。
0779nobodyさん04/09/29 04:50:59ID:???
そんなことはどうでもいいので
アルゴリズムの改善を汁
0780nobodyさん04/09/29 09:15:35ID:???
>>779 に同意
CGIで一番負荷がかかるのはperl自身のプロセス起動
次はファイルの入出力
代入だのprintだのは誤差の範囲
0781nobodyさん04/09/29 09:27:47ID:???
>>780
プロセス起動なんて軽くでけるん?
mod_perl使えってのは無しな(w

ファイル入出力は同意。
0782nobodyさん04/09/29 09:51:57ID:???
いや、ファイル入出力はどのように入出力してるか見れば、あまり軽くは出来ないだろう。
と言うか、ファイル入出力を見直して軽く出来たら書いた人間が糞。
と言うわけで>>781 mod_perl使えw
0783nobodyさん04/09/29 10:24:02ID:???
mod_perlも扱いが難しい。
掲示板程度のスクリプトでも長いこと動かしていると、プロセスの
メモリ占有量が馬鹿みたいに膨れ上がる。

グローバル変数はほとんど使わないように組んでるし、
my で宣言したものはスコープを外れた時点で解放して欲しいんだけど、
ちゃんと領域を回収してくれてないのかな。
そういえばPerlのGCって意識したことなかった。
0784nobodyさん04/09/29 10:24:05ID:???
世の中の全ての
全てのPerlで書かれたCGIが
use strictしてあって
動いてたなら
世界はもっと平和だったのに
0785nobodyさん04/09/29 10:26:47ID:???
>>781
肥え太った 5.6.x 以降を使わず 5.005_0x を使うと少しは
軽くなるかも知れない。Perl4 スタイルな小規模スクリプト
がメインなら、無闇に Apache::PerlRun で走らせるよりも
CGI にした方が軽い場合もある。

まぁ全てはケースバイケースだから、Apache Bench で
計るなりして最適な選択を。
0786nobodyさん04/09/29 10:30:04ID:???
Apache BenchってDoS攻撃ツールじゃなかったの?
0787nobodyさん04/09/29 10:49:25ID:???
>>783
PerlのGCは中での再利用はするけどOSには返さないって昔聞いた気が
する。ほんとかどうか知らんけど......
0788nobodyさん04/09/29 11:06:14ID:???
>>787
Perlに限らず大抵の処理系はGCしてもプロセスが終了するまで
メモリをOSに返さないと思われ。
0789nobodyさん04/09/29 11:09:44ID:???
例えば掲示板で記事を表示する時に

while(<TAKESI>){

($a,$b,$c,$d,$e,$f,$g,$h,$i,$k)=split(〜);

いろいろ表示

}

こういう処理がありますが
my($a,$b,$c,$d,$e,$f,$g,$h,$i,$k)=split(〜);
このようにmyを付けた方が処理は早くなるのですか?
みなさんは付けてますか?
079077104/09/29 11:11:05ID:2geLnUuH
>>772

ありがとうございます。
evalで検索かけたら
http://oshiete1.goo.ne.jp/kotaeru.php3?q=908814
というページも見つかりました。
0791nobodyさん04/09/29 11:18:50ID:???
>>789
http://www5a.biglobe.ne.jp/~n_rieko/perl/9.htm#9-3
0792nobodyさん04/09/29 11:22:47ID:???
print "あいうえお".($a-6)."かきくけこ";

こういうのってperl4でも使えるのかな
使ったら出来ちゃってるけど
0793nobodyさん04/09/29 12:26:13ID:???
>>783
mod_perl の問題じゃないよ
0794nobodyさん04/09/29 13:11:59ID:???
>>791
は?myはlocalより早いってとこ?
シンボルテーブルに登録されないから、グローバル変数や
local変数より早いって理解でいいでつか?
0795nobodyさん04/09/29 13:45:38ID:???
localはブロックを出入りするときに元の値を退避して戻す
処理が入るのでさらに遅いのです。
0796nobodyさん04/09/29 14:05:03ID:???
>>794-795
ひょっとしてここの人達って、ループ中のサブルーチン呼び出しを
インライン展開しなくちゃいけないくらい激しくチューニングしてるわけ?


>>793
mod_perl の問題じゃないんだとしたら、Apache::Registryモジュールのせい?
0797nobodyさん04/09/29 14:15:59ID:???
頭のいい漏れはぜんーぶグローバルで書く。それが一番速い。
0798nobodyさん04/09/29 14:36:10ID:???
>>797
ファイルの先頭でmyしてグローバルっぽく使う方が微妙に速いんじゃない?
0799nobodyさん04/09/29 14:51:18ID:???
※※※↓次の質問ドゾー※※※
0800nobodyさん04/09/29 16:30:57ID:???
なんか面白いことないんかか?とも思われるのでとりあえずこんなことを。
Perlのコンパイラって何言語で書かれてるの?おまら知ってる?
そもそもどうやってプログラムがうごくのかよくわかあんよな。
CGIいくら組んでも根本的な部分をしらないとだめだな。

ところでCSV形式って区切り子がカンマでしょ?まあ名前の通りだけど。
でも改行も区切り子になるの?

a,s,d
s,d,f

↑これとかってdとsがくっついたりしないの?まあPerlでは
open CSV "hoge.csv";
while ( <CSV> ){
chomp;
printf "大地%s 空%s 海%s <br>\n" ,split/,/;
}

ってchomp意味内やン家!なんか久しぶりにperlのコーディングでもしよ尾も運だすので
カメハネml?
0801nobodyさん04/09/29 17:07:47ID:???
※※※↓>>1 をよく読んでから次の質問ドゾー※※※
0802nobodyさん04/09/29 23:53:39ID:???
>>800
C
http://www.google.co.jp/search?q=perlembed&sourceid=firefox&hl=ja-JP&start=0&start=0&ie=utf-8&oe=utf-8
http://rcl.hp.infoseek.co.jp/perl.html
0803nobodyさん04/09/30 10:21:11ID:???
オブジェクト指向は出来るだけ使ったほうがいいんですか?
0804nobodyさん04/09/30 10:30:29ID:???
好きにしろよ
0805nobodyさん04/09/30 12:12:21ID:???
質問です。
テキストフィールドに書かれた文字をファイルに保存しようと思っているのですが、
作成されたファイルを開くと、ファイルの先頭部分にNULL文字がセットされてしまいます。

$text = $FORM{"text"};
$text =~ s/\r\n|\r|\n/\n/g;
open (DATA, ">>$filename");
flock (DATA, 2);
seek (DATA, 0, 0);
print DATA $text;
truncate (DATA, tell (DATA));
close (DATA);
chmod (0666, $filename);

環境は ActivePerl5.6.1 IE6.0SP1 AN HTTP Daemon 1.42k でテストしていて、
ローカルですと正常にファイル保存がされるのですが、鯖に上げるとファイル先頭部分にNULL文字がセットされてしまいます。
どなたか考えられる原因をご存知の方はいないでしょうか。
0806nobodyさん04/09/30 12:40:43ID:???
>>805
ご存知ではないので一般論で。

まず$textにNULL文字が入っていないか切り分けよう。
printする前に、$text =~ s/\0/<null>/g; とかしとけば
もしはじめからNULLが入っていれば見えるようになるはず。

あともう1つあやしいのは >> で開くとO_APPENDになるので、
OSによるかもしれないがどこにシークしていても必ず書き込み
はファイルの末尾からになってしまう。その辺の問題かも
しれない。

はじめから'>'で開けばその問題はないが、省略してるが実は
読み出しもやってるとするとその手は使えないので、長さ0に
truncateしてからprintするか、sysopen使って

sysopen(DATA, $filename, O_RDWR|O_CREAT) or die;

みたいにすれば回避できると思う。

0807nobodyさん04/09/30 12:54:35ID:???
>>でopenしてseek(DATA, 0, 0)するのは無駄手間にしか見えないが。
080880504/09/30 13:12:09ID:???
返答ありがとうございます。
補足になりますが、テキストフィールドの内容をファイルに新規保存するだけのものでして、読み出しは行いません。
また、ローカルでテストする際のOSはWin2000Proです。
$text =~ s/\0/<null>/g;を試してみたところ、<null>という文字列は入りませんでしたので、入力内容にNULL文字はないようです。
>>でopenしてseekは無意味と言うことで、seekを外してみましたが、結果は変わりませんでした。
また、>でopenしてみたところ、正常に動作しました。

>>806,807氏、ヒントをありがとうございました。
0809なちじょあ ◆yEbBEcuFOU 04/09/30 14:34:52ID:???
( ● ・3・ ● ) エェー XREAでは広告入ると空行入るけど違うかNA
0810なちじょあ ◆yEbBEcuFOU 04/09/30 14:35:18ID:???
( ● ・3・ ● ) エェー あ、解決してたスマSO
081180304/09/30 14:56:10ID:???
>804
そうですか、友達に負担がかかるからやめろと言われましたが、騙されたようですね_no

もう一つ質問ですが、kent-webのCGIはダメポと聞きますが、Perlとしてどこがダメポなんですか?
0812nobodyさん04/09/30 15:05:59ID:???
使ったこと無いから落としてみた。
出力されるHTMLのインデントとかはもう見てらんないな。
Perlについては詳しく無いから↓の人詳細よろ
0813nobodyさん04/09/30 15:20:43ID:???
>>811
スレ違い
0814nobodyさん04/09/30 15:55:47ID:???
>>811
そんなこと聞いてどうするよ?
kent最高だから使っとけ
ついでにレスキューも使っとけ
081581104/09/30 15:58:51ID:???
>812
トンクス!なるほど、たしかにすごいHTML…
>813
スマソ
>814
そうでつか
0816nobodyさん04/09/30 16:01:47ID:???
>>811
お前向けのスレはここだ。

KENT WEB 総合スレ Part2
http://pc5.2ch.net/test/read.cgi/php/1078991985/
0817nobodyさん04/09/30 18:09:03ID:???
使い勝手とかで選ぶんならkentだっていいだろう
ただしソースは見るなよ
0818nobodyさん04/09/30 20:00:11ID:???
KENT陛下は厨にも見易いよう、わざと糞ソースをお書きになられておるのであります
0819nobodyさん04/09/30 20:00:36ID:???
おまいら、MattさんのGuestbook使えよw
久しぶりにyybbs見たけど相変わらずザルだね
スパゲッティー度上がってるし
0820nobodyさん04/09/30 22:21:44ID:ByT9cFMW
モジュールの中にある頭にアンダーバーがついてる関数っていうのは
そのモジュールの中でしか使わない関数っていうことでよかったですよね?
0821nobodyさん04/09/30 22:37:25ID:???
>>820
そういうローカルルールを採用する人もいる。
しかし Perl は君が他人の私物を拝借しても咎めない。
0822nobodyさん04/09/30 22:41:23ID:???
>>820
privateのつもりなのかprotectedレベルなのかは分かんないけどね。
0823nobodyさん04/09/30 22:59:24ID:???
finalかも(ry
まあ820-821の理解で十分じゃね。
もともと印程度のいいかげんなものだし、
なんやかんやで読んじゃったりするし。
0824nobodyさん04/09/30 23:29:58ID:???
>>821
他人の私物を拝借したら咎めるようにするモジュールもある
0825nobodyさん04/10/01 02:57:04ID:???
<input type="hidden" name="foo" value="bar#hoge">
というのをform要素内の最後尾につけて、IDに対してののアンカーにしたいんですが、

〜foo=bar#hoge
とならず、
〜foo=bar%23hoge
とバケてしまいます。
どう記述したらバケずにできますか?
0826nobodyさん04/10/01 03:14:42ID:???
何だかよくわからんがurlエンコードされてるだけかと
0827nobodyさん04/10/01 09:53:29ID:???
>>825
生成されたHTML側でJavaScript使って飛ばせば?
0828nobodyさん04/10/01 10:26:24ID:???
perlscriptでWEBブラウザからtracertやnetstat等、システムコマンドを使い、その結果を新しいウィンドウで表示したいのですが、
以下のようにしても結果が表示されません。表示する変数には実行結果の最後の行だけが入っている模様です。
他の方の質問と比べて低LVで申し訳ありませんが、お助けください_no

<html><head><title>TraceRoute</title></head>
<script language = "PerlScript">
sub button1_click{
$form = $window->document->form;
$host = $form->host->{'value'};
@traceroute = `tracert $host`;
$window->document->write("@traceroute");}
</script>
<body>
<h2>TraceRoute</h2><hr>
<form name="form"><table>
<tr><td>IPアドレス or ドメインネーム:</td>
<td><input type="text" name="host" size=50 value=""></td></tr>
</table><p>
<input type="button" name="button1" value=" 実行 " onclick="button1_click()">
</p></form></body></html>
0829nobodyさん04/10/01 11:09:56ID:???
>825
アンカーくっつけるためのもんじゃないから無理
0830nobodyさん04/10/01 11:49:58ID:???
>828
クライアントプログラミングはム板に逝ったほうがいい
0831nobodyさん04/10/01 11:57:33ID:???
>827
JS使わんと無理ですか?
083282804/10/01 12:14:58ID:???
>>830
お手数掛けました。あちらで聞いてみますね。
083382504/10/01 12:56:20ID:???
渡されるアドレス内の#をバケさせない方法はないんですかね。
0834nobodyさん04/10/01 13:35:55ID:???
>>833
それは化けているのではないし、Perl の問題でもないのでスレ違い。
http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/interact/forms.html#h-17.13.4.1
http://e-words.jp/p/r-ascii.html
http://www.din.or.jp/~ohzaki/perl.htm#JP_Escape
http://pc5.2ch.net/test/read.cgi/php/1095633323/
0835nobodyさん04/10/01 13:46:06ID:???
質問です。テキストフィールドに選択したテキストファイルを読み込んで表示させようと思っており、
選択されたファイルがバイナリファイルであればエラーを返す処理をしようと思っています。
しかしながら、テキストファイルにもかかわらずバイナリファイルと判定されてしまい、
ファイルを展開できないことがあります。

 opendir (DIR, ".");             # カレントディレクトリ
 while ($filename = readdir (DIR)) {
  if (-d $filename) {            # ディレクトリ
   next;
  }
  if (-B $filename) {            # バイナリ
   next;
  }
  push (@files, $filename); # ファイルの一覧
 }

全てが半角英数字のテキストの場合は、テキストファイルであると正常に判定されるようです。
選択したファイル内に2バイト文字があると-Bでは正確に判定できないのでしょうか。
0836nobodyさん04/10/01 14:35:28ID:???
>>835
入ってるんだよ。バイナリコードが。ほら、そこにネ。
0837nobodyさん04/10/01 14:42:32ID:???
>>836
わかんねぇカスはすっこんでろよ(pgr

>>835
JPerlが使えるのならば、そちらだと確か正常に動いたと思う。
ファイルを展開するんなら、ファイルを読みこんだ後、
表示させる前にNULL文字のチェックをしてみるのはどうだろうか。
拡張子を制限するとか、対策は色々あると思うぞ
0838nobodyさん04/10/01 15:00:34ID:???
>>835
http://perldoc.com/perl5.8.4/pod/func/-X.html
シングルバイト文字圏の人が言う「plain text」は、マルチバイト文字は考慮
していない。use encodings 環境下とかでどうなってるかは知らないけど。
0839nobodyさん04/10/01 18:40:00ID:???
携帯の絵文字(100個以上)を画像のURLに置換したいんですが、まとめて置換できませんか?今は1個1個(s/ゥ/<img src=\/img\/001.gif>)でやっています…
0840nobodyさん04/10/01 19:45:04ID:???
>>839
http://www5a.biglobe.ne.jp/~n_rieko/perl/4.htm
084182504/10/02 00:17:02ID:???
>>834
有難う御座います。
そっち行って聞いて見ます。
0842nobodyさん04/10/02 04:12:13ID:???
foreachの逆ってありますか?
配列を後ろから読む、というような。
0843nobodyさん04/10/02 04:15:39ID:???
>>842
ありません。
reverseで逆順に並べ替えれば済むし。
0844nobodyさん04/10/02 04:17:10ID:???
>>843
即答ありがとうございます。
reverseですね。それを使うことにします。
0845nobodyさん04/10/02 06:14:55ID:???
フォームの窓AからPOST > 窓Bに結果表示 > 窓Cを再読込

ということをしたいのですが…。出力したときにjavascriptを埋め込むとかでしょうか。うーん。
0846nobodyさん04/10/02 06:31:48ID:iwLkYg8H
Active PerlをWin2000のC:\PerlにインストールしましたがCGIが動きません。
CGIはInetpub/cgi-bin/に置いています。
Prelのバージョンは多分5.6だと思います。
Perlへのパスは#!/user/local/bin/perlにしてます。
どうすればよいでしょうか?
ちなみにPerlインストール後は設定を何もいじってません。
よろしくお願いします。
0847nobodyさん04/10/02 06:56:22ID:???
>>846
IISの設定は知らないがとりあえずPerlのパスは
#!C:/Perl/bin/perlだろ
#!/Perl/bin/perlでもいいかも
0848nobodyさん04/10/02 07:16:33ID:???
>>846
httpdは?
Perlだけ入れてもCGIとしては動かんよ。
0849nobodyさん04/10/02 08:03:38ID:iwLkYg8H
>>848
httpdってどこをどのように変更するのでしょうか?
よろしくお願いします。
085084904/10/02 08:45:47ID:iwLkYg8H
IISが入っているのですがhttpdが必要なのでしょうか?
0851nobodyさん04/10/02 08:55:46ID:xWycr4I2
「iis perl」でググれば普通に情報が見つかるもんだが。
ttp://www.din.or.jp/~bigstone/cgilab/cgitips/iis.html

関係ないけどミケネコさんてお亡くなりになったのね。超ショック。
ご冥福をお祈りします。
0852nobodyさん04/10/02 09:12:09ID:???
亡くなったのはミケネコ本人じゃなくてサーブル研究員らしい
0853nobodyさん04/10/02 09:15:32ID:???
そですか。あのサイトはいろいろお世話になったから復活してほしい。
関係ないのでsage
0854nobodyさん04/10/02 09:36:37ID:???
スレ違いスマソ。

>>852-853
全ての研究員の中の人をお一人でやっておられたという説もある。
コンテンツはまた公開されそうな気配。
http://pc5.2ch.net/test/read.cgi/hp/1092690398/121
085584904/10/02 09:55:27ID:iwLkYg8H
>>851
返信ありがとうございます。
早速サイトを見ます。
0856nobodyさん04/10/02 15:40:45ID:???
>>845-855
スレ違いは誘導して他でやれ
0857nobodyさん04/10/02 19:17:38ID:IDTr6xb8
Redhat9
apache2
/usr/bin/perl

↑の環境でperlを使ってるのですが、最近急に掲示板の表示速度が
激しく遅くなりました。
普通のhtmlは普通に表示される、servletも動いてますがそちらも普通。
perlの掲示板のみが激しく遅いのですが、原因追及の為にどこを
調べたらいいでしょうか?
0858nobodyさん04/10/02 19:33:14ID:???
>>857
アクセス数,データの量等が影響するので、原因を特定するには情報不足だけど。多分設計の問題。
ありがちなのが、ログ等のデータをすべてメモリ上(配列など)に取り込んでるタイプの掲示版。
プロファイルとってみるといいよ。とりあえず続きは他のスレでどうぞ。スレ違い
0859nobodyさん04/10/02 20:09:46ID:IDTr6xb8
>>858
レスどうもです。
どこのスレで聞いたらいいでしょうか?

cgiは以前は普通に動いてたんです。それからデータサイズも大して
変わってないので原因がよくわからないんです。
何もいじってないですし・・・
0860nobodyさん04/10/03 00:22:34ID:???
>>859
だからプロファイルとってみるといいって書いてくれてるだろ
0861nobodyさん04/10/03 00:44:45ID:???
>>860
それはわかってるんですけど、スレ違いってことなので
続きの質問はそっちでするべきなんでしょ?
0862nobodyさん04/10/03 00:49:57ID:???
#!/usr/bin/perl -dDProf
でプロファイルとって、dprofppで解析か。
perlつーのは至れり尽せりだな。
0863nobodyさん04/10/03 01:05:09ID:lnyRtEhY
とあるスクリプトにCMS.pmというのが入っていたのですが、
これって何の略で具体的にどういう役割なんですか?
0864nobodyさん04/10/03 01:30:02ID:???
>>863
スレ違い
0865nobodyさん04/10/03 03:22:11ID:???
>>863
Core Mettya Sugee
0866nobodyさん04/10/03 03:57:51ID:???
LWPを使って行単位でファイルを読み込むことができるでしょうか?
0867nobodyさん04/10/03 04:22:11ID:???
callback を使えば一定サイズ毎に区切って読み込むことはできるが
行単位にはならないだろうな

一旦普通に全部読み込んでから改行コードで分割しる
086886604/10/03 04:25:29ID:???
>867
ありがとうございました
0869nobodyさん04/10/03 07:12:49ID:???
PerlでPDF扱いたいんだけどいい方法ない?
0870nobodyさん04/10/03 11:40:15ID:???
>>869
PDF_lib
ライセンスには気をつけろ
0871nobodyさん04/10/03 12:04:16ID:???
>>869
fpdfもあるでよ
0872nobodyさん04/10/03 12:24:14ID:???
>>870-871
PDFをHTMLorTEXTに変換したいんですが
どちらが向いてますか?
0873nobodyさん04/10/03 13:09:12ID:???
>>872
レポートよろしく。
0874nobodyさん04/10/03 14:28:22ID:???
ほらな、スレ違いは相手にすんなって。
教わっても調べようとしない>>872みたいなバカしかいないんだから。
0875nobodyさん04/10/03 14:36:47ID:???
>>874
つまらないレスつけるぐらいなら誘導してくれ
0876nobodyさん04/10/03 14:53:33ID:???
>>862
#!/usr/bin/perl -d:DProf
だね
0877nobodyさん04/10/03 15:05:17ID:???
>>875
そんなのはスレ違いの回答をしてるバカにやらせろ
つーか、お前がやればいいだろ
0878nobodyさん04/10/03 15:28:59ID:???
>>877
文句ばっかり書いて暇そうなお前がやってくれてもいいじゃないか
俺は正しいスレがどこかわからん
0879nobodyさん04/10/03 15:41:21ID:???
http://search.cpan.org/search?query=pdf&mode=module
0880nobodyさん04/10/04 21:13:24ID:???
eval関数の意味がググってもいまいち分かりません。
〜or〜と同じですか?またJAVAのtry catchと同じですか?
0881nobodyさん04/10/04 21:28:29ID:???
えばるんだよ
0882nobodyさん04/10/04 23:06:02ID:YvzQlu9k
下のURLで取得したHTMLファイルを読み込んで
コードや名称、取引値、前日比等を変数に取り出すには
どうすれば出来ますか?

http://quote.yahoo.co.jp/q?s=9646+9654+9684+9752&d=v1&k=c3&h=on&z=m
0883nobodyさん04/10/04 23:23:47ID:???
>>882
おばさんをバイトに雇って、EXCELに入力させる。
0884nobodyさん04/10/05 00:58:46ID:???
>>882
正規表現を勉強しれちよ
0885nobodyさん04/10/05 04:28:40ID:???
>>882
まずお前に聞きたい。
URLを入力したら、HTMLを読み込むってことがお前にできるか?
0886nobodyさん04/10/05 04:55:02ID:???
>>885
いや、それは誰でもできるんじゃないか?
ライブラリや関数を使えば。

perlもphpのように、ローカルファイルとネット上のURLのファイルを
表面的にでもシームレスに扱えるようにしてほしい。

LWPとか使うこと自体がだるいんだよ・・・
0887nobodyさん04/10/05 05:20:22ID:???
>>886
あいつには無理だろ?
perlで
open IN,'http://2ch.net';とかしそうだし
0888nobodyさん04/10/05 07:28:09ID:9Q+F9VOE
http://xxx.jp/?mode=0001
にアクセスした時に0001の画像を。
0002にアクセスした時は0002の画像を表示させたい思って、

if($FORM{'mode'} eq "0001"){$img = "01.gif";}
elsif($FORM{'mode'} eq "0002"){$img = "02.gif";}
elsif($FORM{'mode'} eq "0003"){$img = "03.gif";}
else{$img = "04.gif";}

print "<img src=\"$img\">";

と書いたんですけど出来ませんでした…。
どの番号にアクセスしても
04.gif
の画像が出てしまいます。
どうやったら上手くいくでしょうか?
お願いしますm(__)m
0889nobodyさん04/10/05 07:44:38ID:/XKjVdNT
>>885

とりあえずは、ダウンロードツールとかブラウザでHTMLを取得して
ローカルファイルにしたものを処理対象にしようとおもってます

ソケットオープンしてGETすればできるんでしょうか?
0890nobodyさん04/10/05 07:54:11ID:???
chankedと聞いて何も思い浮かばないなら素直にLWP::UserAgent使え
0891nobodyさん04/10/05 08:53:01ID:???
open をオーバーライドしちゃいなさい。
0892nobodyさん04/10/05 09:51:59ID:???
>>888
データ受け取れてますか?

$ENV{'QUERY_STRING'};
0893nobodyさん04/10/05 10:32:30ID:???
>>892
データは受け取れてるはずだが
$FORM{'mode'}は空っぽだと思われる
089488804/10/05 11:21:13ID:9Q+F9VOE
確かにカラッポでした…
modeを使わないでそのまま$ENV{'QUERY_STRING'}と数字だけを使ってやった方が簡単でしたね。

ありがとうございましたm(__)m
0895nobodyさん04/10/05 12:05:45ID:???
XP proマシンにIISとActive Perl入れて動作検証してますが、
次のようなエラーになってしまいます。
'c:\inetpub\wwwroot\cgi-bin\apply.cgi' script produced no output

webサーバーでは正常に動いているのですが、IISでディレクトリの設定を
変える必要があるのでしょうか?
IIS開いてみたけどよく分かりませんでした。
どこを変えればよいでしょうか。
※テキストファイルを書き出すプログラムを書いています。

よろしくお願いします。
0896nobodyさん04/10/05 12:20:39ID:???
script produced no output でググればあるじゃん
0897nobodyさん04/10/05 13:37:28ID:???
ロジックに関する質問いいでしょうか。
例えばこのようなフォルダ構造がある場合、
index.cgiが全ディレクトリ内のファイルの一覧を取得する事は可能でしょうか。

[root]
├ index.cgi
├ [data]
│  ├ [data_bak]
│  │   └ log.log
│  ├ data.log
│  └ data2.log
├ [file]
│  ├ file.txt
│  └ file2.txt
└ [img]
    ├ img.gif
    └ img2.gif

index.cgiでreaddirで一覧を取得し、その中にディレクトリがあれば、その中の一覧も取得し、
さらにその中にディレクトリがあれば・・・といった形の構造にしたいのです。
0898nobodyさん04/10/05 13:42:52ID:???
>897
どうしたの?
0899nobodyさん04/10/05 13:43:53ID:???
>>897
「ディレクトリ+再帰+PHP」でググれ

あとはディレクトリのパーミッションに気をつけること
0900nobodyさん04/10/05 14:15:07ID:???
>>897
>可能でしょうか。
可能でしょう。
>・・・といった形の構造にしたいのです。
そういった構造で、可能でしょう。

プログラムとは、といった構造だと出来るのではないか、可能ではないか、
と考えて作り、動かしてみて、思った通りに行かなければ、
なぜそう行かないのかを探り、修正し、、、、
といった積み重ねで出来上がるものなのです。
0901nobodyさん04/10/05 14:31:18ID:???
>>900
0から聞かれるよりかは、可能か不可能かだけを聞いてやり方を各自で模索してくれる方がありがたいのだが・・・w
0902nobodyさん04/10/05 14:37:12ID:???
>>901
だから、実際書いて見てつまずいた所を
聞いてこなきゃ進まないわな。

可能ですか?…といった構造にしたいのです。
なら「可能です」で終わるよ。

たぶんこれ期待した答えじゃないよな。
といって具体的な質問でもないとすると、
そこまで考えてて、一から教えろって話?
0903nobodyさん04/10/05 14:43:17ID:???
質問方法なんて質問者次第だからどーでもよくねぇ?
0904nobodyさん04/10/05 14:50:30ID:???
>>1
0905nobodyさん04/10/05 14:54:11ID:???
みんなログ保存はタブで分けてる?それとも<>で分けてる
一番いいのってなんだろ
0906nobodyさん04/10/05 14:57:47ID:???
何のログだYO
その辺のヘボいBBSの名前欄とかにタブ文字入れるとログが壊れて面白いなw
0907nobodyさん04/10/05 15:01:03ID:???
>>906
掲示板とかの

タブというかログ分けのコードを消去してない奴なんているのか
0908nobodyさん04/10/05 15:04:51ID:???
俺は<>かな。理由は2chがそうだからってだけ。
0909nobodyさん04/10/05 15:09:13ID:???
俺はオブジェクトのまんまdump
091089704/10/05 15:56:46ID:???
成功しました。
サブルーチンの中でサブルーチンを呼んで、、、という方法だったのですね。
ヒントを下さった>>899氏、ありがとうございます。
0911nobodyさん04/10/05 16:53:35ID:eG43Pgsa

BEGIN{
if ( $ENV{'REMOTE_ADDR'} eq '127.0.0.1' ) {
push @INC, 'C:\Program Files\Apache Group\Apache\htdocs\public_html\cgi-bin';
}else{
push @INC, '/home/public_html/cgi-bin';
}
}

サーバでもローカルでも問題なく動かせるようにするために、自作のモジュールの場所を
上記のようにやってみた。しかしローカルでエラーが出た。多分プロンプトからやると
アドレスがおかしなことになるからだと思う。

どうやればいい?
0912nobodyさん04/10/05 17:11:26ID:???
>>911
BEGIN {
  push @INC, defined $ENV{'REMOTE_ADDR'} && $ENV{'REMOTE_ADDR'} ne '127.0.0.1'
    ? '/home/public_html/cgi-bin'
    : 'C:\Program Files\Apache Group\Apache\htdocs\public_html\cgi-bin'
}
091391104/10/05 17:19:18ID:eG43Pgsa
>>912
そうかdefinedか。
しかし&&ではなく||じゃないか?
まあ俺が間違ってそうだからテストしてみる
091491104/10/05 17:23:40ID:eG43Pgsa
う〜ん
&&だとローカルで成功
||だとサーバで成功

どちらも不完全・・・orz
091591104/10/05 17:29:18ID:eG43Pgsa
もしかしてSSHでには対応できてない?
サーバでもできるっていうのはサーバにシェルでつないで
perl -c
でっていうことなんだけど、それは無理かな?

判断基準がないのかな?REMOTE_ADDRだけでは無理だよね。
0916nobodyさん04/10/05 17:31:40ID:???
アホか・・・
0917nobodyさん04/10/05 17:33:49ID:???
>>915
じゃあ
$ENV{'DOCUMENT_ROOT'}
とか使ってみたら?俺の場合はローカルではc:始まりだけどサーバでは/usr始まりだから
それで簡単にできるけどね。
0918nobodyさん04/10/05 17:35:13ID:???
HTTP_HOST
091991504/10/05 17:35:49ID:???
>>917-918
さすが!ありがとう。
0920nobodyさん04/10/05 17:38:32ID:???
すみまそん・・・初歩的な質問で恐縮なのですが
コマンドプロンプトにPerlの構文を直接打っても機能するということを
もききにはさんだのですが、どうやればよいのでしゅか?
0921nobodyさん04/10/05 17:42:52ID:???
perl -e "print 'nullpo';"
092292004/10/05 17:46:37ID:???
>>921
ありがとうございます。できましたけど失礼しますm(_ _)m
「ガッ!」

ところで10行くらいになる場合はどうやればいいのでしょうか?
print -e "
ここdEnterを押すと何故かキャンセルされてしまうのですが。
あと print =e "
このダブルクォートは他の記号で代替できませんか?
092391104/10/05 17:56:43ID:eG43Pgsa
>>916
やっぱ無理かな?
>>917-919
自演?
コマンドプッロンプオ上では環境変数持ってないからそえではだめなのよね。
0924nobodyさん04/10/05 18:01:54ID:???
>>922
> ところで10行くらいになる場合はどうやればいいのでしょうか?

何が10行くらいになるのよ?perlのコード?出力?
perl -e "print qq/a\n/; print qq/b\n/; print qq/c\n/"

> このダブルクォートは他の記号で代替できませんか?

あんたの使ってるシェルによる。シェルの話は板違い。
0925nobodyさん04/10/05 18:02:35ID:???
$ENV{'GATEWAY_INTERFACE'}
0926nobodyさん04/10/05 18:04:16ID:???
>>923
手探りしてないでそれぞれの環境で
環境変数吐き出させて違いを調べたらどうよ。
092792004/10/05 20:00:39ID:???
>>924
windowsXPです。

>何が10行くらいになるのよ?
つまり

print 1;
print 2;
print 3;
print 4;

のような時に見栄えのために改行をしたいのですが、-eでやるとenterは実行になってしまって
改行にはなりません。

いわゆるmysqlでのEnterキーの昨日を求めています。
0928nobodyさん04/10/05 20:08:22ID:???
>>927
C:\hogehoge\>perl
print "(゚д゚)";
print "<";
print "シメジ\n";
^Z ← Ctrl + Z
(゚д゚)<シメジ
C:\hogehoge\>

> いわゆるmysqlでのEnterキーの昨日を求めています。
( ゚д゚) ?
0929nobodyさん04/10/05 20:18:28ID:???
>>928
^D では。cmd.exe だとどうかは知らんけど。
093092004/10/05 20:20:57ID:???
>>928
よくわかりません・・・
全然できないです
0931nobodyさん04/10/05 22:26:00ID:???
例えば掲示板において強制改行されない半角文字
(いわゆるテーブルのデザインを崩す文字)
は正規表現でどう表せますか?

ピックアップしてみましたが
\ ^ . $ * ? | ( ) [ ] { }
0-9 a-z A-z
これで全部でしょうか?
0932nobodyさん04/10/05 22:30:16ID:???
もぅ半角全部でいいじゃん
0933nobodyさん04/10/05 22:52:49ID:???
>>931
HTML やブラウザの話は Web 制作板で。
http://pc5.2ch.net/hp/
0934nobodyさん04/10/06 00:12:28ID:???
環境変数について質問です。
perl では ASP で言う ALL_HTTP に相当するものは無いんですか?
仕事のテストの都合でクライアントのリクエストを画面に出力したくて

print <<EOF;
Content-Type: text/html

<HTML>
<HEAD>
</HEAD>
<BODY>
$ENV{'ALL_HTTP'}
</BODY>
</HTML>
EOF

↑のようにコードを書いたんですが、何も出力されなかったので。
どなたかお知恵を貸してください。お願いします。
0935nobodyさん04/10/06 00:25:27ID:???
すみません、環境変数では無理だったようです。
お騒がせして申し訳ありませんでした…。
0936nobodyさん04/10/06 00:30:44ID:???
my $test = 'localhost/hoge/';

print "ここのURLは$testtest.cgiです";

みたいな時にコンパイラが間違わないように変数名をはっきりさせるにはどうすればいいですか?

print "ここのURLは{$test}test.cgiです";
勘でやりましたらエラーになりました;
0937nobodyさん04/10/06 00:38:18ID:???
>>936
> 勘でやりましたらエラーになりました;
${勘に頼るな、マニュアル嫁}
0938nobodyさん04/10/06 01:18:41ID:???
print 'ここのURLは'.$test.'test.cgiです';
0939nobodyさん04/10/06 01:46:09ID:???
>>937
やっぱそれしかないか。
>>938
ヒアドキュメントないだったりするからね
0940nobodyさん04/10/06 02:02:59ID:???
それしかないかって試しもせずに質問したのかよ。
しかも後出しで日亜ドキュメントとか・・・
0941nobodyさん04/10/06 02:06:12ID:???
それしかないかって言われて気づいたんだろ
0942nobodyさん04/10/06 07:17:50ID:???
>>937の意味が分かってなくて、「勘に頼るな、マニュアル嫁」に対して「やっぱそれしかないか」って言っただけだろ。

>>936
print "ここのURLは${test}test.cgiです";
0943nobodyさん04/10/06 08:07:40ID:JNRSDhvA
>>895です
script produced no outputでググってみたけど
参考となる答えが見つかりませんでした。
参考となるサイトありましたら教えてください。
おねがいします。
0944nobodyさん04/10/06 11:59:28ID:???
>>943
ウソつけ。
ぐぐったら答えはいくつも見つかったぞ。
見つかるサイトをもっとよく読め。
ついでに、スレ違い。
0945nobodyさん04/10/06 14:44:13ID:qhjXxlYs
localtime関数ってサバによって返り血違う?
どこのサバでも現在の日本時間を
2004 10 06 14:42:10
とかの形式にして
$timeに突っ込むにはどうすればよい?

sprintfの整形くだりはわかってるけど・・・
gmtime関数を使えばいいのかな?いくつ足すと日本時間だっけ?
0946nobodyさん04/10/06 15:21:57ID:???
>localtime関数ってサバによって返り血違う?
>いくつ足すと日本時間だっけ?

スレタイ嫁
0947nobodyさん04/10/06 16:49:16ID:???
文字列操作について質問です。
HTMLを取り込み、タグを全て取り払った上で、先頭から指定したバイト数(とりあえず94バイト)まで読み込みたいと思っています。
サイト内検索の結果表示に使う部分です。

# 本文の先頭から94バイトだけ抜き出す
$body = substr ($html, 0, 94);
# 先頭から切り出した本文の末尾に「...」を付加する
$body .= "...";

これで一応動くのですが、94バイト目がマルチバイト文字にまたがると、$bodyを表示させた際に、

(前略)例えば文字列があっ・..

このように、「・」が入ってしまいます。
一般の検索サイトでは正常に表示されていますが、
これはどのような処理を加えたものなのでしょうか。
0948nobodyさん04/10/06 17:54:42ID:???
>>947
最後のバイトがマルチバイト文字の途中かどうかを判定して、
途中だったらそのバイトを取りのぞく。
0949nobodyさん04/10/06 18:04:18ID:???
>>945
現在時刻, 環境変数 TZ, リスト/スカラー コンテキストでreturn valueがかわる。

>> 947
例えば2バイト文字の場合は47文字でもいいという場合なら、
文字列の末尾をチェックして切捨てで。

マルチバイト文字を1文字としてカウントし94文字切り出したい場合は、
文字コードを考慮して切り出す必要がある。

perl5.8 以降, EUC-JPでコードを書いた場合:

use encoding 'euc-jp';
my $str = "こんにちは、世界";
print substr($str, 0, 5),"\n"; # こんにちは
0950nobodyさん04/10/06 19:06:48ID:???
>>248-249
自己フォローも含めて。

最後の1バイトのみのチェックだと、
3バイト文字(utf-8やEUC-JPの一部の文字)で困るかも知れない。

JISの場合、末尾のチェックは有効じゃなかったね、
JISの場合はチェックせずに、asciiに変更するエスケープシーケンスを挿入するだけでok

予め文字コードを決めて変換しておいて、
正規表現で文字列の末尾を置換する方法が簡単だと思う。

0951nobodyさん04/10/06 19:08:02ID:???
>>947
ここも読んでおけ
http://tohoho.wakusei.ne.jp/lng/r200005/00050101.htm
095294504/10/06 19:47:26ID:qhjXxlYs
っていうかこのスレには
gmtime(time+32400)
この程度のことも回答できるやつがいないんだな

環境変数持ち出すアホもいるし。参ったよ
0953nobodyさん04/10/06 19:56:41ID:???
>>951釣りかと思ったらID同じだな。ご苦労さん。
095495104/10/06 20:08:53ID:???
>>953
えっ!俺?
0955nobodyさん04/10/06 20:12:34ID:???
コーディングとは違うかもしれませんが…
沢山のCGIで1個のjcode.plを共有使用するのと
各CGIに分けて置くのと、どっちが良いのでしょうか?
0956nobodyさん04/10/06 20:21:35ID:???
>>955
それぞれに良さがありますよ
0957nobodyさん04/10/06 20:39:41ID:???
jcode.plを使わないほうがもっと良いかもしれませんよ。
0958nobodyさん04/10/06 21:40:36ID:???
>>952
Timezoneを無視してgmtime(time+32400)なんて出すアホもいるし。参ったよ
0959nobodyさん04/10/06 22:44:43ID:???
localtime使えよ
0960nobodyさん04/10/07 01:17:27ID:i6snAbIv
HTML文を読み込んで特定の箇所に置換をしたり、行ごと削除したりするプログラムでの質問。

<input type="hidden" name="hogehoghgoehgoegh" value="ldkgjalkh">

name="(hogehoghgoehgoegh)"
括弧の部分だけを取り出してそれに対してまた正規表現をし、結果いかんで処理をわける。
っていうのをやりたい。

$str =~ /name="([^"]*)"/;                
$str2 = $1;                      
if ( $str2 eq "test2 ) { undef $str }       

みたいな感じなんだけどなんかやぼったい。もっと一発でできんまいかな
0961nobodyさん04/10/07 01:31:23ID:???
($str=~ /name="([^"]*)/)[0] eq "test2" and undef $str;
096296004/10/07 01:39:05ID:i6snAbIv
>>961
まじで・・・・^^;
($str=~ /name="([^"]*)/)[0]
こんなのありなの?相当エロイ方なのね。

しかしスカラコンテキストで評価されそうなのに、リストで評価されるのね。
これってかなり便利だよね。つまるところメチャクチャ便利だよねw

ちなみにバージョンはいくつから使えるの?perl5.6以上なら大丈夫かな?
0963nobodyさん04/10/07 01:46:48ID:???
$aの中身が
hoge||hage||hige
のうちのどれかに合うかをテストするにはどうすればいいですか?

正規表現より早いのがいいです。
例)
$a =~ /hoge|hage|hige/
はなしです。
0964nobodyさん04/10/07 01:51:28ID:???
>>963
きみの合うというのは完全一致?
0965nobodyさん04/10/07 01:54:58ID:???
>>963
$a =~ /h[oai]ge/
が一番はやいんじゃないのかなぁ。
0966nobodyさん04/10/07 02:00:27ID:???
>>958
まじめにうるう秒管理してると+ほげほげでずらしたら
うるう秒またいだときにおかしくなるんだよな。

実際にそういう運用してるシステムは身の回りでは
みたことないけどね(笑)
096794504/10/07 02:40:16ID:???
>>966
そうなんだ。でも心配性すぎじゃない?
数秒の間違いなんて問題ないしさ。
096894504/10/07 02:43:24ID:???
っていうか
$ENV{'TZ'} = "JST-9";
の後にlocltimeでやるほうがいいって話だよね?

この$ENV{TZ}って触ると他に支障でないっけ?
0969nobodyさん04/10/07 02:46:40ID:???
>>964>>965
そうです。間違えてました。例題はあんなのですが、
実際は長さの異なる文字列で、初めに考えたのが

if (
$a eq "hoge" ||
$a eq "hige" ||
$a eq "hage" ){}
みたいなことを考えましたが、見た目が冗長なので。(実際はかなり長い文字列なので)
でもこれが一番処理速度効率はいいですよね?

これと同じレベルの効率でスッキリコーディングをしたいんです。
0970nobodyさん04/10/07 02:52:14ID:???
>>945
お前にゃ+32400がお似合い。他に影響のでない最強の解法があるんだからそっち使えよ。

>>969
> でもこれが一番処理速度効率はいいですよね?
なんでだよ。ベンチマークでもしてからの発言か?
0971nobodyさん04/10/07 03:18:47ID:???
>>968
気になるなら元の値に戻してからPOSIX::tzset()呼んどけ
0972nobodyさん04/10/07 03:27:45ID:???
日頃はシレッと粋な回答をするみんなが「処理速度」というキーワードに触れると
急に目の色を変えてスレが加速する傾向があるようなので、そろそろ。

# 自分がそこまで気にしなくていいレベルのことしかしてないもんだから、
# みんなすごい世界に棲んでるんだなーといつも思う。

次スレの旬になりました。
テンプレ改定のご意見などがありましたらお願いしまーす。

前スレ293さん作・ここの抜粋CGIをテンプレに入れてみるのはどうだろと思って見に行ったら
404 Not Foundでした。
0973nobodyさん04/10/07 03:49:50ID:???
>>972
スレ違いの質問も多いから>>1>>2のスレにうまく誘導できないかな。

以下の話題は>>2に専用スレがあります。みたいな感じで

あと、>>2などのリンク間違い、河馬屋二千年堂'sなど移転したところの訂正と
>>1-23に注意にする。
0974nobodyさん04/10/07 04:35:33ID:???
Perl コーディング初心者質問コーナー Part38
-- 案 --
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

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

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

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

過去ログ・関連スレ・お勧めサイトは >>2-10辺り。
-- 案 --

・リンク確認
CGIスレ11 http://pc2.2ch.net/test/read.cgi/php/1055597189/ ←移行寸前
総合質問スレ10 http://pc5.2ch.net/test/read.cgi/php/1086715675/ ←コレが現行
河馬屋二千年堂: http://homepage3.nifty.com/hippo2000/ ←移転先

こんな感じでどーでしょうか。というとこで、寝ます...orz
0975nobodyさん04/10/07 09:20:10ID:???
無闇に>>1を変更しようとするヤシが一番ウザい
0976nobodyさん04/10/07 09:28:53ID:???
>>975
なら>>974で良いってことですよね
0977nobodyさん04/10/07 09:32:13ID:???
昔のでいいよ。
>>2-3をスルーする奴は1なんか読んでない。
097894704/10/07 10:38:59ID:???
解決できました。ヒントを下さった方々、ありがとうございました。
全部SJISで記述していたんですけど、EUC-JPってこういう使い方があるんですね。便利そうです。

>>949氏の「文字列の末尾をチェックして切捨てで」というのはやり方がよくわからなかったので、
PerlメモのEUC-JPでのパターンマッチで文字単位で配列に入れて、
そこから指定文字分だけ取り出すという方法にしました。
0979nobodyさん04/10/07 12:00:29ID:mI0cEt1E
sprintf の第一引数の中で % を使うにはどうすればいいのでしょうか?
my $s = sprintf "%d\% %d\%", 1, 2;
のように\でクォートしてみてもダメでした
0980nobodyさん04/10/07 13:31:02ID:mSPbkycd
>>979
%% って書くんじゃなかったかな
0981nobodyさん04/10/07 15:24:10ID:/uixjfP8
HTML::TemplateのテンプレートファイルをSHIFT-JISで保存したものを
EUCで出力するにはどこをエンコードすればいいんですか?

$html->output();で帰ってきたものでいいんですか?
0982nobodyさん04/10/07 15:37:24ID:???
それは自分で調べた上での発言か?

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

やっぱり>>1読む質問者いねぇな
0983nobodyさん04/10/07 15:41:43ID:/uixjfP8
1: HTML::TemplateのテンプレートファイルをSHIFT-JISで保存したものをEUC-JPで出力したい。
2: $html->output();で返ってきたものをJcode.pmでエンコードしました。
3: 文字化けしました。

以上。
0984nobodyさん04/10/07 15:50:06ID:???
エンコードプロセスでミスってるかヘッダー吐き忘れてるかってとこかね。
エコーデバッグ程度でどこで化けてるかわかるっしょ。どのタイプの文字化けか知らんが。
そんな情報じゃワカンネ。どっちにしても自己解決できる範囲だろ。直ったらレポよろ。
0985nobodyさん04/10/07 15:50:44ID:???
>>983
> 1: HTML::TemplateのテンプレートファイルをSHIFT-JISで保存したものをEUC-JPで出力したい。
> 2: $html->output();で返ってきたものをJcode.pmでエンコードしました。
> 3: 文字化けしました。
> 以上。

なめとんのかお前
0986nobodyさん04/10/07 15:52:17ID:???
ワロタw
0987nobodyさん04/10/07 16:00:01ID:???
テンプレだけど、なんか前使ってた桂三枝の短いやつでいいような気がしてきた
>>1が9行以上だと読みこめない仕様の人がいるみたいだ
0988nobodyさん04/10/07 16:02:19ID:???
>>987
なんだその微妙なラインは。
0989nobodyさん04/10/07 16:03:19ID:???
名前に山崎渉って入れると答えてくれる人が出てくるかもね。
0990nobodyさん04/10/07 16:03:57ID:???
せ、千を狙っているのか・・・・ッ!!
0991nobodyさん04/10/07 16:07:23ID:???
お前らあんまり投げ槍になるな。
0992nobodyさん04/10/07 16:19:58ID:???
よく分かりませんが、時計の針を一つ、進めておきますね。
0993nobodyさん04/10/07 16:26:02ID:???
>>992
定時にはまだはやいぞ・・・
0994nobodyさん04/10/07 16:52:08ID:???
>>992
うお!?
なんだコイツ!マジで進んでやがるよ!?
コエー
0995nobodyさん04/10/07 18:50:57ID:???
処理速度
0996nobodyさん04/10/07 20:11:37ID:???
あれ?
0997  ◆PhqBhduQK2 04/10/07 21:16:25ID:???
梅梅
0998 ◆wpBYHs9AfM 04/10/07 21:22:12ID:???
次スレまだー?チンチン
0999nobodyさん04/10/07 21:33:03ID:???
銀河鉄道
1000nobodyさん04/10/07 22:33:39ID:???
いただきます。
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。