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


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

くだすれPerl(超初心者用)



1 名前:nobodyさん mailto:sage [2006/09/10(日) 13:33:48 ID:???]
このスレッドは、他のスレッドでは書き込めない超低レベル、  
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。  
Perl使いが優しくコメントを返しますが、  
お礼はPerlの布教と初心者の救済をお願いします。  


612 名前:nobodyさん mailto:sage [2007/12/27(木) 14:43:25 ID:???]
>>605
それは、サーバのエラーや、Perlなどのプログラムミスによる
ものということですよね?

そのメモリに残ったプロセスを利用してということは
ないと解釈していたのですが。

613 名前:nobodyさん mailto:sage [2007/12/27(木) 15:08:55 ID:???]
>>612
mod_perl + DBI なんかでは、コネクションプーリング出来たりとか
そんなんじゃないのかね?

614 名前:nobodyさん mailto:sage [2007/12/27(木) 17:41:06 ID:???]
perlにて、「use strict」を書くとエラー(500)となってしまいます。
これをコメントアウトすると、正常に動いていますので、
パーミッションなどの設定が原因ではないと思います。
疑われる部分はどんなことがあるのでしょうか。

615 名前:nobodyさん mailto:sage [2007/12/27(木) 17:46:33 ID:???]
すみません。質問です。
package関連の記述方法についてです。
定義したクラスのメソッドにおいて、そのクラスがもつ別のメソッドを
呼び出すということは出来ないのでしょうか。

package ClassA;

sub funcA{
 print "test";
}

sub funcB{
 &funcA;
}

などと記述してみたのですが、エラーがでてしまいます。
&ClassA::funcA; としてもダメでした。

616 名前:nobodyさん mailto:sage [2007/12/27(木) 17:57:54 ID:???]
全角スペースでインデント(字下げ)したらエラーになるよ

617 名前:nobodyさん mailto:sage [2007/12/27(木) 19:24:37 ID:???]
>>614
error_logにみんな書いてある。

618 名前:nobodyさん mailto:sage [2007/12/27(木) 19:37:01 ID:???]
>>616
全角スペースでインデント(字下げ)してるのは、2chで
見やすくするためです。先頭に半角だと無視されますからね。

619 名前:nobodyさん [2007/12/27(木) 21:40:34 ID:HdAuax/Z]
>>593
うむ。書くしかないよな

620 名前:nobodyさん mailto:sage [2007/12/27(木) 23:08:07 ID:???]
>>615
最後に 1; を書いてみ



621 名前:nobodyさん mailto:sage [2007/12/28(金) 00:51:11 ID:???]
>>620
レスありがとうございます。
最後に「1;」は書いてます。
メソッド呼び出し部分をコメントアウトすると
動作はするので、メソッド呼び出し部分がおかしいのでは、
と思うのです。
メソッド呼び出しを記述すると、動きはするのですが、
そこで停止してしまうのです。
念のための確認ですが、同じクラス内のメソッド呼び出しの
記述方法はこれであっているとみてよいのでしょうか。
それとも、「ClassA::funcA」などと記述すべきなのでしょうか。

622 名前:nobodyさん mailto:sage [2007/12/28(金) 02:36:45 ID:???]
>>621
ウチの環境で、上のコードそのままやってみたけど、
&funcB();
で、ちゃんと'test'と出力されたべ。

呼び出し側のスクリプトの問題じゃないのかな?
以下呼び出し側。

use ClassA;

ClassA::funcA();
ClassA::funcB();

---出力----
test
test

環境 WinXp SP2 ActivePerl 5.8.8-build822
This is perl, v5.8.8 built for MSWin32-x86-multi-thread

623 名前:nobodyさん mailto:sage [2007/12/28(金) 02:51:08 ID:???]
>>611
ていうかオブジェクト志向のメリット、デメリットを勉強すれば
ネット上のサンプルソースの例が少ない理由はすぐわかる。

624 名前:nobodyさん mailto:age [2007/12/28(金) 13:27:40 ID:???]
質問です。
継承に関して、ネットを調べていると、コードの書き方が
2通りあるようですが、これはどういう解釈をしたらよいのでしょうか。

ClassAが継承もととなる場合
use base qw( ClassA );
@ISA = qw ( ClassA );

use base qw()を使う方法
www15.plala.or.jp/h-kihara-home/prog/perl/ooperl.html
www.rwds.net/kuroita/program/Perl_oo.html#base

@ISAを使う方法
www.rfs.jp/sb/perl/04/03.html
bulknews.net/lib/mailmag/22/mag.txt

一方の書き方が古いという類なのでしょうか。
それとも、継承においては特に出てこない、何か違う意味が
含まれているのでしょうか。

お願い致します。

625 名前:nobodyさん mailto:sage [2007/12/28(金) 14:37:39 ID:???]
今までVisual Basic や java をやってきていた者です。
Perlの場合以下のようにドキュメントとしてコーディング規約は
まとめられてないのでしょうか。
www.objectclub.jp/news/community/codingstandard/

626 名前:nobodyさん mailto:sage [2007/12/28(金) 18:56:10 ID:???]
>>624
perldoc base
>>625
ない

627 名前:nobodyさん mailto:sage [2007/12/29(土) 00:20:43 ID:???]
>>622
もう一度0からコードを書き直してやってみたら
動きました。
何が悪かったのだろう・・・
全角スペースが入ったりしていると、赤く表示が出る
エディタを使っているのですけどね。
原因が分かりませんが、質問の内容は解決しました。
ご迷惑をおかけしました。

628 名前:nobodyさん mailto:sage [2007/12/29(土) 09:32:18 ID:???]
>>623
Perlのオブジェクト指向を調べてみたのですが、なんだか
完全にオブジェクト指向に対応した言語ではなく、
package や ハッシュ を用いて工夫してオブジェクト指向を
実現してるみたいなものですね。
メンバやメソッドにも外部からのアクセス制限をかけたり
出来なさそうだし。

PerlをCGIでやる場合は、まず、GETやPOSTを取得して
どの関数に飛ぶのかを判定し、その関数を書いていくという
処理しかないので、構造化とさほどかわらないのかもと思いました。

ありがとうございました。

629 名前:625 mailto:sage [2007/12/29(土) 11:06:25 ID:???]
>>626
どうしてないのでしょうか。
Perlは歴史が長い分、何かノウハウを集めたものがあるかと思ったのですが。

630 名前:nobodyさん mailto:sage [2007/12/29(土) 11:19:00 ID:???]
>>629
オマエが作れよ
俺は無視するが



631 名前:nobodyさん mailto:age [2007/12/29(土) 14:02:28 ID:???]
ハッシュを宣言し、それを関数に渡す処理をしたいのですが、
Perlのサイトにはそのサンプルが載っていなかったので、
自分なりにコードを書いてみました。
ttp://www.rfs.jp/sb/perl/02/05.html
ttp://www.site-cooler.com/kwl/perl/4.htm

関数に渡すときのコードの書き方や、受けるときのコードの書き方において、
これが偶然動いているだけなのか、不安になって質問してみました。
書き方は基本的にこれで良いのでしょうか。
やりたいことは、「ハッシュと数値を受け取り、処理を行う関数を
定義すること」です。

sub tt(){
my %t = @_;
print $t{"水"};
print "\n";
print $_[1];
}

%c;
$c{"月"} = 1;
$c{"火"} = 2;
$c{"水"} = 3;

&tt(%c,1);

632 名前:nobodyさん [2007/12/29(土) 15:00:37 ID:CoF2fqIA]
sub tt {
my ($t,$n) = @_;
print $t->{"水"};
print "\n";
print $n;
}

%c;
$c{"月"} = 1;
$c{"火"} = 2;
$c{"水"} = 3;

&tt(\%c,1);

633 名前:631 mailto:age [2007/12/29(土) 15:52:15 ID:???]
>>632
すばやいレスありがとうございます。
いろいろ試してみて気づいたのですが、$_[1]としても、
2番目に指定した引数が取れるわけではないのですね。
今回は偶然$c{"月"}の1が表示されていただけなのには
気づきませんでした。
あと、ハッシュを関数に渡す場合は参照渡しの方が良いのですね。
非常に助かりました。

634 名前:nobodyさん mailto:sage [2007/12/29(土) 17:19:50 ID:???]
>>626さんくす

635 名前:nobodyさん mailto:sage [2007/12/29(土) 20:00:55 ID:???]
>>629
Perlベストプラクティス



636 名前:nobodyさん mailto:sage [2007/12/29(土) 20:26:23 ID:???]
>>629
理由は大まかに言って、
・ コーディングの自由度の高さこそがPerlの特徴
  → コーディング規約で縛ったらPerlらしくない
・ Perlのコーディングスタイルとしてキーストロークをいかに減らすかを重視するスタイルが存在する
  → キーストロークを減らす派にとってコーディング規約なんて邪魔以外のなにものでもない
・ スクリプト言語なので元の用途は自前のツールをお手軽に作る事だった
  → 自分専用の道具を作るのにJIS規格とかを気にするヤツはいないのと同じでコーディング規約なんてキニシナイ
・ スクリプト言語はコンパイラ言語と違って大規模開発に向いてないと信じられていた
  → 小規模ならコーディング規約なんていらない。
って感じだな。

プロセッサも高性能化し、スクリプト言語でも十分に大規模開発が可能になったが、
・ 未だにキーストロークを減らす派の存在が大きい
・ CPANなど充実したライブラリの存在で実際にコーディングする量はそれほど増えてない
って理由から、わざわざコーディング規約を決めようとする動きも存在しないわけ。

使いたいものが、この世に存在しないなら自分で作ればいい。
もし、藻前さんがPerlのコーディング規約が欲しくて作るというなら、
目を通して意見を言うぐらいの手伝いはこのスレの人もやってくれると思う。

まあ、使う人がそんなにいるとは思えないが。

637 名前:629 mailto:sage [2007/12/30(日) 19:23:31 ID:???]
>>636
詳細な説明のレスありがとうございます。
自分でもPerlについて調べていたのですが、似たようなことが書いて
ありました。自由度の高さが売りなので、逆に規約が無いということ
ですね。納得しました。(TMTOWTDIと呼ぶみたいですね。)
スクリプト言語関連の部分は調べた範囲ではなかったので、非常に
参考になりました。歴史的な経緯もあるのですね。
私は今までVBなどをやっていたので、Perlの規約が無いのには違和感を
感じますが、自分がなれている独自の規約で書いていこうと思います。

こうなると、コーディング規約よりも「こういう場合はこういう
コードを書くと便利だ」といった、Tips系のものを集めた方が
よさそうな気もしました。

例:POSTで受け取ったデータは、foreachを用いてハッシュに入れると良い。
この方法のメリットは〜〜。デメリットは〜〜。

詳しく考えがまとまったらまた相談します。ありがとうございました。

638 名前:nobodyさん mailto:sage [2007/12/30(日) 20:27:22 ID:???]
>>637
use CGI;
my $q = new CGI;
print $q -> param( 'hoge' );
これよりも簡単に書けるなら使ってやる。

639 名前:629 mailto:sage [2007/12/30(日) 20:56:34 ID:???]
cgi.pmというのがあったんだ。知らなかった。
今まで読んでたサンプルソースにはそんなのが
なかったので知らずに全部コード自作してたよ。orz

640 名前:nobodyさん mailto:age [2007/12/31(月) 10:57:08 ID:???]
CGIの実行を制限する方法についての質問です。
例えば、2ちゃんねるは、別のサイトやローカルPCに保存したhtmlファイル
から「書き込む」をしてもエラーが出て受付けない仕様となっていますが、
こういった不正な入力を防ぐには、具体的にどういったコードを書いたら
よいのでしょうか。環境変数あたりで判断して行うのでしょうか。



641 名前:nobodyさん mailto:sage [2007/12/31(月) 15:09:23 ID:???]
一番簡単な方法は環境変数だわな
if ($ENV{'HTTP_REFERER'} !~ m!^\Qhttp://俺のサーバ/cgiのパス\E!) {
  # 外部から書くな氏ねハゲ池沼ボダ抱いて
}
みたいなかんじで

642 名前:nobodyさん mailto:sage [2007/12/31(月) 15:48:47 ID:???]
先ほどスレ違いをしてしまったので
.cgi .plのスクリプトを使いたいのですが
どうすれば実行されるのですか?
クリックしても.exe .batみたいに動かないし…

やり方を教わったのですが 意味がわからないし…
教えてください お願いします

643 名前:nobodyさん mailto:sage [2007/12/31(月) 15:51:39 ID:???]
>>642って何?いろんなところにコピペしてるのかな?
pc11.2ch.net/test/read.cgi/php/1187729623/443

644 名前:640 mailto:age [2007/12/31(月) 19:09:34 ID:???]
>>641
レスありがとうございます。
書き込みをみて、$ENV{'HTTP_REFERER'}をキーワードで
検索をしてみたのですが、書き方は何種類かパターンが
あるのが分かりました。

$site = "http://俺のサーバ/cgiのパス";
if($ENV{'HTTP_REFERER'} !~ /$site/i)
if($ENV{'HTTP_REFERER'} !~ /^$site/)

この書き方においては、これが一番いいなという結論のような
ものはないのでしょうか。
改行コードの変換の仕方の解説で、こういったサイトを
読んだことがあるので、ちょっと不安になって聞いてみました。
ttp://www.din.or.jp/~ohzaki/perl.htm#CRLF_Unify

645 名前:638 mailto:sage [2008/01/02(水) 18:35:41 ID:???]
>>639
まぁ、おいらも最初は自作してたんだし。
それに、自作したからこそ理解できた部分もあるだろう?

心配するな。みんな同じ道を歩んできた。

>>640
参照元は偽装できるから、セッション利用するのがいいかもね。

646 名前:640 mailto:age [2008/01/04(金) 00:25:33 ID:???]
>>645
ヒントありがとうございます。調べてみます。

647 名前:nobodyさん mailto:sage [2008/01/04(金) 14:22:05 ID:???]
確認ですが、CGI.pm のモジュールでは、FORMタグを書いた際に
改行されないようにするのが出来ないですよね?

具体的には、↓これをFORMタグ内に記述したりするものです。
style="float:right"

改行されるのが嫌ならば、FORMタグをTABLEタグの外で記述すれば
いい話ではありますが、デザインの都合上でそれが出来ないケースの話です。

648 名前:nobodyさん mailto:sage [2008/01/04(金) 15:55:01 ID:???]
>>647
馬鹿じゃないの?

649 名前:nobodyさん mailto:age [2008/01/04(金) 15:56:37 ID:???]
かなり初級的な質問ですが、お願い致します。
Perlの場合は、配列と数値を引数で渡すことは出来ないのでしょうか。
例えば、以下のような感じで、@a を @n1 へ、そして、$i を $n2 で
受け取りたいのですが、$n2 値が表示されないのです。

sub FuncA(){
my( @n1, $n2 ) = @_;
print "@n1[0]\n";
print "@n1[1]\n";
print "@n1[2]\n";
print "$n2";
}

@a = ( "aaa", "bbb", "ccc");
$i = 3;
&FuncA( @a, 3 );

650 名前:nobodyさん mailto:sage [2008/01/04(金) 16:19:57 ID:???]
リファレンス



651 名前:649 mailto:age [2008/01/04(金) 16:42:27 ID:???]
>>650
レスありがとうございます。
以下のように書き直してみたら、ちゃんと3が表示されましたが、
こういう渡し方をするしかないという意味合いですよね?

sub FuncA(){
my( $n1, $n2 ) = @_;
print "$n1->[0]\n";
print "$n1->[1]\n";
print "$n1->[2]\n";
print "$n2";
}

@a = ( "aaa", "bbb", "ccc");
$i = 3;
&FuncA(\@a,3);

652 名前:nobodyさん mailto:sage [2008/01/04(金) 17:41:36 ID:???]
他にもやりようあるけど
それがいちばん簡単じゃない?

653 名前:649 mailto:age [2008/01/04(金) 20:24:38 ID:???]
>>652
他のやりようとはどんなものなのでしょうか?
キーワードのヒントでもいいのでお願いいたします。m(_ _)m

654 名前:nobodyさん mailto:sage [2008/01/04(金) 20:38:02 ID:???]
すみません質問です。
「Perlは時代遅れだ。」という書き込みを読んでちょっと不安になったのですが、
Perlは本当に時代遅れなのでしょうか?

レンタルサーバのサービスでは、低価格でもPerlは確実にサポートしているので、
システムを組む時や、別のサーバにシステムを移項するのには非常に
やりやすいものであります。
COBOLがすたれたのは、Excelが出たからというのが一つの要因ですが、
私には、PerlにとってのExcelにあたるものが見当たりません。

なので、PerlはWebプログラミングとしては、まだまだ十分に
活用できる言語だと思っています。
もし、本当にPerlが時代遅れだとすると、PHPやJavaが特有で持っている機能が
必須となるわけですが、それらは具体的にどういう機能なのでしょうか。
よろしくお願い致します。

655 名前:nobodyさん [2008/01/04(金) 22:34:46 ID:zn9OWNdo]
>>653
>>652じゃないけど
プロトタイプでできるよ
sub hoge ($@) {
 my $foo = shift;
 my @bar = @_;
}
hoge($foo,@bar);

たぶんこんな感じだと思う

普通に配列を後で渡せば受け取れるけどね。
$_[0]をshiftしちゃえば同じ事だと理解できればぉk

656 名前:nobodyさん [2008/01/04(金) 22:39:39 ID:zn9OWNdo]
>>654
PHPに出来てPerlに出来ない事は無い。
たとえばPHPならDBとの連係が良いとか。
でも、web専門だったり。
javaは規模や対象から違う。

要は目指す所の違いだと思う。

Perlが汚いと思うならRubyやPythonをやれば良い

657 名前:nobodyさん mailto:sage [2008/01/05(土) 01:11:38 ID:???]
アンチPerlの人は、時代遅れとか言って叩く。

658 名前:654 mailto:sage [2008/01/05(土) 02:15:25 ID:???]
>>656
>>657
ご回答ありがとうございます。
目指すところの違いがあるんですね。
アンチは具体例を出さずにすぐに一般化して
否定しますしね。
安心しました。ありがとうございます。

659 名前:649 mailto:age [2008/01/05(土) 14:25:20 ID:???]
>>655
レスありがとうございます。プロトタイプ使えばよさそうですね。
こちらでいくらかプログラムを書いてみたのですが、配列は
必ずあとじゃないとダメみたいですね。
FuncA($@) これだと動くのですが、 FuncA(@$) これだとダメでした。

660 名前:nobodyさん mailto:sage [2008/01/05(土) 18:18:51 ID:???]
質問です。
ナビゲーションバーが<li>タグで
フォームがテーブルタグで囲む形で
出力されるテンプレートエンジン。

これは今風ではないでしょうか?
出力されたHtmlを読むと可読性が良さそうなので
これで行こうと思っています。用途はテンプレート
エンジンの勉強がてら簡易wikiでも自作してみよう
と思ってます。どうぞよろしくお願い致しますm(__)m



661 名前:nobodyさん [2008/01/06(日) 01:12:32 ID:4ZDHflzT]
ActivePerlにcpan Perl::Tidyしました
cygwinからActivePerlを使っているのですが、
$ perltidy
としてもcommand not found になります。
どうしたわけでしょう。
cygwin用のperltidyもあるときき、Cygwinからもcpan Perl::Tidyで入れてみましたが、
依然として
$ perltidy
command not found
です。アドバイスください。ヒントでもいいのでお願いします。

662 名前:nobodyさん mailto:sage [2008/01/06(日) 05:36:20 ID:???]
昔俺もやった。確か bin にパスが
通ってないだけだったと思うけど。

663 名前:nobodyさん mailto:sage [2008/01/06(日) 11:16:43 ID:???]
>>660
htmlタグの書き方について質問をしたいのであれば、
WebProg板ではなく、Web製作板の方へどうぞ

664 名前:nobodyさん [2008/01/06(日) 13:57:41 ID:4ZDHflzT]
>>662
うまくいきました。ありがとうございます。

665 名前:nobodyさん [2008/01/06(日) 15:48:56 ID:srAiPMxF]
関数に配列を渡そうとしているのですがうまくいきません。

呼び出し側
p_html_kotaivew_kekkawrite
($name, @status, $ks, @han1, @han2, @sta1, @sta2);
関数側
sub p_html_kotaivew_kekkawrite{
local($name, @status, $ks, @han1, @han2, @sta1, @sta2) = @_;
〜〜以下略

このような感じにやると、渡した$name以降の配列がすべて@statusに格納されてしまいます。
アドバイスお願いします

666 名前:nobodyさん mailto:sage [2008/01/06(日) 16:21:21 ID:???]
リファレンス渡しにしろ

667 名前:nobodyさん [2008/01/06(日) 16:47:29 ID:XbpFSz7R]
>>666
リファレンス渡しをしてみましたが、やはり@statusに以降の配列がすべて格納されてしまいます。


668 名前:nobodyさん mailto:sage [2008/01/06(日) 17:03:52 ID:???]
>>667
p_html_kotaivew_kekkawrite
($name, \@status, $ks, \@han1, \@han2, \@sta1, \@sta2);

sub p_html_kotaivew_kekkawrite{
 local $name = @_[0];
 local @status = @{$_[1]};
 local $ks = @_[2];
 local @han1 = @{$_[3]};
 local @han2 = @{$_[4]};
}
 local @sta1 = @{$_[5]};
 local @sta2 = @{$_[6]};
}

669 名前:nobodyさん mailto:sage [2008/01/06(日) 17:04:32 ID:???]
>>668
ブレスミスすまそ

670 名前:nobodyさん mailto:sage [2008/01/06(日) 17:26:06 ID:???]
>>669
なるほどそのように記述すればよろしいのですね。
本当にありがとうございました



671 名前:nobodyさん mailto:sage [2008/01/06(日) 19:10:38 ID:???]
>>668ですでに回答は書いてあるけれど。。。
他の言語を先にやったものだと違和感を感じるものだが、perlの場合は、
関数は、スカラを先に書いて、配列を後に書いた方がいいというルールが
あるようだ。

672 名前:nobodyさん mailto:sage [2008/01/06(日) 19:20:03 ID:???]
ま、スライスを理解すればそれが普通に・・

673 名前:nobodyさん mailto:age [2008/01/06(日) 19:21:39 ID:???]
すみません。質問です。
Perlで検索結果一覧を出すまでや、ファイルへ書き込みをした場合に
要した時間を計り、表示させたいのですが、どのような関数を
使用したらよろしいのでしょうか。

674 名前:nobodyさん mailto:sage [2008/01/06(日) 19:50:13 ID:???]
>>673
my $t = time;
〜 #計測したい処理
my $t2 = time;
my $sec = $2 - $1;
print "$sec秒だったです";

675 名前:nobodyさん mailto:sage [2008/01/06(日) 19:51:41 ID:???]
訂正
× my $sec = $2 -$1;
○ my $sec = $t2 - $t1;

676 名前:nobodyさん mailto:age [2008/01/06(日) 19:58:47 ID:???]
>>674->>675
すばやい回答ありがとうございました。

677 名前:nobodyさん mailto:sage [2008/01/06(日) 20:17:39 ID:???]
開こうとしているサイトのURLを入力し、危険なhtmlコードが
含まれているかをチェックするcgiサイトがありますが、
あれはどういう原理で動いているのでしょうか。
自分のサーバとは別の、他のサイトのhtmlファイルを読み込むという事は、
perlのopenでは出来ませんよね?

678 名前:nobodyさん mailto:sage [2008/01/06(日) 20:38:06 ID:???]
Socket使うかLWPモジュール使うか

679 名前:nobodyさん mailto:sage [2008/01/06(日) 22:14:19 ID:???]
初歩的な質問ですが、サイトを読んでいてもいまいち分からなかったので
こちらで質問させていただきます。

配列の1つの要素への処理の記述方法についてです。
以下のコードを記述しておいて、それに続くものです。
@a = ( "a1", "a2" , "a3" );

記述1:$a[1] = "b2";
記述2:@a[1] = "b2";

どちらの記述でも、思うように動作しているので、問題なさそうなのですが、
処理速度や、内部的な動きなどからいってこっちの記述が良いというものや、
多くの人のコーディングはこちらが多いから、などというものはあるの
でしょうか。

680 名前:nobodyさん mailto:sage [2008/01/06(日) 22:15:19 ID:???]
おま・・・



681 名前:nobodyさん mailto:sage [2008/01/06(日) 22:30:21 ID:???]
cgiをブラウザで開いてテストしたいのですが、
ブラウザで開こうとするとエディタが開いてしまいます。
どうすればいいですか?

682 名前:nobodyさん mailto:sage [2008/01/06(日) 23:05:56 ID:???]
>>678
ありがとうございます。
さっそくぐぐって見ます。

683 名前:nobodyさん mailto:sage [2008/01/06(日) 23:12:15 ID:???]
>>681
必要な環境整えてる?
Windowsならば、ActivePerlとApacheをいれて設定するとか、
設定したフォルダにcgiファイルをおいてるかとか。

684 名前:nobodyさん mailto:sage [2008/01/06(日) 23:28:59 ID:???]
>>683
ApacheもActivePerlも入ってます。
ブラウザで開こうとするとエディタに実行結果が返ってきてるので
フォルダ等も大丈夫だと思います。

685 名前:nobodyさん mailto:sage [2008/01/06(日) 23:31:53 ID:???]
エディタに実行結果返ってきてるからってフォルダが正しいとは限らない気が・・

686 名前:nobodyさん mailto:sage [2008/01/06(日) 23:37:38 ID:???]
取り合えずやったことを書き出してみます。
#! c:/perl/bin/perl

print "Content-type: text/plain\n\n";
print "Hello Perl !";
を1-1cgiとしてhtdocs/rensyuに保存してブラウザで127.0.0.1/rensyu/1-1.cgiを使って実行すると
ファイルをダウンロードしてエディタが開いて実行結果が返ってきてるんですよね

687 名前:nobodyさん mailto:sage [2008/01/06(日) 23:39:11 ID:???]
cgi-binに入れようよ・・・・

688 名前:nobodyさん mailto:sage [2008/01/06(日) 23:43:00 ID:???]
>>686
httpd.conf の設定は確認してる?
参考にとほほのサイト紹介しておきます。
ttp://www.tohoho-web.com/wwwxx048.htm

689 名前:nobodyさん mailto:sage [2008/01/06(日) 23:49:36 ID:???]
text/plainだからじゃないの

690 名前:nobodyさん mailto:sage [2008/01/07(月) 00:02:41 ID:???]
>>687
参考にしてる本がhtdocsだったんですよね
>>688
設定確認しましたが、大丈夫だと思います。

ちょっと試してみたんですが、
#! c:/perl/bin/perl

# CGIヘッダーの出力
print "Content-type: text/html\n\n";

# HTMLの出力
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n\n";
print "<head><title>Hello HTML</title></head>\n";
print "<body><p>こんにちは。これはHTML文書の例です。</p></body>\n";
print "</html>";
だとブラウザに出力されました
もうわけが分かりません

>>689
ソースはテキストどおりなんですよね



691 名前:nobodyさん mailto:sage [2008/01/07(月) 00:23:35 ID:???]
何がわけわからんのだろう
ブラウザの設定でtext/plainはエディタで開くようになってるんでしょ

692 名前:nobodyさん mailto:sage [2008/01/07(月) 00:41:55 ID:???]
自分もさっきApache入れたら同じ症状になって困ったが
explorerの関連付けはずしたら正常になった

693 名前:nobodyさん mailto:sage [2008/01/07(月) 00:56:15 ID:???]
>>691
ブラウザの設定なんですかね?
ブラウザに関連付けしてみたらブラクラみたいになったんですが、
どういう設定をいじればいいんですか?

>>692
.cgiへの関連付けを削除してみたら
ブラウザから開こうとしたら
このファイルを保存しますか、または開くためのプログラムをオンラインで検索しますか?と
でてきました。
よければ現状、何に関連付けされてるか教えてもらえないですか?

694 名前:nobodyさん mailto:sage [2008/01/07(月) 01:06:33 ID:???]
>>690
どうしてもhtdocs内で実行させたいなら
<Directory ******/htdocs>
Options ExecCGI
</Directory>

みたいにExecCGI追加して
AddHandler cgi-script .cgi

みたいに設定ファイル(httpd.conf)を書き換えて再起動して味噌

695 名前:nobodyさん mailto:sage [2008/01/07(月) 01:14:15 ID:???]
>>693
まったく関連付けなし。

ってか>>688のサイトにあった、>>694の設定をしたら
関連付けしても普通に動くようになったぞ

696 名前:nobodyさん mailto:sage [2008/01/07(月) 01:17:32 ID:???]
>>693
関連付けはいじらずにtext/htmlで書き出せばどうだい

あと関連付けするのはcgiじゃなくてtxtだと思う

697 名前:nobodyさん mailto:sage [2008/01/07(月) 01:39:40 ID:???]
<Directory "C:/ApacheGroup/Apache2/htdocs">
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
を付け加えてもダメでした・・・
エディタは開かなくなったんですが、一瞬プロンプトの画面が見えたと思ったら消えて、
ブラウザにはWeb ページへのナビゲーションは取り消されましたってでてしまいます
>>696
htmlで書き出すとブラウザにでるんですけど、テキストがplaneで出力できてるんで自分の設定がなにかおかしいところがあると思うんですよ
だからそれを解決しとかないと・・・と思うんですよ。

698 名前:nobodyさん mailto:sage [2008/01/07(月) 09:36:39 ID:???]
>>697
もう一度よ〜〜〜く見るんだ。

”Content-type: text/plane” じゃあ、
そりゃ「そんな mimetype わしゃ知りません」ってIEがおっしゃるよ。

699 名前:nobodyさん mailto:sage [2008/01/07(月) 09:53:12 ID:???]
初心者はapacheじゃなくてanhttpd使った方がいいぞ。
たぶんapacheの設定で失敗してるはず。

700 名前:nobodyさん mailto:age [2008/01/08(火) 17:54:44 ID:???]
【質問】
レンタルサーバでCGIでプログラムを動かしているのですが、
処理を行う際のサーバの負荷が気になるので、>>674-675
書いてある方法を使用し、常に処理にかかった時間を
表示するようにしています。
ある関数を動かした際、普段の処理時間は1〜2秒なのですが、
ネットが異常に遅い時に同じ処理をした時、10秒ほどかかりました。
この処理にはhtml出力が入っているのですが、CGIのhtml出力は、
CGIで処理した結果すべてをまとめてクライアントPCのブラウザへ
流しているものだと思っていましたが、仕組み的にはそうではない
ということなのでしょうか。
それとも、私の使用している計測方法が誤っているのでしょうか。

何かこういうのを調べてみろ、みたいなヒントでも良いので
よろしくお願いします。



701 名前:nobodyさん [2008/01/08(火) 19:20:06 ID:b1r9jep2]
perl -Mでシンボルをインポートするにはどうしたらいいですか。
perldocしましたが見つかりませんでした。

702 名前:nobodyさん mailto:sage [2008/01/08(火) 19:21:24 ID:???]
>>700
検索→[Perl フラッシュ]

703 名前:nobodyさん mailto:sage [2008/01/08(火) 20:25:03 ID:???]
>>700
times関数ってのがあるよ

704 名前:700 mailto:sage [2008/01/09(水) 00:13:41 ID:???]
>>702
>>703
ありがとうございます。
早速調べてみます。

705 名前:701 [2008/01/09(水) 06:38:37 ID:g0MHwkoX]
>>701お願いいたします。

706 名前:nobodyさん mailto:sage [2008/01/09(水) 07:18:12 ID:???]
>>700
時間計測をやめて少しでも処理を減らすが吉

707 名前:nobodyさん mailto:sage [2008/01/09(水) 23:13:03 ID:???]
現在、データを複数のテキストファイルに書き込む処理を
するかたちでプログラムを組んでいます。
この複数のファイルは、丁度テーブルに見立てた設計に
しており、主キーで連携を取っています。
しかし、データがテキストファイルであるため、データの
取り扱いに不便を感じる場合もあります。
ソートをする際、すべてのデータを変数に読み込んだり
出来ない場合は、ソートをしながら別のファイルに
書き込むといった感じです。

こういう、データを記録するのに丁度良いモジュールという
ものはないのでしょうか??
ま、データベースを使えばという話になるのでしょうが、
レンタルサーバなどの環境でそこまで準備が出来ない場合の話です。

708 名前:nobodyさん mailto:sage [2008/01/09(水) 23:25:07 ID:???]
>>707
無料レンサバでもDB使えるとこ結構ある。


709 名前:nobodyさん mailto:sage [2008/01/10(木) 02:06:12 ID:???]
# フォームデータの取得
if($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
}
else {
$query = $ENV{'QUERY_STRING'};
}

ここまではエラーなく処理できてるんですが

# フォームデータの復元

foreach $pair (split(/&/, $query)) {
($key, $value) = split(/=/, $pair);

コレを入れるとエラーがでてしまうんですが、どこが悪いんですかね?

710 名前:nobodyさん [2008/01/10(木) 02:09:13 ID:YdP4IGcZ]
閉じ中カッコがない



711 名前:nobodyさん [2008/01/10(木) 19:24:04 ID:Ea25ozf2]
引数を作るにはどうしたらいいんですか?

index.cgi?----
みたいな感じのです。


712 名前:nobodyさん mailto:sage [2008/01/10(木) 19:44:52 ID:???]
>>707
つ DBD::CSV






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

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

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