トップページphp
981コメント337KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/03/31(火) 22:20:27ID:???
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Perl使いが優しくコメントを返しますが、
お礼はPerlの布教と初心者の救済をお願いします。

前スレ
くだすれPerl(超初心者用)2
http://pc11.2ch.net/test/read.cgi/php/1204488452/

関連スレ
Perlについての質問箱 39箱目
http://pc12.2ch.net/test/read.cgi/tech/1234181856/
Perlコーディング初心者質問スレ Part 59
http://pc11.2ch.net/test/read.cgi/php/1234752149/
【Perl上級者コーナーPart01】
http://pc11.2ch.net/test/read.cgi/php/1024741312/
0435nobodyさん2009/11/09(月) 22:28:03ID:???
素数の算出のし方がわからんのか?
昇順の並べ方がわからんのか?
perl自体がわからんのか?
0436nobodyさん2009/11/09(月) 23:09:55ID:???
質問の仕方が悪い。それじゃどこからどう見ても宿題だ。
正しい質問の仕方は

 異なる一つ以上の素数の和で成り立ち100以下という条件を満たす整数の求め方なんかお前らに分からんだろ?
 悔しかったら明日までに解いてみろよ屑ども。

う〜ん唐突だな
04374362009/11/09(月) 23:14:53ID:???
・・・まさか同様の趣旨のスレが存在したとは思いもしなかった436であった
http://pc11.2ch.net/test/read.cgi/php/1158647441/l50
0438nobodyさん2009/11/10(火) 07:41:59ID:???
>>434
1から100までのすべての整数は
異なる素数の和になってるから
答えは
1..100
で良いんじゃないw
0439nobodyさん2009/11/10(火) 11:02:51ID:???
1を素数に含めてよいものかどうか。
0440nobodyさん2009/11/10(火) 23:44:02ID:???
>>434
組合せで強引に解いてみた。
1、4、6以外は解があるみたい。


use List::Util qw(sum);

my @primes = grep { (1 x $_) !~ /^(11+)\1+$/ } (2..100);

my %ans;
for my $r ( 1..3 ) {
my @result = combination($r, @primes);
for my $combi (@result) {
my $sum = sum @$combi;
push @{ $ans{$sum} }, $combi if $sum <= 100;
}
}

for my $sum ( sort {$a <=> $b} keys %ans ) {
my @breakdown = map join('+', @$_), @{ $ans{$sum} };
print "$sum (". join(q{, }, @breakdown) . ")\n";
}
0441nobodyさん2009/11/10(火) 23:44:48ID:???
続き

sub combination {
my ($r, @data) = @_;
my $n = @data;

my @result;
combinatorial( $n, $r, 0, [], \@data, \@result );

return @result;
}

sub combinatorial {
my ($n, $r, $pos, $combi, $data, $result) = @_;

if ( $r == 0 ) {
push @$result, [ @$combi ];
return;
}

for my $i ( $pos..$n-$r ) {
push @$combi, $data->[$i];
combinatorial( $n, $r-1, ++$pos, $combi, $data, $result );
pop @$combi;
}
}
0442nobodyさん2009/11/11(水) 02:32:45ID:???
位置が素数じゃないことを指摘されて恥ずかしかったので、
俺も書いてみた。
素数を探すアルゴリズムを書くのがめんどくさかったので
ウェブからコピペしたのは内緒だ。
(上の人のはよくわかんなかったし)

#!/usr/bin/perl
use strict;
use warnings;
use List::Util q/sum/;

my @primes = (2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97);
@primes = reverse @primes;

my $ncomb = 2**(scalar @primes);
my %outhash = map{$_,0}1..100;

## you don't have to run until $ncomb
## a thousand is enough to get the answer of 1, 4, 6
for (0..1000){
my $bin = sprintf "%025b", $_;
my @comb = split("",$bin);
my @list = map{$comb[$_]*$primes[$_]}0..24;
if (sum @list <=100){$outhash{sum @list}=1};
}

for(sort {$a<=>$b}keys %outhash){print $_,"\n" unless $outhash{$_};}
0443nobodyさん2009/11/11(水) 12:07:52ID:???
ニート趣味プログラマーなんで、さらに改良してみた。
総当りで調べているので、完全な証明にもなっていると思う。

汎用性を持たせて、1つ以上の素数の和だけでなく、2つ、3つ以上とかにもできるようにした。

use List::Util qw(sum first);

# 調べる最大数値(100で質問者の題意)
my $max_num = 100;

# 和にするのに必要な素数の数(1で質問者の題意)
my $num_of_primes = 1;

my @primes = grep { (1 x $_) !~ /^(11+)\1+$/ } (2..$max_num);

my %ans;
for my $num ( $primes[0] .. $max_num ) {
my $max_index = first { $primes[$_] >= $num } 0..$#primes;
if ( not defined $max_index ) { $max_index = $#primes }

my @combi = find_combi( $num, @primes[0..$max_index] );
push @{ $ans{$num} }, @combi if @combi;
}

for my $sum ( sort {$a <=> $b} keys %ans ) {
print "$sum (". join('+', @{ $ans{$sum} }) . ")\n";
}

my @num_excluded = grep { not exists $ans{$_} } 1..$max_num;

print "\n$num_of_primesつ以上の素数の和で表\せない数値\n";
print join q{, }, @num_excluded;
0444nobodyさん2009/11/11(水) 12:09:50ID:???
続き

sub find_combi {
my ($num, @primes) = @_;

for my $r ( $num_of_primes .. @primes ) {
my @combi_list = combination($r, @primes);
for my $combi (@combi_list) {
return @$combi if $num == sum @$combi;
}
}

return;
}


sub combination と sub combinatorial の中身は、>>441と同じ。
0445nobodyさん2009/11/12(木) 08:40:06ID:???
宛先メールアドレス(ex. foo@example.com)、件名、メール本文を与えたら、smtpサーバーを介さずに、
MXレコードを引いて、宛先のメールサーバーに直接メールを送るモジュールはないでしょうか?

レンタルサーバーで使いたいので、pure perlでお願いします。
0446nobodyさん2009/11/13(金) 12:13:36ID:???
スパマーは今すぐ死ね
0447nobodyさん2009/11/13(金) 12:30:24ID:???
>>445
Net::Smtp
0448nobodyさん2009/11/21(土) 23:38:15ID:twpezRr5
fedora9に付属しているgeditのプラグインが最近使えませんが、どうすれば良いでしょうか?
プラグイン設定で追加しようとしても灰色になって選択できません。
0449nobodyさん2009/11/22(日) 05:57:19ID:???
>>448
つvi
0450nobodyさん2009/11/23(月) 22:45:22ID:g+VEp3/W
通常、サブルーチンを使うとき、途中で終了するように
「exit」を入れています。
sub a { }
exit;
sub b { }

これをライブラリとして使用する場合、別のcgiから呼び出すと、
途中で終了してしまいます。
どのように動作を区切っておけばよいのでしょうか?
0451nobodyさん2009/11/24(火) 01:28:07ID:???
>>450
まったく何を言ってるのか分かりませんが、
exit;
の行を消せば良いんじゃないでしょうか

サブルーチンを使うとき、途中で終了する目的はなんでしょうか?
そもそも、exit以降にサブルーチン定義しかなかったら、
exitが有っても無くても動作は変わらないような気がするのですが。

0452nobodyさん2009/11/24(火) 01:50:27ID:???
>>449
geditを使わずviで編集しろという事でしょうか?
0453nobodyさん2009/11/24(火) 10:33:29ID:???
>>451
初心者で済みません、基本が分かってないのだと思います。
サブルーチン一つに変えて質問します。

例えば上から下に流れていって、
コード1・・・・
& a;
コード2・・・・
sub a{ }

コード2の部分で終わりたい場合に、
exit;がなかったら最後まで実行するのではと思うのですが?
0454nobodyさん2009/11/24(火) 10:54:55ID:???
>>453
ライブラリは基本的には関数定義群
自分が何をやっているのか分からなければ、関数化できないような余計な処理をサブルーチンの外に書いてはいけない
関数は定義しただけでは実行されないため、exitはいらない
多分main.plを流用しようとしたから余計な処理が入ってるんだろうが、それなら関数のみ抽出したものを新たに作る必要あり
それから.pl形式のライブラリは時代遅れ
パッケージ(.pm)の作り方&使い方を学ぶべし
0455nobodyさん2009/11/24(火) 22:33:31ID:???
>>453 オブジェクト指向分かってるのか……
0456nobodyさん2009/11/24(火) 22:40:50ID:???
おいおい…
0457nobodyさん2009/11/25(水) 00:02:19ID:4vaBixa8
ヽ('ー`)ノ あー頭が溶けそう
0458nobodyさん2009/11/25(水) 04:47:50ID:???
>>453
sub a{}を"実行する"っていうのはどういう意味ですか?
サブルーチンが定義されると何か困ることでもあるんですか?
なんなんですか?
04594532009/11/25(水) 11:53:02ID:???
色々と有り難うございました。
ちょっと勘違いしておりました。
0460nobodyさん2009/11/25(水) 12:16:55ID:???
あんま責めてやんなよ、ここは超初心者スレだぞ
全てはpackage mainのグローバルスコープで命令が動いてしまうperlが悪いんや

でもそのおかげでワンライナー美味しいです
0461nobodyさん2009/11/25(水) 12:35:19ID:???
ライブラリを作る前にオブジェクト指向を理解してね
穴が開くこともあるから
04624532009/11/25(水) 12:52:24ID:???
すみません、穴が空くとはどういう場合がありますか?
一つでいいですので例をお願いします。
0463nobodyさん2009/11/25(水) 13:14:26ID:???
例か。
どんなライブラリかは知らないけど、コンストラクタを作っているなら、パッケージ内の変数に外から直接アクセスすることで予期せぬ動作を招くことがある
0464nobodyさん2009/11/25(水) 14:47:15ID:???
痛いヤツが1人いるな…
0465nobodyさん2009/11/25(水) 17:11:08ID:???
ライブラリって言っても、オブジェクト指向じゃなくて、
Exporterを使う伝統的なライブラリも、
あれはあれでけっこう良いよね。

サザエさん的な良さがある気がする。
のんびり和むっていうか。
0466nobodyさん2009/11/25(水) 21:40:04ID:???
一人を除いて、オブジェクト指向の話はしてない。
そもそもオブジェクト指向を理解してたら、あんなクソレスは付けられん
0467nobodyさん2009/11/25(水) 21:50:52ID:???
はい次の質問者さんどうぞー
0468nobodyさん2009/11/26(木) 15:00:47ID:???
FFA系のCGIゲーム「MS Tactics」というものがありますが
こういった物を作るにはどの言語を使うのが最適なのでしょうか?

ケースバイケースとか○○ならxxとか自分の知ってる言語が最強とか
よく分からないので、具体的な目的をあげました

もしかすると結論は「何でもいい」のかもしれませんが
□□ならこういった点が良いというのを教えて下さい

制作者
ttp://laggard.maxs.jp/ms_tactics.htm

稼働例
ttp://2ch.guda-guda.net/cgi-bin/mst/
0469nobodyさん2009/11/26(木) 15:08:24ID:???
>>468
スレ違い。
△▲ WebProg 初心者の質問 Part21 ▼▽
http://pc11.2ch.net/test/read.cgi/php/1257701535/
このあたりで聞いてくれ。
04704682009/11/26(木) 15:18:47ID:???
失礼しました。移動します

>>469
ご案内ありがとうございます
0471nobodyさん2009/11/26(木) 18:01:55ID:???
print "Content-type: text/html\n";

上記「Content-type」の頭文字は大文字じゃないとダメなんでしょうか?
0472nobodyさん2009/11/26(木) 18:05:27ID:???
HTTPの仕様で決まっているから、大文字じゃないと駄目なんじゃない?
04734712009/11/27(金) 10:26:44ID:???
>>472大文字に決まってたんですね。ありがとうございました
0474nobodyさん2009/12/02(水) 13:12:52ID:???
C++、Python、PHPが少し書けるレベルの者なのですが、
オライリーの初めてのPerlはレベルが高いでしょうか?
お薦めの入門書があったらお願いします
0475nobodyさん2009/12/02(水) 13:15:41ID:???
>>474
というかそれが読めないと全く話にならない。
0476nobodyさん2009/12/04(金) 13:50:17ID:???
>>474
C++、Python辺りがかけるならいきなりラクダに行って
大丈夫だと思う。perldoc公開されてるから軽く読んでみ。
0477nobodyさん2009/12/05(土) 00:52:22ID:B4BYeir+
>>474
ラクダ本から「すぐ分かるオブジェクト指向Perl」へ進むのが
現状ではベストだと思う
0478nobodyさん2009/12/06(日) 08:28:13ID:???
んで「モダンPerl入門」っつー流れかな。
その間に「入門Git」とかも買ってプロジェクト管理にも
慣れておくといい。
0479nobodyさん2009/12/06(日) 11:02:28ID:???
牧さん宣伝乙。
0480nobodyさん2009/12/15(火) 02:38:41ID:???
ヒアドキュメント内にhtmlを記す場合には「"」などを\でエスケープしないといけないのでしょうか?
そのまま記してもエラーは出なかったのですが、大丈夫なのか心配に。。。
0481nobodyさん2009/12/15(火) 02:54:10ID:???
ヒアドキュメントは " をそのまま書いても OK
ただ、ヒアドキュメントはソースが汚くなりやすいので、外部の HTML を読み込んで出力させたほうがいいかなと思う。
04824802009/12/15(火) 04:07:33ID:???
>>481
そのままで大丈夫でしたか
ありがとうございました

外部から読み込むというのは、元ファイルで使用する変数も書いたhmtlを記述したファイルを作成して、
適当に変数に代入して分割、適所に読み込んではめ込む感じで良いんでしょうか?
(配布物をいじるだけという程度ですので的外れなことを言ってそうですが
0483nobodyさん2009/12/15(火) 08:45:12ID:???
そういうことを簡単に行うために、Template-Toolkit, HTML::Template or Tenjinといった
テンプレートエンジンがいくつも開発されてる
04844802009/12/16(水) 08:47:58ID:???
>>483
検索した所、十分に利用できるまで、私には障害が多そうなので今回は諦めます
ありがとうございました
0485nobodyさん2009/12/18(金) 22:53:46ID:kWIKrWct
すいません。超初心者です。
$hoge[0]->{'age'} = 20;
$hoge[0]->{'tall'} = 165;
$hoge[1]->{'age'} = 18;
$hoge[1]->{'tall'} = 180;
$hoge[2]->{'age'} = 13;
$hoge[2]->{'tall'} = 170;
のとき、
{'tall'}が小さい順に
@hoge の中を$hoge[0],$hoge[2],$hoge[1]と並び替えたいとき、どうすればいいでしょうか。
初心者なので、言っている意味が分からなかったら、すいません。。。orz
よろしくお願いします。
0486nobodyさん2009/12/18(金) 23:03:48ID:???
@hoge = sort { $a->{tall} <=> $b->{tall} } @hoge;
0487nobodyさん2009/12/18(金) 23:42:19ID:???
お早いご解答ありがとうございます!
助かりました。
04884852009/12/18(金) 23:43:08ID:???
あ、↑は485です。
0489nobodyさん2009/12/29(火) 07:31:09ID:???
>>481
ディスクI/Oは時間を含めいろいろとリソースを食うので、
速度がクリティカルになる場面や頻繁にI/Oがある場面では
ヒアドキュメントの方が良い。

まあこれはHTMLのテンプレートみたいだから外部ファイルの方がいいだろうな。
1アクセス1ディスクアクセスは大した負荷じゃないし、テンプレートはファイルに
分けた方がモダン。
0490nobodyさん2009/12/29(火) 21:37:25ID:???
> ディスクI/Oは時間を含めいろいろとリソースを食うので、
> 速度がクリティカルになる場面や頻繁にI/Oがある場面では
> ヒアドキュメントの方が良い

cache すればよくね
0491nobodyさん2009/12/30(水) 01:00:40ID:MRCq7PuI
常にキャッシングしてくれてればいいけど・・・
0492nobodyさん2009/12/31(木) 06:31:42ID:???
っmemcached
0493nobodyさん2009/12/31(木) 08:05:41ID:???
ヒアドキュメントを使うのはコードの可読性にも影響するから
短けりゃコード埋め込みでもいいと思うし(ファイルにするとかえって
可読性が落ちることがある)、何百行とかやたら長いのならファイルに
入れてそれこそキャッシュしてやればいいと思う。
0494nobodyさん2009/12/31(木) 18:54:26ID:???
CGI初心者なので、見当違いな事を言っていたらごめんなさい。
CGIで、srandを使用せず(勝手に呼び出される物だけで)にrandを使用していた場合、
srandが呼び出されるのはいつになりますか?
複数ファイルに別れていて、複数のクライアントからアクセスした場合、いつ初期化が行われるかが知りたいのです。
宜しくお願いします。
0495nobodyさん2009/12/31(木) 22:44:41ID:???
perlのverは?
0496nobodyさん2009/12/31(木) 22:55:44ID:???
5.8.8です。
よろしくおねがいします。
0497nobodyさん2010/01/01(金) 17:23:01ID:???
組み込み関数だからソースを当たれ
http://www.cpan.org/src/5.0/

まぁここらへんだろうねぇ
pp.c(2717): PP(pp_rand)
embed.h(1985): #define pp_rand Perl_pp_rand
embed.h(4027): #define pp_rand() Perl_pp_rand(aTHX)
opcode.h(858): MEMBER_TO_FPTR(Perl_pp_rand),
pp_proto.h(145): PERL_PPDEF(Perl_pp_rand)
0498nobodyさん2010/01/01(金) 18:26:27ID:???
>>497
ありがとうございます。
とりあえず実際にやってみるのと併せて、頑張ってみます…
0499nobodyさん2010/01/01(金) 19:12:18ID:???
今頃ソースを見てるんだろうけど
PL_srand_calledをチェックして種を初期化するルーチンが入ってる
つまり最初にrandを呼んだ時点でsrandが呼ばれる

ではrandはいつ呼ばれるのか?
それはあんたにしか分からんよ
0500nobodyさん2010/01/01(金) 21:35:42ID:???
>>499
ありがとうございます。
ソース単位で最初に呼ばれた時に初期化されるようですね。
もう少し勉強してみようと思います。
0501nobodyさん2010/01/03(日) 08:19:35ID:???
>>500
srandは過去の遺物だから、今はrandは何も考えずに純粋に
擬似乱数発生器として使って問題ない。

つーかソースなんか読まなくても普通にperldoc -f randすりゃ
いいだけだと思うが。マニュアル読むよりソース読む方が速いとか
どんだけだよ。
0502nobodyさん2010/01/03(日) 17:40:19ID:???
マニュアルを信用するな
0503nobodyさん2010/01/04(月) 05:20:30ID:???
厳密な乱数ならともかく擬似乱数が発生してるかどうかなんてマニュアルもソースも不要だろ。
テストスクリプト数回走らせればいいだけの話。
0504nobodyさん2010/01/04(月) 15:37:53ID:???
<form action="CGIのURL" method="postかget">
<input type="text" name="○○">
<input type="submit" value="送信">
</form>

このような形で文字列を違うページに送り、そのページに表示たいのですがどうしたらいいのでしょうか?
CGIとなるファイルの中身(?)と表示させる方法がいまいちわかりません。
0505nobodyさん2010/01/04(月) 15:40:38ID:???
日本語が下手なので何がやりたいのかさっぱりわからない
0506nobodyさん2010/01/04(月) 16:03:07ID:???
値の受け取りかたも標準出力に何を吐くのかも全然わからないんだと思う。
0507nobodyさん2010/01/04(月) 16:07:33ID:???
>>504
とりあえず簡単な雛形を書いたので、それから細かい質問を受けるとしよう。

use CGI;

my $q = new CGI;
my $some_str = $q->param("○○");

print $q->header( -type => 'text/html', -charset => q{} );
print "<p>$some_str</p>";
0508nobodyさん2010/01/04(月) 16:18:11ID:???
>>505さん
すみません…
 
>>506さん
今まで携帯のレンタルスペースを使用していました。
(独自タグでフォームで送信した文字を受けとったりすることはできました。)

勉強する為にレンタルスペースを離れ、昨日サーバーを借りたんです。
借りたのはいいんですが独自タグに甘えていたせいなのかどうやって受け取っていいのかも全然わからない状態です。
0509nobodyさん2010/01/04(月) 16:59:28ID:???
そもそもPerlが関連しているのか?
0510nobodyさん2010/01/04(月) 17:19:32ID:???
すでにHTMLファイルがあって、その中にフォームから受け取ったパラメータを埋め込みたいと予想。
HTMLテンプレートエンジンを紹介すればいいんでないかな?

それよりPHPでしたほうが楽?
0511nobodyさん2010/01/04(月) 17:24:47ID:???
>>510
そりゃCSRFもSQLインジェクションも何も考えない単純フォームなら
PHPの方が楽だろうよ。
0512nobodyさん2010/01/04(月) 17:37:50ID:???
>>508さん
 
use CGI;

my $q = new CGI;
my $some_str = $q->param("○○");

print $q->header( -type => 'text/html', -charset => q{} );
print "<p>$some_str</p>";
 
これにformで指定した値(○○)を○○に入れるんでしょうか?
 
PerlはHello Worldをコマンドプロンプトでできた位で書いてもらったのもほとんど理解できていません…

>>509さん
 
関係していないのでしょうか?
 
Perlを勉強したいと思い、レンタルスペースを離れたのもあるんですが…
formで送信するにはレンタルスペースでないとCGIが必要と聞いたのでここで質問させてもらったのですが…
 
とりあえず今はCGIのURLの部分にあたるCGIを作ってみたいと思っています。
0513nobodyさん2010/01/04(月) 17:45:19ID:???
勉強するんだったらサーバを借りる前にXAMPPなどを自分のマシンに入れて
ローカル(手元の)マシンでやればいいのよ・・・
0514nobodyさん2010/01/04(月) 17:59:01ID:???
>>512
>formで指定した値(○○)を○○に入れるんでしょうか?
そうです。
name="○○"の、"○○"に相当する部分です。
0515nobodyさん2010/01/04(月) 17:59:11ID:???
>>513さん
XAMPP(?)というのはApache(?)というものと同じで自分のパソコンをサーバー化するみたいなやつですか?
(私はActivePerlをインストールしてあり、Apache(?)はインストールしていない状態です)

サーバーを借りた目的は携帯サイトを作りたいのとPerlの勉強をしたかったからなんです…
0516nobodyさん2010/01/04(月) 18:01:13ID:???
>>504
俺だったらTemplate::ToolkitかClearSilverを使う。
0517nobodyさん2010/01/04(月) 18:02:24ID:???
>>515
ですね。
0518nobodyさん2010/01/04(月) 18:12:56ID:???
>>514さん
ありがとうございます。そこは理解できました。
他のところがどのような意味をしているのか全くわからないのですが
コピーしてメモ帳で拡張子を.cgiで保存してサーバーにアップロードしてもいいのでしょうか?
 
>>516さん
それは携帯にも対応できますか…?
パソコンは2カ月前に購入したので正直わからないことだらけです…
 
>>517さん
ありがとうございます。
0519nobodyさん2010/01/04(月) 18:16:58ID:???
>>516
レンタルサーバーでそれ使えるんですか?
0520nobodyさん2010/01/04(月) 18:20:35ID:???
>>518
アップロードしてもいいけど、今後のことも考えて、自分のパソコンにWebサーバーを構築
しておいて、そこで試してうまくいってから本サーバーにアップするようにしたほうがいいよ。
0521nobodyさん2010/01/04(月) 18:24:04ID:???
どうせなら、Mojolicious::Liteを使って欲しいな
0522nobodyさん2010/01/04(月) 21:07:54ID:???
>>520さん
ありがとうございます。

--
 
use CGI;

my $q = new CGI;
my $some_str = $q->param("○○");

print $q->header( -type => 'text/html', -charset => q{} );
print "<p>$some_str</p>";
 
--

name="○○"の"○○"を○○にいれてアップロードすれば動く(?)のでしょうか?
アップロードするのが心配です…
 
また送信した文字を表示するにはどのようにしたらいいのですか…?
送りたいのはURLの違うページなんですが…
0523nobodyさん2010/01/04(月) 21:17:53ID:???
>>522
それは送信した文字を表示するだけのスクリプトですので害はないです。
ただ、できれば自分のパソコンにWebサーバーを構築して試すことをお薦めします。
0524nobodyさん2010/01/04(月) 21:41:05ID:???
>>523さん

ありがとうございます。

ちょっとわからないのですがサーバーはロリポップです
 
use CGI;

my $q = new CGI;
my $some_str = $q->param("○○");

print $q->header( -type => 'text/html', -charset => q{} );
print "<p>$some_str</p>";
 
○○以外にいじる必要があるところはあるのでしょうか?
○○の部分をname="○○"と同じにしてtest.cgiで保存、アップロードしてみたところ
test.cgi.txt となってしましました…
from側もCGIのURLというところにURLをいれて文字を入れて送信しても
「※CGI もしくは SSI が正しく動作していません。」とでてしまいます…

0525nobodyさん2010/01/04(月) 21:43:03ID:???
すみません、文字打ち間違えてしまいました。
○ test.cgi.txt となってしまいました…
です
0526nobodyさん2010/01/04(月) 21:52:38ID:???
>>524
後ろの.txtを消してください。
パーミッションを700(rwx------)にしくてください。

パーミッションについて / ホームページ / マニュアル - ロリポップ!
http://lolipop.jp/manual/hp/permission/
0527nobodyさん2010/01/04(月) 21:55:28ID:???
shebang も書いてないだろうし先が長そうだね。
勉強したいんだったら、何か入門用の読み物見ながらゆっくりいろいろ遊んでみたらどう?

今まで使ってた独自タグとかいうのと同じことをしたいだけなら
<?php echo htmlspecialchars($_GET['hoge']) ?> こんな感じのを埋め込むほうが楽だと思う。
0528nobodyさん2010/01/04(月) 22:01:17ID:???
>>524
そうだね。
先頭行に、これを付け加えてください。

#!/usr/bin/perl

use CGI;

my $q = new CGI;
my $some_str = $q->param("○○");

print $q->header( -type => 'text/html', -charset => q{} );
print "<p>$some_str</p>";
0529nobodyさん2010/01/04(月) 22:01:57ID:???
>>526さん
何度も何度も申し訳ないです、本当にありがとうございます。

.txtは消しました。
パーミッションというのはどこにある(?)のでしょうか…?
 
/usr/local/bin/perl もしくは /usr/bin/perl
 
これは関係ないのですか?
0530nobodyさん2010/01/04(月) 22:03:50ID:???
ロリポップならPHPが使えるからPHPにしたほうがいいかもね
0531nobodyさん2010/01/04(月) 22:04:25ID:???
>>504の質問だけで何レス伸びるかなー
みんながんばれー
0532nobodyさん2010/01/04(月) 22:06:27ID:???
>>529
>>528のように先頭行に書いてください。
パーミッションの設定方法は、>>526のURLを見てください。
0533nobodyさん2010/01/04(月) 22:09:00ID:???
PHPは別名脆弱性製造言語と呼ばれるくらい、初心者が作ると攻撃に弱いからなぁ
単純なことなら問題ないのだろうけど
0534nobodyさん2010/01/04(月) 22:24:36ID:???
今のhtmlファイルがこうです。

<html>
<head>
<body>
<form action="http://○○.△△/test.cgi" method="post">
<input type="text" name="id">
<input type="submit" value="送信">
</form>
</body>
</head>
</html>

--

cgiファイルが
 
#!/usr/bin/perl 700(rwx------)

use CGI;

my $q = new CGI;
my $some_str = $q->param("id");

print $q->header( -type => 'text/html', -charset => q{} );
print "<p>$some_str</p>";
 
こうなっているんですが、これでいいのでしょうか…?
間違っている場所があれば教えてください。
 
皆さん本当にありがとうございます。
■ このスレッドは過去ログ倉庫に格納されています