1 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 12:22:12 ] "The duct tape of the Internet" こと、Perlについての質問箱です。 "There's more than one way to do it" ということで、 Perlの奥深さについて皆で語り合い、追求してまいりましょう。 CGIについての質問は板違いです。WEBプログラミング板でどうぞ。 CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。 ( WEBプログラミング板 pc11.2ch.net/php/ ) CGIの質問は答えが Perlと全然関係ない話に帰着する場合が 多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。 このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。 スレ違いの質問にはスルーか、速やかな誘導をお願いします。 www.perl.org/get.html ● 2008/09/21 現在の最新版(安定版): 5.10.0 ● 2008/09/21 現在の開発版: 5.9.5 ▼ 前スレ Perlについての質問箱 37箱目 pc11.2ch.net/test/read.cgi/tech/1218449440/ リンク集は>>2-3 Perl 日本語処理の基礎の基礎 >>4 過去スレは>>5-6 あたり
321 名前:デフォルトの名無しさん [2008/11/02(日) 23:47:14 ] perlで指定したURLのファイルをダウンロードするにはどうすればいいんですか? system関数を使わないで実現したいです
322 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 23:57:19 ] LWP::UserAgent
323 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 00:27:35 ] >>321 URI::Fetch
324 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 02:02:59 ] >>306 なぜエラーにならなければならないの?
325 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 02:04:53 ] >>313 他言語同様、継承はなるべく使わない方向で。 他言語での経験があるなら無問題。
326 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 02:07:45 ] >>319 CGIがPerlで書かれたものとは限らない ていうかCGIとPerlじゃ比べる次元が違う とりあえずページめくれよ
327 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 02:08:47 ] >>321 CPAN LWP::Simple検索してサンプル試してみ
328 名前:デフォルトの名無しさん [2008/11/03(月) 23:12:57 ] ActivePerl 5.8.8を使ってます。PPMはGUIになったやつです。 PPMでリポジトリを追加したら、フリーズして、そのまま動かなくなりました。 追加したリポジトリは ppm.tcool.org/archives/ です。 何度起動しても、起動時にフリーズします。 多分追加したリポジトリを読みに行ってる時に固まってるんだと思います。 どうやったらこのリポジトリを削除できるでしょうか。 C:\Perlの中のどこかにリポジトリのURLが保存されてて、それを消したら良いんじゃないかと考えたんですが フォルダ内をGREPしてもURLは見つかりませんでした・・・。
329 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 00:38:30 ] C:\Documents and Settings\(user)\Local Settings\Application Data\ActiveState\ActivePerl\(build version)\ 以下の、ppm〜なんちゃら.dbファイルを消す。 ってか、DOS窓からコマンドライン用のppmでやればいい。C:\Perl\htmlにマニュアルもあることだし。
330 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 01:36:33 ] >>392 ありがとうございます。 言われて気づいてみたら、ppm-shellってのがあるんですね。 最近のActivePerlはGUI版PPMしか無いのかと思ってました。
331 名前:デフォルトの名無しさん [2008/11/07(金) 18:37:21 ] ActivePerlをインストールし、perlを採用したプログラミング入門書を見ながらやっているのですが、 ファイルを開くと一応コマンドプロンプトが起動し、実行されるのですが一瞬で消えてしまいます。 最初は、 print"やあ世界!\n;" exit; としか書いてなくて、一瞬で終わっちゃうからだなと思い(一瞬ですがやあ世界という表示はされてました)、 入門書の例文にあった print"名前を入力してください。\n"; $onamae=<STDIN>; chop $onamae; print"\n"; print"あなたのお名前は$onamaeさんです。\n; print"$onamaeさんこんにちは。"; exit; という内容のファイルを作ってみました。 しかし、名前を打ち込むスキもなく終了してしまいます。 エスパーにしか答えようがない質問かもしれませんが宜しくお願いします。 OSはXPで、入門書は2000年頃の古いものです。
332 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 18:48:53 ] >>331 まさかファイルをエクスプローラ上でクリックして動かしてる? それじゃダメだ まずコマンドプロンプトを起動してそこで C:\> perl [ ファイル名 ] [ RETURN ] で実行しないと
333 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 18:55:09 ] >>331 定番の入門書リャマ本 ttp://www.oreilly.co.jp/books/4873111269/
334 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 18:55:48 ] >>332 ありがとうございます。 さきほどwww.site-cooler.com/kwl/perl/ を読んでやってみたら色々できました。 さっきの二番目の例文はなにかミスってるみたいでエラーがなんとかって英文で返されてしまいましたが。 なんだこの本・・・大事なことが書いてない。
335 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 18:57:34 ] >>333 ありがとうございます。 また何かつっかえたら買い換えますw
336 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 19:11:31 ] 今は21世紀だぜ?なんでまた20世紀の古い本を・・・
337 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 21:14:29 ] >>336 じゃあ、2008年6月発売のを oreilly.com/catalog/9780596520106/
338 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 01:45:17 ] >>331 >print"あなたのお名前は$onamaeさんです。\n; 文字列を閉じてない。「\n」の後に「"」が必要。 ところで、文字列のクォートにはqq{}もおすすめ。
339 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 17:11:08 ] 質問です。 my %hash = @arr; $hash{'SendTE'} = 0; @arr = %hash; ハッシュのように扱われてる特殊な配列に 重複しないキーを与えるには上記のように 書いていました。 これを一発で書くにはどう書けばいいでしょうか? (配列をハッシュのように扱いたい。)
340 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 00:51:07 ] for(my i=0; i<@arr;i+=2){ $arr[$i+1] = 0 if $arr[$i] eq 'SendTE' }
341 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 08:02:11 ] >>339 普通に my %hash = ( @arr, 'SendTE' => 0 ) ; じゃダメなのか?サブルーチンとかでの常套手段だけど? sub hoge { my %hash= ( foo => 'bar', @_ ) ; return $hash{foo} ; } printf "%s\n", hoge( foo => 'foo' ) ;
342 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 08:37:45 ] ハッシュにリストを代入するときキーに相当するところに同じ値が複数あると どれが優先されるかは決まってたっけ? %h = (a => 1, a=> 2); print $h{a} 試せば今の処理系でどっちかはわかるけど、仕様としてマニュアル等に明記 されているかどうかを知りたい。
343 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 10:27:31 ] マニュアル代読サービスに頼めよ
344 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 10:46:01 ] >>342 programing perl のhashの説明、冒頭にそのまんまの記載があるじゃん。 my %h = ( a => 1, a=> 2 ) ; は、以下のコードと同じ効果がある。 my %h = () ; ${a} = 1; ${a} = 2; 同じキーだと通用しないとでも思うのはあなたの勝手。
345 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 16:54:02 ] >>342 上書きされるってことになるんだから()内がどっち向きに処理されるか考えりゃ良い
346 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 18:03:31 ] いや、少なくとも考えて分かる類のものじゃないでしょ。
347 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 18:34:34 ] @arrには、$arr[0] = 0 しか実行されないような気がするのですが、何故以下のような結果に なるのでしょうか? use Data::Dumper; $i = 0; $arr[$i] = $i++; print Dumper \@arr; #=> [undef, 0]
348 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 19:20:11 ] むかしPerlクイズで結城さんも混乱してたな。 俺のイメージでは、 = (代入するよー) $i (右辺の$iは0だなー) ++($iをインクリメントするよー) $arr[$i] ($arr[$i]に0代入するんだなー。$iはなんだろなー。1だなー) ってことで、$arr[1]が0になる。
349 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 19:37:55 ] 俺なんかの説明じゃあれなので、Perlクイズの該当箇所のバックナンバー ttp://archive.mag2.com/0000015670/19990811001000000.html?start=160
350 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 19:45:50 ] >>348-349 d
351 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 20:03:53 ] なるほどねぇ。クイズとしては面白けど、 そんなクソなコードは間違っても書かないから、どうでもいい。 まったく何の役にも立たないし、他の言語への応用も利かないムダ知識やん。
352 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 20:31:38 ] >>344 perldataあたりざっと見てそれらしい記述を見つけられなかったのですが、 ラクダに書いてあるんなら仕様だと思っていいのかな。ありがとう。
353 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 20:37:06 ] そもそも「ハッシュ」の意味が分かってないだろ? 分かってたらそんな疑問は持たないはず。
354 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 20:38:34 ] >>351 クイズのリンク先を読むと仕様ではっきり決まってないってあたりまで 説明されてるのでそういうコードは書いちゃいけないというところまで 理解すれば無駄ではないと思うよ。
355 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 20:42:51 ] 更に考えると、そもそも重複したキーを配列に持つときにどれを優先したいか、って話だな。 だから実際には問題になることがない問題なのだ。
356 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 20:46:12 ] >>353 リストを連想配列に変換するときにどれを優先するかなんて必ずしも自明じゃないだろ。 ごく自然な仕様として、 * 前を優先する * 優先順位は決めない の二つがある。
357 名前:デフォルトの名無しさん [2008/11/09(日) 21:07:04 ] 自明だよ。 * 最後を優先する に決まってるだろ。 右辺側は順序を保持するリストなんだから。 これはLISPでも、Cのカンマ演算子でも同じ、「最終評価値」の概念。 お前さんは以下のような仕様だと嬉しいにか? $a = 1; $a = 2; # $aの値は 1 のまま
358 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 21:21:07 ] バッドノウハウ地獄
359 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 21:23:45 ] だがperlは常に信用できない。気持ち的に。
360 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 21:33:28 ] そして今日もPythonやRubyの入門サイトをチラ見するけど本腰を入れることはない……
361 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 21:36:45 ] >>357 後者はそのとおりだが。前者は全く自明じゃない。 変な思い込みをする癖は直した方がいいよ。
362 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 00:13:56 ] >>361 ( )の処理が右から左だと思う根拠は?
363 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 00:20:23 ] 日本語が通じないらしい
364 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 00:36:38 ] 左から右だという根拠を私は残念ながら知らないので勝手にそう思い込むのは危険 という主張です。根拠があるのなら示してもらえばそうでしたかで済みます。 もちろん右から左だという根拠も同じぐらいありません。
365 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 01:15:32 ] つーか %hash = @rray ってときに、何か例外があるんじゃないかという畏れ。
366 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 01:22:58 ] 本来ならリストから連想配列への変換関数を使わないといけないところを、 ただの代入文で済ませてしまえる言語仕様が、諸悪の根源な気がする。
367 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 01:55:02 ] 諸悪の根源は、 「Perlはもうそろそろ終わり。Perlの経験を踏まえたあたらしいスクリプト言語へ シフトしましょう……って、え? CGIってなに? あ、使うな!」 となってしまったこと。
368 名前:デフォルトの名無しさん [2008/11/10(月) 02:02:16 ] 正論側の根拠なんぞ簡単だろ。ほれ。 ---- %a = (1,2,3,4,1,'a',2,'b',3,'c',4,'d'); print %a; ---- 結果→4d1a3c2b # ハッシュだから順不同。 これ即ち (1=>'a' , 2=>'b' , 3=>'c' , 4=>'d') 馬鹿側が根拠を示すのも簡単だ。上記以外の結果を示せば良い。 馬鹿には無理だろうがな。
369 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 03:06:03 ] いや、言語仕様と実装の話だよ。
370 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 06:31:49 ] >>368 自尊心だけは十分育ってるようだから、次は知能と知識だね。 頑張って!
371 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 08:55:32 BE:141505128-PLT(54321)] ネタだろ…
372 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 10:20:20 ] まぁそういうことにしたいよな。
373 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 12:47:06 ] __END__リテラルを含むfoo.plからexecを使うと execしたプロセスが全部終了するまで foo.plはロックされるものなのだろうか
374 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 13:34:04 ] >>373 関係ないと思うよ
375 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 17:10:32 ] >>349 現在の結城さんだったら把握してそうだけど。 >私が調べた限りでは、代入演算子の右と左でどちらを先に評価するかは、 >Perlの本には言及されていませんでした。 perltrap にばっちり記載されてる。 右辺を先に評価。 # perl の 5.005_02/ 1998-Aug-08 でも。 LHS vs. RHS of any assignment operator LHS vs. RHS of any assignment operator. LHS is evaluated first in perl4, second in perl5; this can affect the relationship between side-effects in sub-expressions. @arr = ( 'left', 'right' ); $a{shift @arr} = shift @arr; print join( ' ', keys %a ); # perl4 prints: left # perl5 prints: right
376 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 19:20:54 ] >>374 __END__リテラルって意味わからんので、__DATA__セクションのことなんじゃないだろうか? ただ、プロセス寿命の話なら、ちゃんとした仕様は たぶんなくて、実装次第+環境次第だろと思う。 だいたい、UNIXとWindowsでかなり違うよな。
377 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 19:31:32 ] >>376 ごめんリテラルじゃないね、セクションかトークンと言うべきだった。 うちの環境はWindows XP SP3 + ActivePerl v5.8.8 built for MSWin32-x86-multi-thread Binary build 817 [257965] Built Mar 20 2006 17:54:25 らしい。 execしたプログラムが走ってる状態のままスクリプトを上書き修正しようとしたら 拒否されて不便だったんだけど、__END__削ったら上書きできた。 なにゆえなのか、よくわからない…
378 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 20:46:37 ] >>375 初心者ですが、これは襲撃でした。 自然な思考法なら、perl4の結果を期待するのではないでしょうか? (それは、初心者だけか)
379 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 20:47:15 ] >>378 襲撃でなく、衝撃です。
380 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 21:09:12 BE:212256083-PLT(54321)] 襲撃wwww
381 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 21:35:40 ] 常識で判断しないのがperlプログラマーだ。 perlの全てを知ってるのが訓練されたperlプログラマーだ。 ほんとperlは地獄だぜ。HAHAHAHAHA
382 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 22:06:11 ] perl -le '$i=0;$arr[$i++]=$i;print $arr[0]' これは1なんだな。わけわかんね。
383 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 01:36:13 ] perl = CGI CGI = perl
384 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 07:33:41 ] >>382 モチツケ
385 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 07:40:28 ] 初心者ですが、どこかのスレでperlの進化型が ruby,pythonと言う説を見かけました。 これは本当と言えますか?
386 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 07:59:06 ] もしそうなら引っ越す
387 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 08:46:36 ] >>385 言える
388 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 09:10:17 ] >>385 きれいなPerl=Ruby Perlを捨てて0からシンプルかつ強力に作ったもの=Python
389 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 09:24:08 ] >>385 解釈による。 オレ的には認めない。 「進化」ではないだろ。
390 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 09:31:33 ] >>377 >__END__削ったら上書きできた。 もう一度落ち着いて、__END__セクションを追加してから 動作を確認するべき。
391 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 10:12:12 ] つまり、 サルが進化したものが人間。 perl が進化したものがruby/python そゆこと?
392 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 10:16:25 ] >>391 > サルが進化したものが人間。 > perl が進化したものがruby/python スクリプト言語/インタプリタ言語の後発のものだということだから、 「perlが進化した」というように、単一の系列に押し込めるのは明らかな間違いだろう。
393 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 10:19:04 ] >>386-389 レス有難うございます。 仮に、この三つを全然知らない場合、どれを会得しようと思いますか?
394 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 10:52:56 ] >>393 初心者はPythonがお勧め。
395 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 11:12:48 ] >>393 Python
396 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 11:42:20 ] % perl -le '$i=0;$arr[$i++]=$i++;print $arr[1]' 0 ますますわけわかめ
397 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 12:21:43 ] >>396 モチツケ
398 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 12:56:02 ] >>396 それはええやろw
399 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 13:00:42 ] >>393 Perl。 念のために言っとくが、ここはPerlスレだからな!w
400 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 13:55:08 ] いまからPerlをやるって人って自虐者?
401 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 13:58:02 ] >>382 これ左辺から評価してる?
402 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 14:39:45 ] >>398 ちがうよ!全然ちがうよ! >>382 と>>396 を見比べるとすごく気持ちわるいんだよ!
403 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 15:21:21 ] >>402 $i=0; $arr[++$i]=++$i; print $arr[2]
404 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 15:49:19 ] 馬鹿すぎて死にたい。 演算子の優先順位 左結合 項 リスト演算子 (左方向に対して) 左結合 -> 非結合 ++ -- ずーっと下に 右結合 = += -= *= などの代入演算子
405 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 18:34:59 ] >>377 環境依存の可能性が高いので、Activeperl 5.8 + WinXP 限定の話として... perlは__END__(又は__DATA__)を見つけると、ソースファイルをcloseせずに処理を開始する。 そしてexecしたプロセスに開いたファイルが引き継がれる。 ただしperlは単にファイルをリードオープンしているだけであり、何もロックしていないので、 ファイルの中身を書き換える事は可能。 Winでは開かれたファイルのリネームや削除が失敗するので、それに引っかかっているのでは? >>382 ,396 perlの中では参照渡しだし、ポストインクリメント演算子は元の値を保持するための一時変数を作る。 配列用の代入処理部へは \配列,\要素番号,\値 が渡される 前者(382)では \@arr,\${古い$iの値(0)を保持している一時変数},\$i を渡すのに対して、 後者(396)だと \@arr,\${古い$iの値(1)を保持している一時変数},\${古い$iの値(0)を保持している一時変数} を渡すという違い。
406 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 18:55:14 ] 質問です。 Storableを使ってハッシュをバイナリデータに書き出す際、 上書きではなく追加書き込みで保存する方法はあるのでしょうか。 例 test.pl --- use strict; use Storable qw(nstore); %hash = ( "a" => '1', "b" => '2', ); nstore [%hash], "hash.dat"; ---- test.plを一度実行し、hash.dat生成
407 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 18:55:47 ] (続き) その後test.pl内の%hashを ---- %hash = ( "c" => '3', "d" => '4', ); ---- に書き換えて保存、再度test.plを実行 …するとhash.dat内には c=>3 と d=>4 のペアしか存在していません。 つまり上書き保存されていることになります。 自分は追加保存の形にしたいのですが、 何かいい案がありましたらご教授ください。 よろしくお願いします。
408 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 19:11:12 ] >>407 まず元のを読んでから要素を追加して書けばいいと思うよ
409 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 21:56:02 ] 質問です 外部プログラムを起動して、そのプログラムの実行中にperlから値を渡すといったことはできないでしょうか あるCのプログラムを実行しscanfで入力待ちになり、そこへ値を渡すといった感じなのですが
410 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 21:56:41 ] ソケット使えばできる。
411 名前:デフォルトの名無しさん [2008/11/12(水) 23:35:47 ] 大学の宿題誰かおながいします・・・ >>>>>>>>>>>>>>>>>>>>>>>>>>> 配列,2次元配列を用いて, santaku.pl を以下のようにグレードアップせよ. ○ 3択の問題を4題出題し,正解数を最後に表示. $mondai を @mondai にして配列化 @sentakuを 2次元配列化 $santaku[A][B]の形 $kotaeを @kotaeにして,配列化 これを santaku2.pl という名前で保存して動かす
412 名前:デフォルトの名無しさん [2008/11/12(水) 23:36:52 ] santaku.plっってのはこれです # santaku.pl # 問題 $mondai="東京ディズニーリゾートがあるのは次の内,どこか?"; # 選択肢 $sentaku[1]="東京県"; $sentaku[2]="千葉県"; $sentaku[3]="神奈川県"; # 答え $kotae=2; # $user=0; printf ("%s\n", $mondai); # 問題の表示 for ($i=1; $i<=3; $i++) { # 選択肢の表示 printf ("[%d] %s\n", $i, $sentaku[$i]); } printf ("答えを1〜3から選んでください "); $user=<>; if ($user==$kotae) { printf ("正解\n"); } else { printf ("不正解\n"); } exit; よろしくお願いします(;へ;)
413 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 23:47:42 ] どこまで考えて、どこが分からないの?
414 名前:デフォルトの名無しさん [2008/11/12(水) 23:55:39 ] 最初からわかりません・・・ 1つずつやったら面倒だから二次元配列にするというのはなんとなくわかるのですが どこから手をつけていいのか;;; forを2重でつかったりもするんでしょうか・・・頭が痛いです;
415 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 00:04:41 ] 0番使えよ……
416 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 00:16:04 ] $[=1;
417 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 00:29:28 ] 大学の教養でそういう講義があるのかな? とりあえず、問題と答えを4問分2次元配列にして、 正解数をカウントする変数をつくればできると思う
418 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 01:05:45 ] printf ……
419 名前:デフォルトの名無しさん [2008/11/13(木) 01:11:16 ] そうです、情報機器の操作っていう講義です どうですか??正解数をカウントする変数はさっぱりです>< # =================== データ部分 ========================== # 問題 $mondai[1]="東京ディズニーリゾートがあるのは次の内,どこか?"; $mondai[2]="東京大学があるのは次の内,どこか?"; $mondai[3]="横浜があるのは次の内,どこか?" ; # 選択肢 $sentaku[1]="東京県"; $sentaku[2]="千葉県"; $sentaku[3]="神奈川県"; # 答え $kotae[1]=2; $kotae[2]=1; $kotae[3]=3; # ========================================================= # # =================== 手続き部分 ========================== # $user=0; printf ("%s\n", $mondai); # 問題の表示 for ($i=1; $i<=3; $i++) { # 選択肢の表示 printf ("[%d] %s\n", $i, $sentaku[$i]); } printf ("答えを1〜3から選んでください "); $user=<>; if ($user==$kotae) { printf ("正解\n"); } else { printf ("不正解\n"); } exit;
420 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 01:36:31 ] 情報機器の操作とやら でperlなんだね どちらかというとアバウトな言語だと、教える方も大変だろうに。 rubyとかpythonの方がよさそうだが
421 名前:デフォルトの名無しさん [2008/11/13(木) 01:39:28 ] >rubyとかpython さっぱりです>< basic c javaなら講義中に名前を見ましたが。。 その教授はperlが使いやすいといっていたので、、よくわかりませんが どなたかよろしくお願いします;明日の朝提出なので><