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

【Perl】初心者コーナーPart11

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/03/27 12:53ID:wAXxxOxP
 
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

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

1と3が無いと誰も答えられないよ、良い回答は良い質問から。
一緒に勉強しましょう。

参考書籍はこちら【【Perl,CGI】参考書籍 第2版 】
http://pc.2ch.net/test/read.cgi/php/988809842/
CGIの質問はこちら【CGIだけどなんか質問ある Pert 5.01 】
http://pc.2ch.net/test/read.cgi/php/1015127347/l50
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/

過去ログ、その他の役立ち情報は>>2-10を見よう。
0011nobodyさん02/03/27 15:59ID:???
>10
最初の要素で@aaaの要素数を渡しておけば?
0012 02/03/27 16:05ID:lRPZasZ4
すいません今日Perlをはじめたばかりの者です。
今練習でCHATを本のサンプルから作っているのですが、

&ReadPars(*in)

という入力があるのですが、この「*in」とはどのような意味なのでしょう?
もし宜しければご教授ください。
0013nobodyさん02/03/27 16:06ID:???
普通はリファレンス使うと思う。
ってかなぜmyじゃなくてlocal?
0014こちらも初心者02/03/27 16:14ID:???
>>12
フォームから渡されるデータを格納するハッシュの名前
&ReadParse(*in);
とするとフォームから渡されたデータが
%inというハッシュに格納される

で良いですよね?>諸先輩方
00151302/03/27 16:25ID:lRPZasZ4
>>14
ありがとうございます。
ReadParseというサブクラス(?)に定義されているハッシュに格納するコードを
呼び出してそこに「in」の値を渡し、結果として%inとなるという事ですよね?

では「*」とはどういう意味なのだろう・・・

すいません、せっかく教えていただいているのに・・・
もし宜しければそのあたりが詳しく書いてあるサイトを教えていただけないでしょうか?
検索をかけてもヒットする単語が多すぎて検索できないのです。
00161302/03/27 16:35ID:???
何度もすいませんでした。
inが関係ないという事で検索する事ができました。
*とはいろいろな変数の型を纏めて扱えるようになるものだったのですね(語弊あり?)

お邪魔いたしました。
0017nobodyさん02/03/27 16:40ID:???
&ReadPars(*in)
こんな時代遅れのことをやると恥ずかしいので、忘れた方がいいですよ。
00181002/03/27 16:42ID:yW5j0qTy
>>13

>普通はリファレンス使うと思う。
>ってかなぜmyじゃなくてlocal?

myでのパラメータ渡しの記述例
お教えいただけませんか、よろしくお願いします。
0019nobodyさん02/03/27 16:52ID:???
>>18
localをmyに変えれば?
そして本屋に行ってPerlの本でも買えば?
00201002/03/27 17:23ID:yW5j0qTy
>>19

レスありがとう御座います。
早速試してみました。

>localをmyに変えれば?

my ( @aaa , $bbb ) ;
@aaa = ( 0 , 1 , 2 , 3 ) ;
$bbb = "4567" ;
&test( @aaa , $bbb ) ;
exit ;

sub test
{
 my ( @aaa , $bbb ) = @_ ;
 print "\@aaa=@aaa\n" ;
 print "\$bbb=$bbb\n" ;
}

実行結果:
@aaa=0 1 2 3 4567
$bbb=

残念ながら結果は、変わりませんでした。

>そして本屋に行ってPerlの本でも買えば?
ご指摘ありがとう御座います。
先程、www.amazon.co.jpにて
プログラミング Perl (オライリー社)
Effective Perl (ASCII 社)
の2冊購入いたしました。
00211002/03/27 17:41ID:yW5j0qTy
先程の、配列のパラメータ渡し解決いたしました。

my ( @aaa , $bbb ) ;
@aaa = ( 0 , 1 , 2 , 3 ) ;
$bbb = "4567" ;
&test( \@aaa , \$bbb ) ;
exit ;

sub test
{
my ( $aaa , $bbb ) = @_ ;

print "\@aaa=$$aaa[ 0 ] $$aaa[ 1 ] $$aaa[ 2 ] $$aaa[ 3 ] \n" ;
print "\$bbb=$$bbb\n" ;
}

実行結果:
@aaa=0 1 2 3
$bbb=4567

http://www13.cds.ne.jp/~ohsaru/perl/perlref.html
こちらのページが大変参考になりました。
0022nobodyさん02/03/27 19:03ID:???
>>21
レスキューやKENTのようなヘボの模倣しないで、プロトタイプ使えって。

sub manco(\@$)
{
print "$_[0]->[0]\n";
print "$_[1]\n";
}

@a = qw(1 2 3 4 5);
manco(@a, 10);
00231002/03/27 21:15ID:???
>>22

ようきけや、22よ、
君いつもいるね。

いつもそんなことばかりやっているね。気付いてるかい?
はっきり言って誰も君のこと相手にしてないよ?わかってるの?
それって、自分ではおもしろいと思ってやっいているんだろうね。
きっと、薄ら笑い浮かべてやっているんだろうね。

でもさぁ、君以外の人には全然おもしろくないんだよ。
もしかして自分でもおもしろくないのにやっているんじゃないの?
自分でも何してるのかわからなくなってるんじゃないの?

家族からも近所からも煙たがられているんだね。
友達も彼女もいないんだね。会社でも浮いているんだね。
どこに行っても相手にされないんだね。

ネットでも無視されてここに流れ着いて来たんだね。
ここでさえ相手にされてないじゃん。どうするの?かわいそうに。
もう駄目じゃん。生きていても何もいいことないよ?
どうせ誰からも相手にされないんだから、死んだ方がいいんじゃない?

相手にされないから奇抜な言動で注目を浴びようと必死なんだね。
始めは少し注意を向けてもらったのだろうけど、もう飽きられて完全に 無視されているね。
おもしろくもないのに、意味不明な事を大量に書かれても目障りなんだよね。
それって迷惑なんだよ?気付いてる?

さようなら。この世から消えてくれ。君いるだけで迷惑。
せめて最後ぐらい人里離れた山の中で自殺してね。
00241002/03/27 22:18ID:yW5j0qTy
>>22

プロトタイプ宣言についてですが、

@array = ( 'a' , 'b' , 'c' , 'd' ) ;
$str = "4567" ;
test( \@array , $str ) ;
exit ;

sub test(\@$)
{
my @aaa = $_[ 0 ] ;
my $bbb = $_[ 1 ] ;

print "$aaa[ 0 ]:$aaa[ 1 ]:$aaa[ 2 ]:$aaa[ 3 ]\n" ;
print "$bbb\n" ;
}

実行結果:
a:::
4567

こんな感じに変更してみたのですが、
testへの最初の引数の配列が正しく
@aaaに渡りません。
$_[ 0 ][ ? ]だと問題無く参照できるのですが、
どこか間違ってますでしょうか
0025nobodyさん02/03/27 22:30ID:???
>>24
プロトタイプは呼び出し前に宣言したヤツしか反映されない。

sub foo( prototypes );

foo(args);

sub foo( prototypes ){
...
}
0026nobodyさん02/03/27 22:42ID:???
>>23
分かったからとっとと死ね。
0027nobodyさん02/03/27 23:28ID:???
なんのためにプロトタイプをつかうか説明しろよこのカスどもが!!
まともに説明もできないのかこのガラクタが!!
0028nobodyさん02/03/27 23:50ID:???
>>27のようなヘボこそ使うことをお勧めする。
君も後10年もすれば必要性がわかるかもね。(プ
0029nobodyさん02/03/27 23:57ID:???
>>27
自分より上で自分を呼ばれた場合非常に困る。
0030nobodyさん02/03/27 23:58ID:???
>>29
よって、自分より下に自分のプロトタイプ置くアフォはいない。だね。
0031nobodyさん02/03/28 00:08ID:???
>28
どうやらオマエは説明もできないのに使ってるようだナ!
知ったかぶりがバレてしまって顔が青ざめて必死になって今調べている姿が
目に浮かぶな! 実にこっけいなピエロ君だなオマエは!
無力なオマエは周りの人たちから陰であざ笑われていることさえも気づかずに
一生を過ごしていく、そんなちっぽけな存在のまま残り少ない人生をひっそりと
過ごしていかなければならないオマエの存在価値は小さ過ぎてどうでもいいことだ。
ただ、いまおれに相手してもらえたことだけでもありがたく思って寝ろ!
0032nobodyさん02/03/28 00:10ID:???
>>31
>>29-30を理解してからほざけ。な。
0033nobodyさん02/03/28 00:13ID:???
>>32
馬鹿相手に無茶言うなよw
0034nobodyさん02/03/28 00:25ID:???
プロトタイプ宣言をしたサブルーチンで再帰させる場合には&をつけないとだめですか?

sub foo ($) {
    $_[0] == 0 or &foo($_[0] - 1);
    print $_[0];
}

foo 10;

sub bar ($) {
    $_[0] == 0 or bar $_[0] - 1; # error
    print $_[0];
}

bar 10;
0035nobodyさん02/03/28 00:30ID:???
>>34 >>25のようにかける。
sub bar($);
sub bar ($) {
$_[0] == 0 or bar $_[0] - 1;
print $_[0];
}
0036nobodyさん02/03/28 00:34ID:???
>35
あ、なるほど。勉強になります。
0037nobodyさん02/03/28 05:37ID:Zku7n2yk
質問があります。
Perlのスクリプトって、いったん全部をコンパイルしてから処理をするのでしょうか?
それとも、そのルーチンで必要な部分だけピックアップしてコンパイルするのでしょうか?

なんでこんな質問をするかといいますと、

if ($hoge) { require "hoge.pl"; &hoge(); }
といったソース書いたとします。
$hogeがtrueにならなかったときには、hoge.plの中にエラーがあっても、
警告されないような気がするんです。

だとするのなら、ケースによって全く異なる処理になるようなルーチンは、別のファイルで
作成した方が、スクリプト自体が小さくなり、より高速に処理が終了するのかな?
という風に想像しているのですが。

「むしろrequireで呼び出すファイル分ディスクアクセスが発生したりいろいろで、
 その場合は遅くなる」
という風な想像もあったりするのですが、その辺みなさんはどうお考えなのか、
ぜひお教え下さい。
0038nobodyさん02/03/28 08:53ID:???
>>37
man SelfLoaderが参考になると思う。
0039ノバ02/03/28 15:03ID:B1izX7ck
「data」というフォルダに入っている画像を一覧表示したいんですが
どうすればいいのでしょうか??

フォルダに格納されている画像が6つの時は
★★★
★★★
画像が8つの時は
★★★★
★★★★
このように表示したいです。
0040nobodyさん02/03/28 15:11ID:???
>>39
してよ。
0041nobodyさん02/03/28 15:12ID:???
>>39
その★は、画像のサムネイルって意味?それとも
<a href=hoge.jpg>★</a>
っていみ?
0042ノバ02/03/28 15:16ID:B1izX7ck
>>41
★はサムネイルじゃなくて、生画像です。
0043nobodyさん02/03/28 15:38ID:???
(open|read|close)dir とか
glob('path/to/images/*.*')とか
`ls path/to/images` とか。
0044nobodyさん02/03/28 17:09ID:???
>>39
2段にしたいんだよね
だったらファイル数2で割って、そこで改行すれば良い
って俺は3ヶ月ぶりに触ってるからアホ丸出しなんだけど (笑

0045nobodyさん02/03/28 17:14ID:???
えーと、コード書けない(笑  けどこんな感じかなあ・・・

sub openDir()
 {
   #ディレクトリを開けてファイルを数えて2で割って$linefeedをフラグにする 
   &dispImage($dir,$file,$linefeed);      
   # $dirディレクトリのパス
   # $ファイル名
   # 改行表示用のフラグ
 }

こんな感じで行けると思う  (遅いかな
dispImageを頑張って書いてちょ
0046nobodyさん02/03/28 17:16ID:???
ああ、変になった

$dir ディレクトリのパス
$file ファイル名
$linefeed 改行表示用のフラグ

#名無しさん@お腹いっぱい じゃ無くなってる!
0047nobodyさん02/03/28 18:00ID:???
「**というディレクトリの中に**というファイルがあれば」
という意味のif文を教えてください。
0048nobodyさん02/03/28 18:07ID:???
>>47
if(-e "**/**")
0049nobodyさん02/03/28 18:21ID:???
>>48
サンクス!
0050nobodyさん02/03/28 19:01ID:ZEbZLPiw
4 名前:名無しさん@お腹いっぱい。 投稿日:2001/04/24(火) 13:25
>2
私は在日韓国人ですが、日本生命側が怒る気持ちも理解できます。
私も西村氏の掲示板運営に抗議するため、敢えてここで西村氏を誹謗中傷し、
「文句があれば訴状を送って来い」
と、連絡先をメールで伝えましたが、訴状は届きませんで、代わりに
イタズラ電話が毎日かかってくるようになりました。
本当に陰湿で卑劣な男です。

21 名前:名無しさん@お腹いっぱい。 投稿日:2001/04/27(金) 22:01
ひろゆきの彼女へ

今回の件、知ってるだろ?
悪い事はいわない。
ひろゆきとは別れたほうがいいぞ。
こんなイタ電しかできない男と一緒にいてどうする。
イタ電でパクられるなんてのは、大抵は女だぞ。
ひろゆきの脳は女性ホルモンが支配している。
女と女がくっついてたってしょうがないだろ?

24 名前:名無しさん@お腹いっぱい。 投稿日:2001/04/27(金) 22:26
いたずら電話とはひろゆきらしいな
ひろゆきの陰険さはメルマガ読んでればわかるし、驚きもしないが
それよりも自分への中傷だけには異常に反応するところが愉快だな
0051nobodyさん02/03/28 21:23ID:???
>50
チョン公ウゼえよ
0052nobodyさん02/03/28 23:17ID:Pnsb/wgV
IO::Scalar を使わずに標準出力を変数に貯える方法はないでしょうか?
いちいちファイルを作っていたら大変なので困ってます
0053nobodyさん02/03/28 23:23ID:???
>>52

sub printx
{
my($data) = @_;
push(@buffer,$data);
print $data;
}
0054nobodyさん02/03/28 23:28ID:???
>>52
IO::Scalarのどこが気に入らないかはっきりしないと助言のしようがない。
塚、変数に入れて、その後どうしたい?
00555202/03/28 23:30ID:???
>53
うにゅ? STDOUTに出力される奴を変数に送りたいんです

my $stdout;
tie *STDOUT, 'IO::Scalar', \$stdout;

こんな感じです。ActivePerl だと IO::Scalar がなくて…
00565202/03/28 23:37ID:???
>54
ActivePerlの標準インストールベースで動かないといけないので
困ってます
再帰処理で標準出力に吐いているデータを加工するためにバッファ
に貯め込みたいんですが、再帰部分に手を入れたくないんですよ
0057nobodyさん02/03/28 23:43ID:7pPJ3EHV
@a = (1, 2, 3, 4, 5);
@b = (5, 4, 3, 2, 1);
@c = reverse @b;

if ( @a == @c ) {
print "equal\n";
} else {
print "not equal\n";
}

if ( @a == (reverse @b)) {
print "equal\n";
} else {
print "not equal\n";
}

の実行結果が

equal
not equal

になるのはなぜですか?
0058nobodyさん02/03/28 23:58ID:???
>>55
IO::Scslarハックして、標準インストールでも動くようにする。
0059nobodyさん02/03/29 00:01ID:???
ppmでIO-stringyをインストールする事すら出来ないのか。
0060nobodyさん02/03/29 00:03ID:???
>>56
1 ppmでインストールさせる。
1.5 IO::Scalarは一緒に配る。
2 perltie見ながらFILEHANDLEにtie出来るクラス作る。
3 再帰部分に手を入れる。
0061nobodyさん02/03/29 00:14ID:???
パッケージが限られるのならオーバーライドするって手も無くはないな。
00625202/03/29 00:17ID:???
>58-61
うーん、やっぱそうですか
相手が素人さんなのでインストールさせられないんです
中見てみます(ショボーン
・・・作るか
0063nobodyさん02/03/29 00:41ID:???
>>57
実際に評価されているのはスカラーだよ.

my @a = (1, 2, 3, 4, 5);
my @b = (5, 4, 3, 2, 1);
my @c = reverse @b;

my $a = @a;
my $b = @b;
my $c1 = @c;
my $c2 = reverse @b;

print join "\n", $a, $b, $c1, $c2;
00645702/03/29 01:22ID:???
>>63
ああ、そうなんですか。
じゃあ、
@a == reverse @b
の部分でリストコンテキストでreverse @bを評価するってのは
できないということですか?
無理やりスカラーにするintってのがあるかと思いますが
その逆とか・・。
0065始めて約一ヶ月02/03/29 01:44ID:XyE2iK+m
for($i=1;$i<=$5;$i++){
<input type=text name=$i size=10 value=$value$i>
}
この「value」の所の書き方がわかんないです。
教えてくんさい。
0066nobodyさん02/03/29 01:47ID:???
57のコード
equal
not equal
にはならねぇだよ?
0067nobodyさん02/03/29 02:10ID:???
for($i=1;$i<=$5;$i++){
print "<input type=text name=$i size=10 value=$value$i>";
}
こういう意味か?
00685202/03/29 02:16ID:???
結局、IO::Scalarを送って解決しました
うう、ヘタレじゃぁ
0069始めて約一ヶ月02/03/29 02:27ID:XyE2iK+m
>67
ごめんなさい書き方が悪かったっす、
$value = tsukue;
for($i=1;$i<=$5;$i++){
print "<input type=text name=$i size=10 value=$value$i>";}
のなかで「$value$i」を使った時に「$value$i」が「tsukue1」と認識されないで
「tsukue」と「1」に認識されちゃうんです。
なにか良い書き方はありますか?
0070nobodyさん02/03/29 02:54ID:???
>>69
どういう出力結果を得たいのか、例を実際書いてくれ。
0071nobodyさん02/03/29 03:38ID:???
>64
できないと思う.そもそも==でリストコンテキストはあり得ないんじゃないかと.
とりあえずperlfaq4にも書いてあるけど,配列の比較は面倒な方法を取らないとだめだよ.
あと,無理やりスカラーにするのはscalar.intは整数化.

my @a = qw(1 2 3 4 5);
my @b = qw(5 4 3 2 1);

sub arycmp (\@@) {
    my ($a, @b) = @_;
    @$a == @b or return;
    my $n = @b;
    $a->[$n] eq $b[$n] or return while $n--;
    return 1;
}

print (arycmp(@a, reverse @b) ? "equal\n" : "not equal\n");
0072始めて約一ヶ月02/03/29 04:20ID:XyE2iK+m
>70
ごめんなさいさらに書き方が悪かったっす、
$value1 = いちばん;
$value2 = にばん;
$value3 = さんばん;
$value4 = よんばん;
$value5 = ごばん;
print "<form action=XXX.cgi>";
for($i=1;$i<=$5;$i++){
print "項目$i<input type=text name=$i size=10 value=$value$i>";}
print "<input type=submit value=更新>";
のなかの「$value$i」を「$value1」〜「$value5」と認識させて、
フォームの「項目1〜5」のテキストスペースにそれぞれ
「いちばん、にばん、さんばん、よんばん、ごばん」と表示させたいのです。
すいません説明の仕方が下手で。
よろしくお願いします。
0073自動ツッコミプログラムV0.0102/03/29 04:29ID:???
>>72
配列使えば?
0074M02/03/29 06:31ID:xslHK9Si
リンク先をフォルダに指定して,そのフォルダ内の特定のファイルを開く
ようにするには,ファイル名を何にすればよいのでしょうか。
0075nobodyさん02/03/29 07:49ID:???
>>74
読めば読むほど味わいの増す、素晴らしい質問だと思います。
0076nobodyさん02/03/29 07:53ID:???
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。

1と3が無いと誰も答えられないよ、良い回答は良い質問から。
一緒に勉強しましょう。
0077nobodyさん02/03/29 09:37ID:???
$value1 = いちばん;
$value2 = にばん;
$value3 = さんばん;
$value4 = よんばん;
$value5 = ごばん;
print "<form action=XXX.cgi>";
for($i=1;$i<=$5;$i++){

cgiに書かれている言語なんていうのですか?教えてください
0078nobodyさん02/03/29 09:38ID:???
スプリクトとCGIと意味が違うのですか?
0079nobodyさん02/03/29 09:46ID:???
78は神!
0080nobodyさん02/03/29 09:50ID:???
>72
${"value$i"}
これでいいか?
わかったら帰って宿題やれ。
>73の言うように配列使った方が利口だと思うけどな。
0081nobodyさん02/03/29 10:29ID:???
>>76はここで、質問するレベルに達していないと思われ。
本読む、初心者向けのサイト見るなどして、レベルアップしてから来い。
ここは一から手取り足取り教えてくれる無料教室じゃないって事だ。
00828102/03/29 10:31ID:???
誤爆スマソ >>77だ
0083nobodyさん02/03/29 10:42ID:???
>>72
$value1 = いちばん;
↑ これは ↓ こうしてみる。
$value1 = 'いちばん';

for($i=1;$i<=$5;$i++){
↑ これは ↓ こうしてみる。
for($i=1;$i<=5;$i++){

print "項目$i<input type=text name=$i size=10 value=$value$i>";
↑ これは ↓ こうしてみる。
print qq|項目$i<input type="text" name="$i" size="10" value="|, ${'value'.$i}, '">';

たぶんね。
0084nobodyさん02/03/29 13:51ID:GD6wTrbP
いっぺんに複数行コメントするとき
どうすんだ?
Cの
/* */
みたいのないの?
0085nobodyさん02/03/29 13:58ID:???
>84
全ての行に#を付けて書く。
0086nobodyさん02/03/29 13:58ID:???
>>84
こんなのもある。

=foo
いっぺんに複数行コメントするとき
どうすんだ?
Cの
/* */
みたいのないの?
=cut

=英字
から
=cut
まで
0087nobodyさん02/03/29 13:59ID:???
>84
要するに、ない。
どうしてもと言うのなら、使わない変数にヒアドキュメント代入する手もあるけど、メモリの無駄だな。
008885=8702/03/29 14:00ID:???
>86
知らなかった。
スマソ。
00898602/03/29 14:04ID:???
>>85=87
いや、でもこれは厳密にはコメントじゃないから。

#をつかうとコンパイル時に完全に無視するけど
=は違う、みたいな話があったようななかったような…
0090nobodyさん02/03/29 14:13ID:GD6wTrbP
ありがと、勉強なたぁ〜
0091nobodyさん02/03/29 16:22ID:???
$aaa->{'x'}->{'y'}='z' ;
これを
foreach( %aaa )
{
print "$_" ;
}
みたいなかんじで、次々に引っ張ってきたいんですけど、
可能ですか?、出来れば簡単な例など教えて下さい。
0092nobodyさん02/03/29 16:39ID:???
foreach my $p (keys %{$aaa}){
foreach my $q (keys %{ $aaa->{$p} }){
print "\$aaa->{$p}->{$q} = " . $aaa->{$p}->{$q} ."\n";
}
}
これでいい?
00939102/03/29 16:50ID:???
>>92
すごく、ありがとう〜〜〜
惚れました。
0094nobodyさん02/03/29 18:22ID:???
Data::Dumper使えよ…。
0095nobodyさん02/03/30 12:03ID:1Ui3rht3
2次元配列の初期化するのに、例えば三列二行の二次元配列を
全て0にするには、
$var = 0 ;
@array = (
[ $var , $var , $var ] ,
[ $var , $var , $var ]
) ;
は分かるのですが、列数と行数を与えて初期化
するのはどのようにしたらいいのでしょうか?
$retsu = 5 ;
$gyou = 3 ;
$var = 0 ;
・・・ここから行き詰まってます。
ヒントでもお教え下さいませ。
0096nobodyさん02/03/30 13:19ID:???
いまいちなにしたいのかわからんけど。こういうことがしたいの?
$retsu = 5;
$gyou = 3;
$var = 0;

foreach $row (0 .. $gyou - 1) {
    foreach $col (0 .. $retsu - 1) {
        $array[$row][$col] = $var;
    }
}


0にするだけなら@array = ();でもいい気がするけど。
0097nobodyさん02/04/01 04:59ID:???
アプローダで*.jpgをそのままアプするんじゃなくて
アンカタグでリンクにするのってどうすれば良いですか?
0098nobodyさん02/04/01 06:49ID:???
>97
画像を表示する部分のタグ変更。
0099sato02/04/01 12:58ID:???
CGI内にフォームを書いているんですが、
送信ボタンを押した時に、あるサブルーチンへ飛ばしたい場合は
<form action=>の部分にどのように記述すればいいんでしょうか?
0100nobodyさん02/04/01 13:07ID:???
スクリプト内ではどのようにサブルーチンに飛ばしてますか?
条件があるなら条件を指定して呼び出せば良い。
0101初心者02/04/01 13:07ID:???
100get

>>99
<input type="hidden" name="mode" value="submit">
あとは、$modeとかに値を入れてsubmitなら
フォーム送信された場合のサブルーチンへ飛ばす。
とか。。

でいいんですよね?
0102初心者02/04/01 13:08ID:???
あぅ。100が。。。
0103100!02/04/01 13:10ID:???
やーいやーい
0104sato02/04/01 13:18ID:???
>>101
フォームが送信された場合のサブルーチン、
ってどうやるんですか??
0105nobodyさん02/04/01 13:26ID:???
satoのレベルに合わせて解説できる人はすごいと思う。
みんな頑張ってsatoの難題に挑戦してくれ!
0106sato02/04/01 13:27ID:???
>>105
お願いします。
0107nobodyさん02/04/01 13:36ID:???
で、satoはどんなことをやりたいの?
0108nobodyさん02/04/01 13:45ID:2cwLH473
余所のサイトのHTMLをperlで読み込むにはどうやれば良いのですか?
0109sato02/04/01 13:48ID:???
Aというサブルーチンの処理をさせたいんすけど
それをボタンが押された時に行いたいんです

すなわちtest.cgiの中に

   [追加] [削除]

ボタンがこのようにあるとして、
[追加]を押した時には、サブルーチン sub plus へ。
[削除]を押した時には サブルーチン sub delete へ。

この時<form action=test.cgi method=post>をCGI内に埋め込むと
複数ボタンと複数サブルーチンをどのように処理するのか・・
0110nobodyさん02/04/01 13:55ID:???
サブルーチンという言葉を知ってるくらいだからプログラム経験者だろう。
条件分岐はわかるね。CGI内では条件分岐して処理を場合わけする。
htmlのボタンごとにcgiの処理を分岐するには呼び出す時点で条件を指定する。
具体的には環境変数というのを使って引数を持たせる。>>101の方法。
mode=plusという引数を持ってたら追加モードへ..ってやる。
あとは「環境変数」で検索してくれ。
■ このスレッドは過去ログ倉庫に格納されています