【Perl 】初心者コーナーPart6
■ このスレッドは過去ログ倉庫に格納されています
0001undefさん
2001/07/26(木) 00:40ID:???尋ねる前に同じ質問がないかこのスレや旧スレ、及び>>2のリンクを一通り見てみよう。
案外答えはもう書かれているかもしれない。
0549540
2001/08/23(木) 02:58ID:04DpFLUMウインドウズ上から*.plをダブルクリックでもHTMLを吐き出すだけ
なのです。。
0550540
2001/08/23(木) 03:02ID:04DpFLUM0551540
2001/08/23(木) 03:07ID:04DpFLUMhttp://127.0.0.1/readme.htmlじゃなくちゃいけないの?
0552名無しさん@お腹いっぱい。
2001/08/23(木) 03:14ID:???http://loopback/index.html
って入れて表示出来る所まで設定すれ
ここ行って書いてる事全部よんでみ
んで出来たら
http://loopback/hoge.cgi ##超簡単なコード
これを動かす。
あと質問するなら環境書けてば、OSもhttpdもperl実行環境も解らん
のに答えられないって
一応言っとくと普通cgiファイルをダブルクリックして勝手にブラウザが
起動して実行結果が出てくるような設定にはならない、つかWINでは出来ない
WINのファイルタイプ2つ設定出来るなら別だけど
0553名無しさん@お腹いっぱい。
2001/08/23(木) 03:14ID:???闇雲に試行錯誤するより、それなりのドキュメントを一読してくださいよ。
とりあえずhttpdはまともに動いてるの?
*.plの中身はどんなよ?
>>514 >>542 >>545のレス読んだ?
cgiて何の略か知ってる?
0554名無しさん@お腹いっぱい。
2001/08/23(木) 03:16ID:???http://www.st.rim.or.jp/~nakata/
他にもHTTPサーバー 自宅 とかで検索すればボロボロ出てくるから
0555名無しさん@お腹いっぱい。
2001/08/23(木) 03:22ID:???それはともかく、540さんよ
sage進行でいかんか?
結構邪魔だよ。
0556540
2001/08/23(木) 03:25ID:04DpFLUM一応そこでhttpの設定はしました。
それ以外はさっぱり分りませんが適当にいじって思考錯誤する
しかないのかな
>>553
*plはウェブサーバー上で機能しています。
0557名無しさん@お腹いっぱい。
2001/08/23(木) 03:28ID:???>*plはウェブサーバー上で機能しています。
・・・キミって何歳?
興味あります。
0558540
2001/08/23(木) 03:33ID:04DpFLUM0559名無しさん@お腹いっぱい。
2001/08/23(木) 03:36ID:???つーかsageで行ってくれよ。頼むから。
0560名無しさん@お腹いっぱい。
2001/08/23(木) 03:38ID:???0561名無しさん@お腹いっぱい。
2001/08/23(木) 03:38ID:???一行カキコになるんじゃ?
http://127.0.0.*/index.htmlと
C:\apache\index.html
は表示してる内容は同じでもそのプロセスは全然違う、
悪い事言わないからHTMLからやれって、絶対パスでリンク貼って
飛べる様になってからにしろ
0562名無しさん@お腹いっぱい。
2001/08/23(木) 03:51ID:???ここはやさしいよ。
なれあってるけど。
レベルもいまいちだけどやさしいよ。
やさしいよ。
0563あああ
2001/08/23(木) 03:53ID:???+---/cgi-bin./
| |---counter.cgi
|
+---/aaa/
|---index.shtml
この場合index.shtmlからSSIでcounter.cgiを動かすには
どう記述すればいいの?
ディレクトリって戻れるの?
0564名無しさん@お腹いっぱい。
2001/08/23(木) 03:56ID:???>>563
../cgi-bin/counter.cgi で良い?
ああー PERLの質問が〜〜
0565あああ
2001/08/23(木) 04:02ID:???<!--#exec cmd="./cgi-bin/counter.cgi" -->
こんな風に書くみたいなんだけど最初の
ドットは2個連続でいいの?出来なかったんだけど…
0566521
2001/08/23(木) 04:02ID:???でも、役立ちそうだし製品版かってみようかな。
でも、クレジットカードか・・・。
なんか、ながれ、邪魔してすみません。
0567名無しさん@お腹いっぱい。
2001/08/23(木) 04:10ID:???じゃ絶対パスで、
>ドットは2個連続でいいの?出来なかったんだけど…
この辺でPC初心者板気味の話になりつつあるね
0568名無しさん
2001/08/23(木) 04:15ID:???これで誰かが切れちゃうと不毛な争いになるんだよなあ
頑張れ>答えてる人 ヽ(´ー`)ノ
0569ANT
2001/08/23(木) 04:18ID:???2個連続でいいよ。↓こんな感じ
<!--#exec cmd="../cgi-bin/counter.cgi"-->
ドット2個で「一つ戻る」ってノリです
0570あああ
2001/08/23(木) 04:29ID:???ドット2個で出来ませんでした。
これ以上聞くと初心者すぎてどっか逝けとか
googleで検索しろって言われるので自力で頑張ります。
>>567>>569 ヒントありがとう
0571名無しさん@お腹いっぱい。
2001/08/23(木) 05:03ID:???0572名無しさん@お腹いっぱい。
2001/08/23(木) 05:26ID:???どうしたらよいのでしょう?
0573名無しさん@お腹いっぱい。
2001/08/23(木) 05:41ID:???0574572
2001/08/23(木) 05:45ID:???レス早くてびっくりしました。
CGIでSJIS以外受け付けないようにすればいいんですね。
調べてみます。
ありがとうございます。
0575名無しさん@お腹いっぱい。
2001/08/23(木) 06:08ID:???俺はEUC-JPの方がお勧めだけど。
jcode sjis 変換 ってキーワードで検索してみてくれ。
0576540
2001/08/23(木) 06:45ID:???検索してしらべましたし、その通りやったのですが
未だに表示しません、こんなに大変なんですか?
っていうか殆どの人は直ぐに問題なく表示されているようですが。。
これって初級ネット向きの質問かな何処に投稿すればいいんだろ、、
それに普通一回設定したら気にも留めなくなるんだろうけど。。
0577名無しさん@お腹いっぱい。
2001/08/23(木) 07:01ID:???ちょっと、質問したいんですけど、結局どのhttpdをお使いなんですか?
0578540
2001/08/23(木) 07:07ID:???>悪い事言わないからHTMLからやれって、絶対パスでリンク貼って
>飛べる様になってからにしろ
少し真面目に調べたのですが此れと如何関係があるのかなぁ
3年前にHP立ち上げたのですが、なんか重要なことが記憶から飛んだのかなぁ
0579名無しさん@お腹いっぱい。
2001/08/23(木) 07:15ID:???これって結構割り切った良い仕様だと思うんだけど。
まぁ、それが嫌なら要はログで複数のコードを混ぜ込ませず一つに統一すればEUCでもSJISでもいいわけだから。
jcode.plのjcode::h2z系を使わない。
jcode::trで全角と半角を置換しない。
jcode::convertの第三引数にzを指定しない。
EUCとSJIS半角カナの区別がつかないほど短い場合もあるので、
getcodeで区別がつかなかったらSJISと決め付けて第二引数に明示的に指定する。
(convertが内部で読んでるgetcodeで区別がつかないと変換しないから)
これぐらいでどうでしょう?
あと、基本だけどJISにはしないこと。
0580名無しさん@お腹いっぱい。
2001/08/23(木) 07:28ID:???以下WINにAN入れてPERLは入ってるとして勝手に書く
ANを解凍して実行
http://127.0.0.1/readme.html
が表示出来たら(これが出なかったらおかしい、PC壊れてます)
ANのオプション→一般 でCGIとか全部チェック w
print "Content-type: text/html\n\ntest";
これをroot直下のcgi-binフォルダにtest.cgiとかで保存
http://127.0.0.1/cgi-bin/test.cgi にアクセス
出来ればもう一台PC買って下さいな、それが一番早いと思いますよ。
0581名無しさん@お腹いっぱい。
2001/08/23(木) 07:33ID:???404とか言ってくれれば説明も出来るのにねー
0582名無しさん@お腹いっぱい。
2001/08/23(木) 07:48ID:???0583名無しさん@お腹いっぱい。
2001/08/23(木) 07:55ID:???0584名無しさん@お腹いっぱい。
2001/08/23(木) 07:58ID:???0585名無しさん@お腹いっぱい。
2001/08/23(木) 07:59ID:???0586580
2001/08/23(木) 08:05ID:???多分仮想ディレクトリとか、ループバック辺りが解ってないと思ったんだ。
だから2台繋いでやれば後の方の問題は関係無くなると思った。
>>583
そんなことココで聞くなー!!(;´Д`)
DOSはCPMってOSのパクリでCPMでは/はコマンドと引数の区切り文字だった
それが途中からディレクトリサポートする様になって仕方なくアホなMSは
バックスラッシュをスラッシュの代わりにした
ところが事もあろうかJISコード策定したオッサン達はバックスラッシュを
消してここに\を入れちゃった訳 その後バックスラッシュはどんどん
エスケープキャラクタになっちゃったりしたから、こんな事になった
0587名無しさん@お腹いっぱい。
2001/08/23(木) 08:13ID:???0588540
2001/08/23(木) 09:18ID:???>以下WINにAN入れてPERLは入ってるとして勝手に書く
>ANを解凍して実行
>http://127.0.0.1/readme.html
>が表示出来たら(これが出なかったらおかしい、PC壊れてます)
>ANのオプション→一般 でCGIとか全部チェック w
>print "Content-type: text/html\n\ntest";
>これをroot直下のcgi-binフォルダにtest.cgiとかで保存
>http://127.0.0.1/cgi-bin/test.cgi にアクセス
何度もやりました、ちょっとした勘違いかとも思い
設定も替えながら幾つか試しました。でも結果は同じ404エラーです。
しつこく訊いたのは自分のPCだけの問題かと認識したかったのです
しかし、みなさんにはご迷惑かけました
ここで自分の固有の問題だと確信しました、っていうかしか
しかありません。
で一つ固有の環境として糞ザクソンネットレコーダーをいれている
のですが、以前物凄い使い勝手の悪さにアンインストールをした
のですがファイルが壊れているらしくアンインストール出来なかった
のでそのままにしているので、主犯はこいつと睨みました。
同じ境遇の人いますか?って居ないよね。
今から強引にアンインストールを実行します、それでAN(HTTPD)
動いたらザクソンのソフトは2度と買いません!
0589名無しさん@お腹いっぱい。
2001/08/23(木) 09:45ID:???もしかしてその何タラネットがローカルプロクシとか後omitronとか
入っててトンでも無い所探しに行ってんじゃないだろね
IEの接続オプションの詳細で「このアドレスにはプロクシを使わない」
とか有るからそこに127ほにゃ って入れてみ
0590名無しさん@お腹いっぱい。
2001/08/23(木) 09:48ID:???もしかしてLAN組んで、127ほにゃ でアクセスしてるのか!??
0591名無しさん@お腹いっぱい。
2001/08/23(木) 09:57ID:???大変な事になって参りました (・∀・)
ここの住民は何だかんだ文句言いながらすげえ親切だと思うよ俺は、うん
0592名無しさん@お腹いっぱい。
2001/08/23(木) 11:38ID:???C:\www にインストールしているとして、オプションのドキュメントルートは C:\www 。
これは何も変えてなければデフォルトで大丈夫だ。
次に、
オプション/一般 → バーチャルホスト → バーチャルホストを使う、
オプション/一般 → 一般 → HTTPサーバ機能、
オプション/一般 → 一般 → バーチャルホスト、
これらにチェックを入れる。
んで、とりあえず http://127.0.0.1/readme.html にアクセス。
…これで何も表示されなかったら俺には何もアドバイス出来ない。
あぁ、そういえば http://127.0.0.1/ にアクセスした時はどうなる?
0593名無しさん@お腹いっぱい。
2001/08/23(木) 12:05ID:???結局ANのファイル全部見えてないんじゃんか (呆
それでcgiが動かないってreadmeもFAQも読んで無いからだって
もう一回一から見直しなよ
0594名無しさん@お腹いっぱい。
2001/08/23(木) 15:05ID:R1XxEp52よくここではkentのスクリプトは糞とか重いとか書かれていますが
どこらへんが糞で重いのでしょうか?
1つここで学んだことはログから出力するときは
open (IN,"$logfile");
@log = <IN>;
foreach (@log) {
}
ではなく
open (IN,"$logfile");
foreach (<IN>) {
}
の方がサーバーへの負荷が少ないということです。
他にもkentのここは駄目だ。こうした方が軽くなるということがあったら教えてください。
kentの真似ごとから一皮むけたいのです。
0595名無しさん@お腹いっぱい。
2001/08/23(木) 15:17ID:???> foreach (<IN>) {
> }
Afo?
まぁ前者より僅かながら早いかもしれんが…。
とりあえず貴方はまだKENTに真似事でもしていてください。
0596sage
2001/08/23(木) 15:29ID:5IP6et1kこれを表示するときには頭の0を削除したいのです。
例) 0001 -> 1
0053 -> 53
$value = '0001';
$value =~ s/^(000|00|0)//;
もっとエレガントな方法ないですか?
0597名無しさん@お腹いっぱい。
2001/08/23(木) 15:35ID:lw4Nr9lIあんたアホか?
万単位になったときははるかに前者より効率良いぞ。
たいした知識も無いくせに煽るな。糞が。だったら実例出してみな。
0598名無しさん@お腹いっぱい。
2001/08/23(木) 15:47ID:???$v =~ s/^0*//;
0599596
2001/08/23(木) 15:53ID:5IP6et1kおお!なるほど。
こういうときに*つかうんですね。+でもいけそうですね。
どうもです。
0601名無しさん@お腹いっぱい。
2001/08/23(木) 15:58ID:???$value = $value+0;
0603596
2001/08/23(木) 16:04ID:5IP6et1kそんなこともできるんですね!確かになります。
これは演算することで文字列から数値にキャストされる
ようなことと考えていいんでしょうか?
0604名無しさん@お腹いっぱい。
2001/08/23(木) 16:16ID:???そうです。
演算することで、パールのほうで、数値型にかえてくれます。
ただ、暗示的やりかたは、横にコメントも入れたほうがいいような気がする。
0605596
2001/08/23(木) 16:28ID:5IP6et1kなるほど、勉強になりました。エレガントさでいくと
602さんのが簡潔ですね。コメントも入れるようにします。
どうもありがとうございました。
0606名無しさん@お腹いっぱい。
2001/08/23(木) 17:27ID:???open (IN,"$logfile");
while (<IN>) {
}
じゃない?
0607名無しさん@お腹いっぱい。
2001/08/23(木) 17:29ID:???何故かウチのローカル環境だとエラー出るから一々
$v =~ s/^(0*)//;
とか括弧付けてるよ…
0608名無しさん@お腹いっぱい。
2001/08/23(木) 17:40ID:???いろんな解説書によるとパッケージ名::関数 で呼ぶようになってますよね
でも公開されてるスクリプトなどが&jcode'convertみたいにそのまま関数名で
呼んでるのは何故ですか?
0609572
2001/08/23(木) 17:42ID:???>>579
ありがとうございます!
な、なんか難しそうですね…。
方法としては、
・SJIS以外受け付けないようにする
・SJIS(EUC-JP)にコンバートする
・ログでコードを一つに統一する
のどれかということでしょうか?
頑張ってみます。
0610奈々資産
2001/08/23(木) 17:58ID:h9wrQ49Q&jcode'convertなどは普通のサブルーチンとして呼び出しているからです。
パッケージ名::関数の方はその"パッケージ名::関数"クラスの
インスタンスを生成して、生成されたオブジェクトに属するメンバ
関数(メソッド)として呼び出すからです。
0611名無しさん@お腹いっぱい。
2001/08/23(木) 18:05ID:???オイオイそれは違うゾ。
どっちもただの関数呼び出しだよ。まったく一緒。
ただPerl4のパッケージデリミタがシングルクォートなだけ。
0612名無しさん@お腹いっぱい。
2001/08/23(木) 18:12ID:pz5WVy56ありがとうございます
でも普通のサブルーチンとして呼ぶ方法と
パッケージの関数として呼ぶ方法の違いはなんでしょう?
test.pl 内に
package test;
sub test1{〜略〜}
return 1;
としてて呼ぶほうのスクリプトで
$test = 'test.pl';
require $test;
test::test1($a);
というようなことをしててもエラーがでて困ってます
0613612
2001/08/23(木) 18:17ID:???0614名無しさん@お腹いっぱい。
2001/08/23(木) 18:18ID:???それで問題ないはずだけど。
perlのバージョンは?
0615名無しさん@お腹いっぱい。
2001/08/23(木) 18:20ID:h08Ccr32として呼び出す方法として説明したんじゃないんだろうか。
0616612
2001/08/23(木) 18:26ID:???5です
jcodeやmimewなどはそのまま関数名で呼んでるんですよね(他の人が配付してるのを見ると)
で、612の方法でやってみても&で呼んでみてもエラーなんですよね・・・
関数自体は今まで同じファイル内にあったもので問題なく動いてたんですけど
もう少しいろいろ試してみます
0617611
2001/08/23(木) 18:34ID:???どう贔屓目にみてもそうは取れないでしょ。
オブジェクトメソッドなら、
convert jcode () か、 jcode->convert()
だけど、jcode.pl はオブジェクト指向じゃないしね。
単に、関数呼び出しとメソッド呼び出しの区別がついてないだけと思う。
>>616
エラーがなくなるまでスクリプト削ってみれ。
とりあえずこれでもエラー出るの?
#test.pl
package test;
sub test1{ print 'This is test::test1()';}
1;
#main.pl
require 'test.pl';
test::test1();
_END__
0618612
2001/08/23(木) 18:37ID:???パッケージ名とファイル名は同じでないといけなかったですか?
同じにしたら::で呼ぶ方法で動きました 御迷惑かけました
(でも&関数名で呼んでる奴との違いがなんなのかさっぱりです)
0619612
2001/08/23(木) 18:46ID:???私のパッケージは単純に関数が一つあるだけです
jcode.plの関数のように&で呼ぶには何か他に必要なのでしょうか?
(エラーの原因はパッケージ名が部分的に大文字でファイル名が
全部小文字というのが原因だったようです お手数かけました)
0620611
2001/08/23(木) 18:52ID:???> パッケージ名とファイル名は同じでないといけなかったですか?
それも関係ない。たぶんどこかに間違いがあったはず。
ファイル名::関数名()とかにしちゃってたんでは?
>(でも&関数名で呼んでる奴との違いがなんなのかさっぱりです)
&test::test1(); でもOKだよ。
&test'test1(); でもまったく一緒。
直後に( があって、その関数名がすでに宣言されていると
perlが関数呼び出しと判断してくれるだけ。
& の有無と、 :: と ' の話は関係ないよ。
0621612
2001/08/23(木) 19:00ID:???何度もありがとうございます
昔とほほで拾ったものなんですけど
mimew.plにあるmimeencodeって関数を&mimeencodeだけで読んでるんですよね
'も::も無しで
これが何故可能なのかがきになって・・・
0622611
2001/08/23(木) 19:06ID:???あ、そういうことですか。
これはmimew.plの関数宣言が、
sub main'mimeencode {
とかになってて、mainパッケージの関数を宣言してるから。
Perl5なら、
sub main::mimeencode {
とか書く。
0623名無しさん@お腹いっぱい。
2001/08/23(木) 19:08ID:???0625名無しさん@お腹いっぱい。
2001/08/23(木) 19:11ID:???0626名無しさん@お腹いっぱい。
2001/08/23(木) 19:41ID:???0627名無しさん@お腹いっぱい。
2001/08/24(金) 01:19ID:???my $value = 0001;
$value = abs($value);
print $value;
これでどうよ?
0628名無しさん@お腹いっぱい。
2001/08/24(金) 01:46ID:???sift-jisに変換してブラウザに出力してますがこの部分だけ化けます
0629名無しさん@お腹いっぱい。
2001/08/24(金) 01:53ID:???表示→表\示
0630名無しさん@お腹いっぱい。
2001/08/24(金) 02:59ID:???sprintf
0631名無しさん@お腹いっぱい。
2001/08/24(金) 03:02ID:???以外でブラウザを識別する方法ありますか?
0632名無しさん@お腹いっぱい。
2001/08/24(金) 03:04ID:???627のほうが効率よいうえ速いと思われ
0633名無しさん@お腹いっぱい。
2001/08/24(金) 03:05ID:???何故そのような事をお望みで?
それがわからないと答えにくいっす
0634名無しさん@お腹いっぱい。
2001/08/24(金) 03:13ID:???ええとですね
正確に言うとブラウザ名とOS名を別々に取得したいんです
HTTP-User-AgentだとOS名とかもくっついて来ますよね
このテキストが規則性があれば抽出できるんですけど、俺の頭じゃなんか無理で、、、
何故そんなことをしたいかというと
ブラウザやOSごとに吐き出すHTMLを微妙に代えたかったんです
0635名無しさん@お腹いっぱい。
2001/08/24(金) 03:18ID:???何故微妙に変えたいかというとINPUT TYPE="text"などのサイズが
同じ数字でもブラウザによりばらばらですよね
で、最初はブラウザだけ解れば何とかなると思ったですけど
Macのブラウザで見ると更にサイズが変わるらしく、OSも
と思ったわけです
0637すたいるしーとと言えば
2001/08/24(金) 03:29ID:???0638名無しさん@お腹いっぱい。
2001/08/24(金) 03:31ID:???結構ユーザーいるんだよな
6は評判悪くて乗りかえてない見たいだし
0639名無しさん@お腹いっぱい。
2001/08/24(金) 03:40ID:???Mozilla/4.7 [ja] (Win98; I)
Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Mozilla/4.01a [ja] (Macintosh; I; PPC)
Mozilla/4.0 (compatible; MSIE 5.0; Mac_PowerPC)
以外にも組み合わせによりたくさんあるけど
win Macって言う文字列が含まれてるかどうかチェックすれば
OSは判別できるかな?
0640名無しさん@お腹いっぱい。
2001/08/24(金) 03:42ID:???対応はしてますが何か?
0641名無しさん@お腹いっぱい。
2001/08/24(金) 03:44ID:???0642名無しさん@お腹いっぱい。
2001/08/24(金) 03:46ID:???0643名無しさん@お腹いっぱい。
2001/08/24(金) 04:02ID:h7Yg7pIw0644名無しさん@お腹いっぱい。
2001/08/24(金) 04:19ID:???>>643
print sort keys %ENV
0645名無しさん@お腹いっぱい。
2001/08/24(金) 04:24ID:???0646名無しさん@お腹いっぱい。
2001/08/24(金) 04:25ID:???根本的に話題がずれてます。
0647名無しさん@お腹いっぱい。
2001/08/24(金) 04:35ID:???WEB制作板
http://natto.2ch.net/hp/index2.html
0648名無しさん@お腹いっぱい。
2001/08/24(金) 06:09ID:???やはりCGIとPerlの区別がつかないドキュソが多いのか
■ このスレッドは過去ログ倉庫に格納されています